Ayuda Con Descarga Automatica

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Ayuda Con Descarga Automatica

Mensaje por nelson13 »

Hola, como andan la comunidad? Bueno soy medio novato en esto.
Hace un mez que empeze pequeña estacion de Radio y Retransmito todos los dias un programa que bajo diariamente de internet. asique se me ocurrio pensando en el potencial que tiene AutoIt que podria programar un script que se encargue de bajarmelo solo, el problema es el siguiente a mi me envian diariamente el link de la siguiente Forma :
http://www.mkradio.com.ar/MmboxOT1/MB120111.zip
bueno (http://www.mkradio.com.ar/MmboxOT1/) esto lo van cambiando semana a semana ya que es un programa que con mucho sacrificio pago (Todabia no tengo ningun auspiciante). asique esto deberia ir en un txt externo cosa de que lo pueda modificar facilmente.
y con respecto a la nomenclatura que es del formato MB(es una constante del nombre de programa Music Box)+año-mes-dia (hoy seria MB120111, mañana MB120112, etc) se deberia obtener automaticamente de la fecha de la pc.
osea tomaria http://www.mkradio.com.ar/MmboxOT1/ (del txt) + MB(nunca cambia) + 120111 (del reloj de la PC cosa de que todos los dias se actualize) y le agregaria a todo esto el .zip
y luego de todo esto lo copie al portapapeles, de ahi en mas ya se como seguir.
Alguien me puede orientar?, por que no tengo ni idea como comenzar Gracias y Saludos!. Nelson
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Ayuda Con Descarga Automatica

Mensaje por jamaro »

Hola y Bienvenido a este foro en el que seguro que se te echa una mano y descubres cosas importantes de Autoit.

Sólo tenía unos minutos, pero te pongo la parte que puedes utilizar para obtener la fecha de hoy en el formato que deseas:

Código: Seleccionar todo

#include <date.au3>
$a=stringregexp(_now(),"(.*)/(.*)/..(.*)",3)
$Fecha=$a[2]&$a[1]&$a[0]
msgbox(0,"Fecha de hoy",$Fecha)
Con las Expresiones Regulares puedes llegar al mismo resultado de muchas maneras, y seguro que alguien del foro te dice una forma más rápida y óptima de hacerlo.

Un saludo.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ayuda Con Descarga Automatica

Mensaje por Ximorro »

Bienvenido al foro nelson13.
¿Lo que quieres es formar automáticamente el nombre?
Si es eso es fácil, ya te lo hago, pero que conste que me da la impresión que no lo has mirado mucho. Valga al menos para que analices lo que te pongo y con ayuda de los tutoriales, el foro y la ayuda de AutoIt vayas aprendiendo a hacer estas cositas, verás lo útil que puede ser AutoIt para automatizar cositas como esta.

Yo haría algo así, en realidad se puede poner todo en una línea pero no hace falta liarlo :smt005 :

Código: Seleccionar todo

$url = "http://www.mkradio.com.ar/MmboxOT1/"
$fich = $url & "MB" & StringRight(@YEAR,2) & @MON & @MDAY & ".zip"
ClipPut($fich)
Eso manda al portapapeles el nombre formado según la fecha, hoy por ejemplo (12 enero 2012) me da:
http://www.mkradio.com.ar/MmboxOT1/MB120112.zip
Resultado que he copiado con ctrl-v, ya que lo tengo en el portapapeles :smt003

¿Era esto lo que quieres?

EDIT:
Anda, no había visto lo de jamaro, parece que lo ha posteado mientras yo estaba escribiendo.
Bonita solución por las expresiones regulares, lo que no me gusta mucho es tener que incluir date.au3 para algo tan megasimple, cuando podemos sacar la fecha directamente de las macros, y más teniendo en cuenta que la función _now() hace precisamente eso, ja, ja.

Código: Seleccionar todo

Func _Now()
	Return (_DateTimeFormat(@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC, 0))
EndFunc   ;==>_Now
Pero también es una buena solución, que quede claro.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Ayuda Con Descarga Automatica

Mensaje por jamaro »

Ximorro ¿te puedes creer que cuando he puesto mi mensaje he intentado poner lo de las macros, he abierto SciTE, he empezado las dos lineas de código y he puesto year (sin @) y al ver que no me funcionaba, he abierto la ayuda y he buscado _now(), con su include, claro :-) ?

