Os dejo aqui la versión 2.4 de mi aplicación, el GoearDownloader.
Aquellos que hayan utilizado las versiones anteriores, se habrán dado cuenta que las interfaces visuales "bonitas" no son lo mio, pero bueno, os prometo que con esta versión vais a estar satisfechos.
La he actualizado de manera que tenemos ahora dos opciones de descarga, o bien podemos descargar la canción seleccionada tras buscarla y cerrar la aplicación, o bine nos da la opción de añadir esa a una lista de descargas para poder seguir buscando y asi descargar todo de una vez, lo cual yo veo personalmente mil veces más cómodo.
Todo esto es gestionado por un par de TabItems, un primero en el que se gestionan las búsquedas y un segundo en el que está la lista de descargas.
También he añadido la opción de eliminar un archivo de la lista de descargas por si nos hemos confundido.
Por ahora es todo, espero que lo probéis y me comentéis !
Caps:
![Imagen](https://1.bp.blogspot.com/-sW71Eu_MHvc/TxcP97K094I/AAAAAAAAACo/H56v4PHLLNs/s320/cap_01.png)
![Imagen](https://2.bp.blogspot.com/-1SMa5o0NawY/TxcP--aUTsI/AAAAAAAAACs/7-Z8JGaGZiw/s320/cap_02.png)
Code:
Código: Seleccionar todo
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=ICO-Download_ico-128x128.ico
#AutoIt3Wrapper_Res_Comment=Implementado por @Gm15
#AutoIt3Wrapper_Res_Description=www.nodluna.blogspot.com
#AutoIt3Wrapper_Res_Fileversion=2.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=@Gm15 KopuLeft (K) 2011
#AutoIt3Wrapper_Res_Language=1034
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
Author: @Gm15
Script Function:
Downloads Songs From Goear.
#ce ----------------------------------------------------------------------------
#include <inet.au3>
#include <IE.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <String.au3>
#include <Misc.au3>
#include <GuiMenu.au3>
#include <GuiListView.au3>
#include <GuiStatusBar.au3>
#include <TabConstants.au3>
;variables
Dim $gurl = "http://www.goear.com/search"
Dim $version = "2.3"
Dim $contador = 1
Dim $ie_load = 0
Dim $IE
Dim $valor
;-------------
;Interfaz
#region Principal
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Goear Downloader v"&$version, 423, 372)
$MenuItem2 = GUICtrlCreateMenu("Archivo")
$MenuItem3 = GUICtrlCreateMenuItem("Salir", $MenuItem2)
$MenuItem4 = GUICtrlCreateMenu("Ayuda")
$MenuItem1 = GUICtrlCreateMenuItem("Acerca de..", $MenuItem4)
$Tab1 = GUICtrlCreateTab(8, 8, 409, 321)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("Buscar")
$Group1 = GUICtrlCreateGroup("Datos", 16, 40, 393, 57)
$Label1 = GUICtrlCreateLabel("Artista", 32, 64, 33, 17)
$Input1 = GUICtrlCreateInput("", 80, 62, 193, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL))
$Button1 = GUICtrlCreateButton("OK", 280, 60, 27, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("+ Resultados", 320, 60, 75, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Resultados", 16, 104, 393, 177)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button3 = GUICtrlCreateButton("Descargar Seleccionada", 16, 288, 139, 25, $WS_GROUP)
$Button4 = GUICtrlCreateButton("Añadir a la lista", 256, 288, 155, 25, $WS_GROUP)
$hListView = GUICtrlCreateListView("Título/Artista|Dirección", 22, 120, 388, 150)
_GUICtrlListView_SetColumnWidth($hListView, 0, 240)
_GUICtrlListView_SetColumnWidth($hListView, 1, 130)
$TabSheet2 = GUICtrlCreateTabItem("Descargas")
$Group3 = GUICtrlCreateGroup("Lista de descargas", 16, 40, 393, 201)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Progreso", 16, 248, 393, 73)
$Label2 = GUICtrlCreateLabel("Descarga actual:", 32, 272, 85, 17)
$Label3 = GUICtrlCreateLabel("Progreso general:", 32, 296, 87, 17)
$Progress1 = GUICtrlCreateProgress(144, 270, 254, 17)
$Progress2 = GUICtrlCreateProgress(144, 294, 166, 17)
$Button5 = GUICtrlCreateButton("Comenzar", 320, 289, 55, 25, $WS_GROUP)
$Button6 = GUICtrlCreateButton("DEL", 375, 289, 25, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$hListView2 = GUICtrlCreateListView("Titulo|Dirección", 20, 60, 386, 170)
_GUICtrlListView_SetColumnWidth($hListView2, 0, 240)
_GUICtrlListView_SetColumnWidth($hListView2, 1, 130)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
$hStatus = _GUICtrlStatusBar_Create($Form1)
_GUICtrlStatusBar_SetParts($hStatus, 1)
_GUICtrlStatusBar_SetText($hStatus, "Estado: Listo")
#endregion ### END Koda GUI section ##
#endregion Principal
#region Acercade..
$FORM3 = GUICreate("Goear Downloader ", 226, 221, -1, -1, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
$GRUPO1 = GUICtrlCreateGroup(" Agradecimientos ", 8, 56, 209, 121)
$CREDITOS = GUICtrlCreateEdit("", 16, 72, 193, 97, BitOR($ES_CENTER, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $ES_READONLY))
GUICtrlSetData(-1, StringFormat("*Foro de autoit.es, por la excelente ayuda que siempre me prestan.\r\n*A Chefito, por su eficaz ayuda!\r\n*A tí, por utilizar esta aplicación.\r\n.-=Kiss To My Lovers=-.\r\n@Gm15 KopyLeft (K) 2011"))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Autorlabel = GUICtrlCreateLabel("Autor: ", 8, 18, 33, 17)
$ETIQUETA1 = GUICtrlCreateLabel("@Gm15", 48, 18, 74, 17)
GUICtrlSetColor(-1, 5273038)
$URLWEB = GUICtrlCreateLabel("www.nodluna.blogspot.com", 48, 32, 130, 17)
GUICtrlSetColor(-1, 5273038)
GUICtrlSetCursor(-1, 0)
$WEBLABEL = GUICtrlCreateLabel("Web: ", 8, 32, 33, 17)
$ACPETAR = GUICtrlCreateButton("Aceptar", 80, 184, 75, 25, $WS_GROUP)
GUICtrlSetState(@SW_HIDE, $FORM3)
#endregion Acercade..
Global $contador = 1
_CHECKFORUPDATES()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_IEQuit($IE)
Exit
Case $MenuItem3
_IEQuit($IE)
Exit
Case $MenuItem1
GUISetState(@SW_HIDE, $Form1)
GUISetState(@SW_SHOW, $FORM3)
Case $ACPETAR
GUISetState(@SW_HIDE, $FORM3)
GUISetState(@SW_SHOW, $Form1)
Case $URLWEB
ShellExecute("http://www.nodluna.blogspot.com")
Case $Button2
_GUICtrlListView_DeleteAllItems($hListView)
buscar(GUICtrlRead($Input1), $gurl, True)
Case $Button1
_GUICtrlListView_DeleteAllItems($hListView)
buscar(GUICtrlRead($Input1), $gurl, False)
Case $Button3
$mp3url = descargar(0)
$mp3name = descargar(1)
$GUARDAR = @DesktopDir & "\" & $mp3name & ".mp3"
GUICtrlSetData($Label2, "Escritorio: " & $mp3name & ".mp3")
;Descargo el archivo y simultaneamente actualizo la info. de la interzaz
_GUICtrlStatusBar_SetText($hStatus, "Estado: Descargando archivo...")
$DESCARGA = InetGet($mp3url, $GUARDAR, 1, 1)
Local $HDOWNLOAD = $DESCARGA
ProgressOn("Descargando archivo", "", "0%")
Do
$ADATA = InetGetInfo($HDOWNLOAD)
$MULTIPLICAR = $ADATA[0] * 100
$SIZE = $ADATA[1]
$PORCENTAJE = Round($MULTIPLICAR / $SIZE, 1)
GUICtrlSetData($Progress1, $PORCENTAJE)
ProgressSet($PORCENTAJE, $PORCENTAJE & " %")
_GUICtrlStatusBar_SetText($hStatus, "Estado: Descargando archivo... " & $PORCENTAJE & "%")
Until InetGetInfo($HDOWNLOAD, 2)
ProgressOff()
MsgBox(0, "Goear Downloader", "Descarga Completada")
_GUICtrlStatusBar_SetText($hStatus, "Estado: Descarga completa")
_GUICtrlStatusBar_SetText($hStatus, "Estado: Listo")
Case $Button4; Añadir a la lista
$total = _GUICtrlListView_GetItemCount($hListView)
For $a = 0 To $total
If _GUICtrlListView_GetItemSelected($hListView, $a) = True Then
GUICtrlCreateListViewItem( descargar(1) & "|" & descargar(0), $hListView2)
_GUICtrlStatusBar_SetText($hStatus, "Estado: Canción añadida a la lista de descargas")
Sleep(200)
_GUICtrlStatusBar_SetText($hStatus, "Estado: Listo")
EndIf
Next
Case $Button5 ; Comienza la lista de descargas general
download()
GUICtrlSetData($Progress1, 0);Ref Al total de archivos
GUICtrlSetData($Progress2, 0);Ref Al total de archivos
Case $Button6
$total = _GUICtrlListView_GetItemCount($hListView2)
For $a = 0 To $total
If _GUICtrlListView_GetItemSelected($hListView2, $a) = True Then
_GUICtrlListView_DeleteItem($hListView2,$a)
EndIf
Next
EndSwitch
WEnd
;Funciones
Func download()
$total = _GUICtrlListView_GetItemCount($hListView2)
$inicio_descargas = 1
For $a = 0 To $total
$mp3name = _GUICtrlListView_GetItemText($hListView2, $a)
$GUARDAR = @DesktopDir & "\" & $mp3name & ".mp3"
$url = _GUICtrlListView_GetItemText($hListView2, $a, 1) ; Link de la canción
$DESCARGA = InetGet($url, $GUARDAR, 1, 1)
Local $HDOWNLOAD = $DESCARGA
Do
$ADATA = InetGetInfo($HDOWNLOAD)
$MULTIPLICAR = $ADATA[0] * 100
$SIZE = $ADATA[1]
$PORCENTAJE = Round($MULTIPLICAR / $SIZE, 2)
;Actualizo los porcentajes de las barras de progreso
GUICtrlSetData($Progress1, $PORCENTAJE);Ref Al archivo que se baja actualmente
_GUICtrlStatusBar_SetText($hStatus, "Estado: Descargando archivo... " & $PORCENTAJE & "%")
Until InetGetInfo($HDOWNLOAD, 2)
;Actualizo el % general de la operacion
$PORCENTAJE_TOTAL = ($inicio_descargas * 100) / $total
GUICtrlSetData($Progress2, $PORCENTAJE_TOTAL);Ref Al total de archivos
$inicio_descargas = $inicio_descargas + 1
Next
EndFunc ;==>download
Func buscar($busqueda, $url, $val)
_GUICtrlStatusBar_SetText($hStatus, "Estado: Realizando búsqueda")
If $val = False Then
$valor = 1 ;Para una primera busqueda, a partir de ahi se usa el boton +res
ElseIf $val = True Then
$valor = $contador
;Para una mas res
EndIf
;_GUICtrlStatusBar_SetText($hStatus, "Estado: Realizando busqueda...")
$direccion = $url & "/" & $busqueda & "/" & $valor
$html = _INetGetSource($direccion)
;ConsoleWrite($html)
$artistacancion = StringRegExp($html, '<span class="group">(.*?)</span>', 3)
$TituloCancion = StringRegExp($html, '<span class="song">(.*?)</span>', 3)
$linkCancion = StringRegExp($html, '<a title=".*?" href="(.*?)"><span class="song">', 3)
For $n = 0 To UBound($TituloCancion) - 1
$link = $linkCancion[$n]
GUICtrlCreateListViewItem($TituloCancion[$n] & " - " & $artistacancion[$n] & "|" & "http://www.goear.com/" & $link, $hListView)
Next
;_GUICtrlStatusBar_SetText($hStatus, "Estado: Busqueda finalizada")
$contador = $contador + 1
_GUICtrlStatusBar_SetText($hStatus, "Estado: Búsqueda finalizada")
Sleep(100)
_GUICtrlStatusBar_SetText($hStatus, "Estado: Listo")
EndFunc ;==>buscar
#cs
Func buscar($busqueda, $url)
_GUICtrlStatusBar_SetText($hStatus, "Estado: Realizando busqueda...")
$direccion = $url & "/" & $busqueda & "/" & $contador
If $ie_load = 0 Then
$ie_load = 1
$IE = _IECreate("about:blank", 0, 0, 1)
_IELoadWait($IE)
EndIf
_IENavigate($IE, $direccion)
$oInputs = _IETagNameGetCollection($IE, "a")
For $oInput In $oInputs
Select
Case StringLeft($oInput.title, 9) = "Escuchar "
If StringLeft($oInput.title, 15) <> "Escuchar musica" And StringLeft($oInput.title, 16) <> "Escuchar canales" Then
$titulo = StringReplace(StringReplace($oInput.title, "Escuchar ", ""), "de ", " - ")
$url = $oInput.href
GUICtrlCreateListViewItem($titulo & "|" & $url, $hListView)
_GUICtrlStatusBar_SetText($hStatus, "Estado: Busqueda finalizada")
EndIf
EndSelect
Next
EndFunc ;==>buscar
#ce
Func descargar($option);devuelve el link de descarga del mp3 y reedita la etiqueta con la ruta de descarga
$total = _GUICtrlListView_GetItemCount($hListView)
For $a = 0 To $total
If _GUICtrlListView_GetItemSelected($hListView, $a) = True Then
$tit = _GUICtrlListView_GetItemText($hListView, $a)
$url = _GUICtrlListView_GetItemText($hListView, $a, 1)
;Proceso la url de destino para sacar la direccion del archivo mp3
$REPL1 = StringSplit($url, "/")
$SONGID = $REPL1[5]
$XML1 = _INetGetSource("http://www.goear.com/tracker758.php?f=" & $SONGID)
$XML2 = StringReplace($XML1, '<?xml version="1.0" encoding="UTF-8"?>', "")
$XML3 = StringReplace($XML2, "<songs>", "")
$XML4 = StringSplit($XML3, "<")
$XML5 = StringReplace($XML4[2], "song path=", "")
$XML6 = StringReplace($XML5, 'bild="http://www.goear.com/1.gif" ', "")
$XML7 = StringSplit($XML6, "=")
$UMP3 = StringTrimRight(StringReplace(StringReplace($XML7[1], '"', ""), " artist", ""), 1)
$ARTIST1 = StringReplace(StringReplace($XML7[2], '"', ""), " title", "")
$ARTIST = StringReplace($ARTIST1, @CRLF, "")
$TITLE1 = StringTrimRight(StringReplace(StringReplace($XML7[3], '"', ""), "/>", ""), 2)
$TITLE = StringReplace($TITLE1, @CRLF, "")
Select
Case $option = 0
Return $UMP3 & "3";devuelvo direccion
Case $option = 1
Return $tit
EndSelect
EndIf
Next
EndFunc ;==>descargar
Func artist($url, $option);devuelve el link de descarga del mp3 y reedita la etiqueta con la ruta de descarga
;Proceso la url de destino para sacar la direccion del archivo mp3
$REPL1 = StringSplit("http://www.goear.com/" & $url, "/")
$SONGID = $REPL1[5]
$XML1 = _INetGetSource("http://www.goear.com/tracker758.php?f=" & $SONGID)
$XML2 = StringReplace($XML1, '<?xml version="1.0" encoding="UTF-8"?>', "")
$XML3 = StringReplace($XML2, "<songs>", "")
$XML4 = StringSplit($XML3, "<")
$XML5 = StringReplace($XML4[2], "song path=", "")
$XML6 = StringReplace($XML5, 'bild="http://www.goear.com/1.gif" ', "")
$XML7 = StringSplit($XML6, "=")
$UMP3 = StringTrimRight(StringReplace(StringReplace($XML7[1], '"', ""), " artist", ""), 1)
$ARTIST1 = StringReplace(StringReplace($XML7[2], '"', ""), " title", "")
$ARTIST = StringReplace($ARTIST1, @CRLF, "")
$TITLE1 = StringTrimRight(StringReplace(StringReplace($XML7[3], '"', ""), "/>", ""), 2)
$TITLE = StringReplace($TITLE1, @CRLF, "")
Return $ARTIST
EndFunc ;==>artist
Func _CHECKFORUPDATES()
Local $SERVIDOR = "http://nodluna.blogspot.com/2010/10/goear-downloader-v13-beta.html"
If Ping("nodluna.blogspot.com") <> 0 Then
$LEERWEB = _INetGetSource($SERVIDOR)
$GETVER = StringRegExp($LEERWEB, "<(?i)gdver>(.*?)</(?i)gdver>", 1, 1)
If $version >= $GETVER[0] Then
Return 0
Else
TrayTip("Goear Downloader", "Nueva versión disponible: " & $GETVER[0] & @LF & @LF & "Puede descargarla de la web oficial", 1, 1)
Sleep(3000)
TrayTip("", "", 1, 1)
EndIf
Else
TrayTip("Error de conexión", "Imposible conectar con el servidor para buscar nuevas versiones." & @LF & "Comrpuebe su conexión a internet", 1, 3)
Sleep(3000)
TrayTip("", "", 1, 1)
EndIf
EndFunc ;==>_CHECKFORUPDATES
Func _StringInArray($a_Array, $s_String)
Local $i_ArrayLen = UBound($a_Array) - 1
For $i = 0 To $i_ArrayLen
If $a_Array[$i] = $s_String Then
Return $i
EndIf
Next
SetError(1)
Return 0
EndFunc ;==>_StringInArray
Saludos!