Cola De Descargas (solucionado)


BrunoIV
Objetivo: 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
Objetivo: 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.

Perfil MP  
BrunoIV
Objetivo: 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
Objetivo: 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.

Perfil MP  
Objetivo: 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
BrunoIV
Objetivo: 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...


Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.406s (PHP: -78% SQL: 178%)
Consultas SQL: 46 - Debug off - GZIP Activado