Se me olvidó la @ y eso que lo he utilizado en más de una ocasión, y he "terminado" antes metiendo el include que buscando en mi corta memoria el macro. Ahora que me guardé la frase "y seguro que alguien del foro te dice una forma más rápida y óptima de hacerlo" porque sabía que vendrías tú, Chefito , Basicos u otro compañero mejorándolo.

De todos modos, siguiendo con el mensaje de nelson13, no sé cuál es el alcance de su pregunta, y probablemente quiera también saber cómo acceder al txt. Si es así, nelson13, amplia y especifica un poco más la pregunta y si no se te da la respuesta directa, se te orientará hacia su búsqueda en la ayuda de Autoit.

Salu2
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Re: Ayuda Con Descarga Automatica

Mensaje por nelson13 »

Hola!, mil gracias a los dos! :smt039 , me solucionaron la vida!, jaja. la idea era me orienten no que me lo hagan jajaja igual lo estube mirando varias veces y lo entendi, lo unico que me falta es que la URL "http://www.mkradio.com.ar/MmboxOT1/" la tome de un txt por que me la van cambiando semana a semana y tengo miedo que por alguna torpeza algun dia se me arruine el codigo y no funcione. pero lo del txt externo creo que puedo solo :smt003 asi que voy a intentarlo, cuanlquier cosa me dirijo al foro jajaj Saludos y muchas gracias por al ayuda. :smt023
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ayuda Con Descarga Automatica

Mensaje por Ximorro »

Por lo que entiendo esa primera parte de la url la ofrecen en un archivo txt que descargas por internet.
El nombre del archivo zip se forma como nos has consultado.
Y luego querrás descargar ese archivo zip.

Pues bien, todas esas tareas se pueden realizar totalmente desde AutoIt, se puede hacer un programa que le digas dónde está el archivo txt inicial (o ni siquiera eso si siempre está en el mismo sitio o es posible generar el nombre). El programa descargaría el txt, leería la url de dentro, formaría el nombre del zip y después los descargaría y lo guardaría en tu disco duro local.

No sé si será muy complicado acceder al archivo txt pero si suele estar en una url fácil de especificar puedes automatizar casi todo el proceso. Si te interesa inténtalo y aquí estamos para ayudarte.

@jamaro, ¡no hace falta que te guardes la frase esa! Te aseguro que tengo un gran respeto a tus códigos y respuestas porque eres un gran profesional y que sepas que hay temas que controlas bastante mejor que yo (como programar para internet y BD).
En este caso tenías prisa porque si te llega a ir lo de la macro seguro que lo haces con eso, de todas maneras no he dicho que la solución no sea buena, simplemente si no hace falta incluir la librería para otras cosas creo que es una sobrecarga para un script tan pequeño, siendo que hay una solución sencilla sin dicha librería...
Y va, sí, la ER se puede optimizar para que no realice backtraking al resolverla, pero como trata con cadenas tan pequeñas da lo mismo.
Si fueras a usar eso para extraer fechas de archivos grandes es mejor otro método, si alguna vez te hace falta lo dices :smt020
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Re: Ayuda Con Descarga Automatica

Mensaje por nelson13 »

Hola a todos, como andan? :smt041 muchas gracias por sus respuestas! ya tengo el 50 % del proyecto resuelto gracias a ustedes!
:smt023
Bueno lo del link en lo posible debe ser desde un archivo externo (txt) porque me van modificando el link semana a semana y cualquier descuido podria arruinar el codigo de la aplicacion. :smt021

Bueno la idea es que se realize todo automaticamente, la idea que tenia hasta hoy a la mañana era que una ves copiado el link al portapapeles lo descargaba con JDownloader el cual segun lo que habia leido era capas de decomprimir el archivo una vez fianlizado al descarga.

