|
Página 1 de 1
|
Cola De Descargas (solucionado)
Autor |
Mensaje |
BrunoIV
|
Cola De Descargas (solucionado)
Buenas, tengo un problema con lo que llamo una "cola de descargas".. Intentaré explicarme..
Tengo una matriz de string con enlaces (un numero variable de enlaces) y me gustaría que se descarguen (con wget) uno tras otro (no a la vez) hasta que se terminen... El problema es que no puedo porque si meto un bucle el programa se bloquea esperando el final del bucle..
Se que hay una aplicación donde se hace algo por el estilo (downloadergoear).. Pero no saco nada en claro.. :S
Aquí el fragmento del proyecto: http://www.megaupload.com/?d=JD3HVJRA
última edición por BrunoIV el Lunes, 25 Julio 2011, 08:40; editado 1 vez
|
#1 Sabado, 23 Julio 2011, 21:39 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Cola De Descargas
No he ido al enlace pero si lo que tu quieres es bajarte una lista de enlaces con wget ¿porque no usas wget?
Extraído de wikipedia * Recoger sólo los enlaces específicos listados línea a línea en
* el archivo local "my_movies.txt"
* Usar una espera arbitraria de 0 a 33 segundos entre archivos.
* Cuando hay un fracaso, reintente para hasta 22 veces con 48 segundos
* entre cada reintento. No envíe ningún agente de usuario en absoluto. Ignore exclusiones de robot.
* Colocar todos los archivos capturados en el directorio "/movies"
* y recoger los resultados de acceso al archivo local "my_movies.log"
* Bueno sólo para descargar imágenes específicas conocidas u otros archivos.
wget -t 22 --waitretry=48 --wait=33 --random-wait --user-agent=""
-e robots=off -o ./my_movies.log -P/movies -i ./my_movies.txt
Enlace
No necesitas nada salvo facilitarle a wget los datos oportunos y él lo hace todo.
|
#2 Sabado, 23 Julio 2011, 23:28 |
|
|
BrunoIV
|
Re: Cola De Descargas
El wget ya lo estoy usando con SHELL(), y probé eso mismo pero desde concola de comandos, leer desde un fichero unos enlaces...
Esa solución no me sirve (si hubieras mirado el comprimido...) porque efectivamente puedo leer los enlaces desde un fichero pero wget no se da cuenta de los cambios en el fichero...
fichero.txt que contiene:
http://imagen.png
Ejecutas
wget -i fichero.txt
Mientras se descarga agregas a fichero.txt:
http://imagen.gif
Solo descarga imagen.png :s
¿Alguna idea?
última edición por BrunoIV el Domingo, 24 Julio 2011, 10:20; editado 1 vez
|
#3 Domingo, 24 Julio 2011, 10:09 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Cola De Descargas
Osea que tu tquieres que mientras están descargando un archivo se le pueda dar la orden de que descargue otro detrás.
Pues para eso tienes que declarar una variable string[] y pensar bien a que nivel la declaras o bien utilizar un fichero.
Debe haber un método para llenar esa variable o fichero.
Debe haber otro método para hacer las descargas.
Ambos procesos deben ser concurrentes así que tienes que considerar a que nivel declarar esa variable o usar ese fichero. Lo que veo claro es que en vez de descargar una lista de ficheros con wget debes descargar solo uno y controlar cuando acabas si en la lista hay alguno mas. En ese caso descargas el siguiente pero solo el siguiente. La orden shell debe llear la claúsula wait para que no se haga en segundo plano o acabarás bajando varios ficheors a la vez, bueno que igual eso no es un problema.
|
#4 Domingo, 24 Julio 2011, 10:34 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Cola De Descargas
Lo que pasa es que tienes que definir el manejador (si se llama así?¿?¿ je) del proceso, para saber en que momento termina la descarga (con el evento _Kill).
He modificado tu código, he agregado un botón llamado "bDown" que dispara las descargas.
' gambas class file
PRIVATE enlaces AS NEW String[]
PUBLIC SUB Form_Open()
' enlaces.Add("ftp://ftp.rediris.es/sites/releases.ubuntu.com/releases//10.04/ubuntu-10.04-netbook-armel+imx51.img")
' enlaces.Add("ftp://ftp.rediris.es/sites/releases.ubuntu.com/releases//10.04/ubuntu-10.04-netbook-armel+imx51.img")
' enlaces.Add("ftp://ftp.rediris.es/sites/releases.ubuntu.com/releases//10.04/ubuntu-10.04-netbook-armel+imx51.img")
enlaces.Add("http://dl.dropbox.com/u/3701367/www/images/anarquia_peque.gif")
enlaces.Add("http://dl.dropbox.com/u/3701367/www/images/cargando.gif")
enlaces.Add("http://dl.dropbox.com/u/3701367/www/images/redstar.jpg")
listado.Columns.Count = 1
listado.Rows.Count = enlaces.Count
mostrarDatos()
END
PUBLIC SUB bAgregar_Click()
enlaces.Add(enlace.Text)
listado.Rows.Count = enlaces.Count
mostrarDatos()
END
PRIVATE FUNCTION mostrarDatos()
DIM i AS Integer = 0
FOR i = 0 TO enlaces.Length - 1 STEP 1
listado[i, 0].Text = enlaces[i]
NEXT
END
' PUBLIC SUB listado_DblClick()
' SHELL ("wget " & enlaces[listado.Row])
' END
PUBLIC SUB bDown_Click()
IF listado.Rows.Count THEN
bDown.Enabled = FALSE
EXEC ["wget", listado[0, 0].Text] FOR READ AS "downProc"
ENDIF
END
PUBLIC SUB downProc_Kill()
listado.Rows.Remove(0)
listado.Refresh()
IF listado.Rows.Count THEN
EXEC ["wget", listado[0, 0].Text] FOR READ AS "downProc"
ELSE
bDown.Enabled = TRUE
ENDIF
END
Creo que el anterior código cumple con lo que quieres.
Saludos!
EDITO:
Otra cosa, no veo la necesidad de vaciar los enlaces a un array y luego al gridView. Puedes hacerlo todo directo con el gridView.
última edición por razaAztk el Lunes, 25 Julio 2011, 05:42; editado 1 vez
|
#5 Lunes, 25 Julio 2011, 05:39 |
|
|
BrunoIV
|
Re: Cola De Descargas
Ohh.. Que grande eres... Estaba modificando el proyecto para hacer la chapuza del siglo pero parece que me libro de ello...
Gracias...
|
#6 Lunes, 25 Julio 2011, 08:40 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|