Hoy me puse a descargar JDownloader y lo probé, y me encontre con que baja el archivo pero no me lo descomprime, entonces probe 40 veces tocando las configuraciones y nada. :smt010 No se que hacer, lo unico que necesito es algo que me baje el ZIP y me descompima los archivos MP3 contenidos, de ahi en más el programa que utilizo en la Radio es capas de reproducir esos archivos a la hora inidicada.

Con AutoIt es impsoible descomprimir un archivo no? , de ultima lo que tengo pensado es utilizar comandos de mouse y teclado para descomprimir los archivos utilizando comandos de AutoIt pero no es la mejor solucion, por que he realizado varias pruebas y apenas moves el Winrar de la ubicacion de la pantalla y deja de funcionar.

Saludos y Gracias por su tiempo! :smt039 Nelson.
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Ayuda Con Descarga Automatica

Mensaje por jamaro »

¡Ximorro era una broma!

Hola de nuevo nelson13

Sobre el enlace y el archivo txt... ¿dónde está normalmente la url del enlace? Desde tu programa puedes hacer que lea la página y obtenga el enlace, aunque éste lo cambien cada semana.
Con AutoIt es impsoible descomprimir un archivo no? , de ultima lo que tengo pensado es utilizar comandos de mouse y teclado para descomprimir los archivos utilizando comandos de AutoIt pero no es la mejor solucion, por que he realizado varias pruebas y apenas moves el Winrar de la ubicacion de la pantalla y deja de funcionar.
Jeje, creo que SUBESTIMAS mucho a Autoit. Yo siempre me pregunto al revés "Con Autoit es posible descomprimir un archivo ¿no?". Con el tiempo que conozco este lenguaje he visto que casi todo lo que se te ocurra, se puede hacer con Autoit, y eso que en algún sitio hablan de Autoit como un lenguaje para trabajar con "atajos de teclado" y "ventanas".

En cuanto al ZIP, Google es una maravilla también. Si pones en la búsqueda "Autoit ZIP" verás que en las primeras entradas tienes enlaces al foro inglés y precisamente hay una UDF llamada ZIP.au3 que hace muchas cosas con los archivos ZIP.

Creo que el esquema de tu programa sería:
1. Leer el enlace de la página web
2. Añadir el nombre del archivo zip como explicaron en mensajes anteriores
3. Descargar el archivo zip en la carpeta que desees (si sólo quieres su contenido puedes descargarlo en la carpeta de temporales)
3. Descomprimir el contenido del archivo zip utilizando la UDF en la carpeta que desees
4. Eliminar el archivo zip (yo lo haría aunque esté en el temporal)

Si te sirve el guión y necesitas ayuda, ya sabes donde estamos. No dudes en utilizar el foro, la ayuda de Autoit, el foro inglés (y otros) y Google :smt002

Saludos
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ayuda Con Descarga Automatica

Mensaje por Ximorro »

Yo también creo que es bastante posible que se pueda descargar el archivo txt para sacar la url de dentro de él. Lo único que lo impediría sería que sea imposible obtener el nombre de dicho archivo por programación, si es aleatorio por ejemplo.
De todas maneras siempre se puede hacer que el programa te pida la url del archivo txt. Es decir, en vez de ponerla en el navegador se la das al programa, y él ya lo descarga, saca la url, etc...

Respecto al ZIP, además de poder manejarlo directamente con la udf (que creo que usa la dll distribuible), puedes usar el winzip (o winrar o 7zip) que supongo tienes instalado. Desde AutoIT puedes ejecutar comandos y estos programas creo que todos tienen línea de comandos. La verdad es que no tengo winzip, pero con winrar se puede (usando rar.exe en vez de winrar.exe) y con 7zip también.

Ok jamaro :smt006
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Re: Ayuda Con Descarga Automatica

Mensaje por nelson13 »

Hola, muchas gracias por las respuestas! bueno este fin de semana me puse a investigar un poco y avanze bastante.
Bueno el esquema se me amplio un poco seria el siguiente:
1. Leer el enlace de la página web desd el txt (hecho)
2. Añadir el nombre del archivo zip como explicaron en mensajes anteriores (echo)
3. Descargar el archivo zip en la carpeta que desees (echo)
4. Descomprimir el contenido del archivo zip utilizando la UDF en la carpeta que desees (FALTA!)
5. Eliminar el archivo zip (Hecho)
6. Renombrar los archivos descomprimidos (Hecho)
7. editar ID3 Tag (FALTA!)

Posibles mejoras
Tanto renombrar como eliminar los acrchivos de ayer se podria hacer con un If 1 to 6
hacer un if por si no si no descomprime correctamente no sigue el programa.
hasta ahora llege a este codigo

Código: Seleccionar todo

$archivo = FileOpen("Link.txt", 0); lee el txt para obtener el link
$url= FileReadLine($archivo)
FileClose($archivo)
$fich = $url & "/MB" & StringRight(@YEAR,2) & @MON & @MDAY & ".zip"
InetGet($fich, "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox.zip", 0, 0)
Sleep(50000) ; tiempo  estimativo de descarga del zip, por als dudas es bastante grande
;Descomprime FALTA!
Sleep(5000); tiempo que tarda en descomprimir el zip
FileDelete ( "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox.zip" ) ;Borra Zip luego de descomprimirlo


FileDelete ( "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox1.mp3" ) ; borra el archivo de ayer
$sFileOld = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MUSICBOX_"& StringRight(@YEAR,2) & @MON & @MDAY & "_BLOQUE01.mp3" ; toma el nombre de hoy
$sFileRenamed = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox1.mp3" ; o modifica para que el software de radio lo pueda leer automaticamente
FileMove($sFileOld, $sFileRenamed)

Sleep(10)
FileDelete ( "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox2.mp3" )
$sFileOld = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MUSICBOX_"& StringRight(@YEAR,2) & @MON & @MDAY & "_BLOQUE02.mp3"
$sFileRenamed = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox2.mp3"
FileMove($sFileOld, $sFileRenamed)


Sleep(10)
FileDelete ( "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox3.mp3" )
$sFileOld = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MUSICBOX_"& StringRight(@YEAR,2) & @MON & @MDAY & "_BLOQUE03.mp3"
$sFileRenamed = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox3.mp3"
FileMove($sFileOld, $sFileRenamed)

Sleep(10)
FileDelete ( "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox4.mp3" )
$sFileOld = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MUSICBOX_"& StringRight(@YEAR,2) & @MON & @MDAY & "_BLOQUE04.mp3"
$sFileRenamed = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox4.mp3"
FileMove($sFileOld, $sFileRenamed)

Sleep(10)
FileDelete ( "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox5.mp3" )
$sFileOld = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MUSICBOX_"& StringRight(@YEAR,2) & @MON & @MDAY & "_BLOQUE05.mp3"
$sFileRenamed = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox5.mp3"
FileMove($sFileOld, $sFileRenamed)

Sleep(10)
FileDelete ( "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox6.mp3" )
$sFileOld = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MUSICBOX_"& StringRight(@YEAR,2) & @MON & @MDAY & "_BLOQUE06.mp3"
$sFileRenamed = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox\" & "MusicBox6.mp3"
FileMove($sFileOld, $sFileRenamed)

;Editar Tags ID3 para que el RDS (pantalla de los estereos dice el titulo del archivo que esta al aire, y este programa tiene en ARtista album y titulo, Publicidad del programa.debe ser rempalzadao el titulo por "MusicBox", y borrar el contenido de artista y album )
Los codigos que consegui googleando son
Para descomprimir:

Código: Seleccionar todo

Func _Zip_UnzipAll($hZipFile, $hDestPath, $flag = 1)
	Local $DLLChk = _Zip_DllChk()
	If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
	If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
	If Not FileExists($hZipFile) Then Return SetError(2, 0, 0) ;no zip file
	If Not FileExists($hDestPath) Then DirCreate($hDestPath)
	Local $aArray[1]
	$oApp = ObjCreate("Shell.Application")
	$oApp.Namespace($hDestPath).CopyHere($oApp.Namespace($hZipFile).Items)
	For $item In $oApp.Namespace($hZipFile).Items
		_ArrayAdd($aArray, $item)
	Next
	While 1
		If $flag = 1 then _Hide()
		If FileExists($hDestPath & "\" & $aArray[UBound($aArray) - 1]) Then
			Return SetError(0, 0, 1)
			ExitLoop
		EndIf
		Sleep(500)
	WEnd
EndFunc   ;==>_Zip_UnzipAll
y para editar los ID3

Código: Seleccionar todo

Func _Zip_UnzipAll($hZipFile, $hDestPath, $flag = 1)
	Local $DLLChk = _Zip_DllChk()
	If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
	If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
	If Not FileExists($hZipFile) Then Return SetError(2, 0, 0) ;no zip file
	If Not FileExists($hDestPath) Then DirCreate($hDestPath)
	Local $aArray[1]
	$oApp = ObjCreate("Shell.Application")
	$oApp.Namespace($hDestPath).CopyHere($oApp.Namespace($hZipFile).Items)
	For $item In $oApp.Namespace($hZipFile).Items
		_ArrayAdd($aArray, $item)
	Next
	While 1
		If $flag = 1 then _Hide()
		If FileExists($hDestPath & "\" & $aArray[UBound($aArray) - 1]) Then
			Return SetError(0, 0, 1)
			ExitLoop
		EndIf
		Sleep(500)
	WEnd
EndFunc   ;==>_Zip_UnzipAll
El problema es que no lso entiendo para nada y no se como modificarlos.
Por otro lado realize un programa para testear que en el txt este bien puesto el Link: el codigo es este

Código: Seleccionar todo

$archivo = FileOpen("Link.txt", 0)
$url= FileReadLine($archivo)
FileClose($archivo)
$fich = $url & "/MB" & StringRight(@YEAR,2) & @MON & @MDAY & ".zip"
ClipPut($fich) ; Lo copio para chequear en el navegador que funcione
Msgbox(0,"El Link es...","" & $fich)
Saludos garcias por su tiempo a todos, las corecciones/Sugerencias son bienvenidas!
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Re: Ayuda Con Descarga Automatica

Mensaje por nelson13 »

Bueno aqui tengo un problema, mi conecciona internet es medio mala 256 kb de bajada y ensima me conecto por wifi a mi router que se encuentra bastante lejos de la pc de la radio y tengo poca señal por eso aveces internet se corta y vuelve enseguida.
hHoy por ejemplo, ejecute el script (hasta la opcion de descarga ya que aun no puedo descomprimir automaticamente lo bajado) y puso la cruz de error en la barra de tareas y quedo la descarga or la mitad. supongo que lla razon fue porque se me corto internet.
Estoy por comprar un repetidor que aumente la señal para solucionar el problema, pero seria bueno anexar un codigo que me muestre en la barra de tareas un icono verde si todo el proceso se realizo correctamente o uno rojo si algo fallo y al pocisionarme sobre el me digalo que paso (no se descargo, error al descomprimir, etc).
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ayuda Con Descarga Automatica

Mensaje por Ximorro »

La función InetGet devuelve un error cuando falla, lo puedes comprobar así:

Código: Seleccionar todo

InetGet($nombrearchivo)
If @error Then
	; Aquí acciones a ajecutar si hay error, por ejemplo dar un mensaje de error y después abortar
EndIf
Por ejemplo puedes mostar un MsgBox de error y luego salir:

Código: Seleccionar todo

InetGet($nombrearchivo)
If @error Then
	MsgBox(16, "Error", "Error descargando archivo.")
	Exit
EndIf
Antes del exit también puedes borrar lo que haya bajado de archivo, que está corrupto.

Por cierto, no hace falta el Sleep después de InetGet, pues esta función es bloqueante, es decir, el programa se detiene hasta que el fichero ha terminado de descargar. Hay otro modo más complicado en el que no es bloqueante, pero tal como lo tienes no hay que hacer nada, es mejor quitar el Sleep.

Puedes guardar cadenas fijas en variables para luego simplificar el código, además te facilitará las cosas si por ejemplo más adelante cambias carpetas o cosas así. Por ejemplo el principio quedaría así:

Código: Seleccionar todo

$archivo = FileOpen("Link.txt", 0); lee el txt para obtener el link
$url= FileReadLine($archivo)
FileClose($archivo)
$fecha = StringRight(@YEAR,2) & @MON & @MDAY
$fich = $url & "/MB" & $fecha & ".zip"
$path = "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\"
InetGet($fich, $path & "MusicBox.zip", 0, 0)
;Descomprime FALTA!
Sleep(5000); tiempo que tarda en descomprimir el zip
FileDelete($path & "MusicBox.zip" )

FileDelete($path & "MusicBox1.mp3") ; borra el archivo de ayer
$sFileOld = $path & "MUSICBOX_" & $fecha & "_BLOQUE01.mp3" ; toma el nombre de hoy
$sFileRenamed = $path "MusicBox1.mp3" ; o modifica para que el software de radio lo pueda leer automaticamente
Y luego se simplifica mucho con todos los path (y lo importante es que si lo quieres cambiar sólo tienes que modificar la variable al principio, no todas las líneas.
También he precalculado lo de la fecha en una variable, eso también es por seguridad porque si te pones a descargar cerca de medianoche te puede cambiar la fecha en mitad del proceso.

Investigaré esas funciones del ZIP, creo que sólo funcionan a partir de Windows Vista, que tiene soporte interno para acceder a archivos ZIP. Como te comentábamos también puedes usar rar o 7zip para descomprimir.
Hum, así rápido veo que ese código forma parte de algo más grande, te faltan cosas, porque se apoya en una dll para hacer el trabajo.
Lo del Idtag sí que no lo sé, quizás haya alguna UDF para hacerlo...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
nelson13
Mensajes: 18
Registrado: 12 Ene 2012, 01:16

Re: Ayuda Con Descarga Automatica

Mensaje por nelson13 »

Hola! Ximorro, bueno primero, con respecto al codigo de error de descarga, quedaria así?

Código: Seleccionar todo

$archivo = FileOpen("Link.txt", 0)
$url= FileReadLine($archivo)
FileClose($archivo)
$fich = $url & "/MB" & StringRight(@YEAR,2) & @MON & @MDAY & ".zip"
InetGet($fich, "D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox.zip", 0, 0)
InetGet("D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox.zip",)
If @error Then
   MsgBox(16, "Error", "Error descargando archivo.")
   Exit
EndIf
Porque la verdad lo pruebo cortando intencinalmente internet y me da un error autoit (por ese codigo) en vez de apareser el mensaje de error.


Por el otro lado, yo cuento con Windows 7, asique si alguien sabe el comando para descomprimir se lo agradeceria! :smt003
Saludos , y gracias por aportar!
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Ayuda Con Descarga Automatica

Mensaje por jamaro »

nelson13 parece que InetGet lo tienes repetido, y además, no con el formato correcto. En la ayuda indica:
InetGet ( "URL" [,"filename" [, options [, background]]] )

A mi me suele ayudar poner una línea después de declarar la variable $fich, para mostrar el contenido real de la variable.
Consolewrite(@ScriptLineNumber & " - " & $fich)
A veces, viendo el valor, te das cuenta si es correcto su valor (espacios, barras / \ ,...)

Respecto al ZIP, si optaste por la función que publicaste _Zip_UnzipAll($hZipFile, $hDestPath, $flag = 1), supongo que debes utilizarlo de esta manera:

_Zip_UnzipAll("D:\Mis Documentos\Mis documentos Nelson\Mi musica\Archivos Radio\programas\MusicBox.zip", CarpetaDestino)

Un saludo
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Ayuda Con Descarga Automatica

Mensaje por Ximorro »

Efectivamente hay dos líneas InetGet, la segunda está mal formada, la primera es la que está bien (comprobando como bien dice jamaro que en la variable está lo que toca, que en este caso creo que sí)
Yo también uso mucho lo de los ConsoleWrite para ver si monto correctamente variables de cadena un poco complejas.

Podría haber problemas si por ejemplo la url dentro del archivo ya acaba con la barra, entonces estás añadiendo otra y eso es incorrecto. Es un ejemplo.

Lo del ZIP, si sólo tienes la función no funcionará. Se ve que usa una DLL y otras funciones, así que te hará falta dicha DLL y una udf, como mínimo.
La carpeta de destino si no existe la crea.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder