Hallo liebe Community,
hier mein kleines Tool um sich fehlende Alben Cover zu laden.
Besonders sinnvoll bei iTunes und Co. weil diese nicht alles finden !
Schnell und einfach.
Quellcode:
Spoiler anzeigen
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Tidy_Stop_OnError=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <INet.au3>
#include <String.au3>
#include <ID3.au3>
If (@OSVersion == "WIN_7") Then
If (@ScriptDir == @DesktopDir) Then
MsgBox(48, "", "Bitte das Programm nicht auf dem Desktop ausführen.")
Exit
EndIf
EndIf
#Region ### START Koda GUI section ###
$Form1 = GUICreate("AllMusic - Coverdownloader", 927, 449, 357, 244)
GUISetBkColor(0x0DDAF9)
$Background = GUICtrlCreatePic("Images\Background.jpg", 0, 0, 927, 449, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_DISABLE)
$Name = GUICtrlCreateInput("Name", 104, 184, 345, 21)
$Search = GUICtrlCreateButton("Suchen", 152, 224, 251, 25, $WS_GROUP)
$Search2 = GUICtrlCreateButton("Cover für ganzes Verzeichnis suchen", 152, 392, 249, 25, $WS_GROUP)
$Next = GUICtrlCreateButton("Nächstes", 736, 392, 115, 25, $WS_GROUP)
$Download = GUICtrlCreateButton("Download", 544, 392, 115, 25, $WS_GROUP)
$Edit = GUICtrlCreateGroup ("", 543, 63, 306, 315)
$Pic1 = ""
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Search
If $Pic1 <> "" Then
GUICtrlDelete ($Pic1)
EndIf
$i = "1"
$Titel = GUICtrlRead ($Name)
$Link = "http://images.google.de/images?um=1&hl=de&tbs=isch%3A1&sa=1&q="&StringReplace($Titel," ","+")&"+Cover&btnG=Suche&aq=f&oq=&start=0"
$sSource = __InetGetSource($Link)
$aPic = StringRegExp($sSource,"(?>href=/imgres\?imgurl=)(.+?)(?>&imgrefurl=)",3)
InetGet ($aPic[$i], @TempDir&"Cover-"&$Titel&".jpg")
$Pic1 = GUICtrlCreatePic(@TempDir&"Cover-"&$Titel&".jpg", 544, 72, 305, 305, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetState ($Pic1, $GUI_ONTOP)
$i = $i+1
Case $Search2
$Count = 0
$PathFolder = FileSelectFolder("Ordner auswählen", "", 4)
$FolderFileList = _FileListToArray($PathFolder, "*.mp3")
If IsArray($FolderFileList) = 0 Then
MsgBox(0, "Fehler", "Es ist kein Lied im Ordner!")
EndIf
For $z = 1 To UBound($FolderFileList) - 1
ConsoleWrite("Suche ID3Tags für " & $FolderFileList[$z])
$TitelTag = _ID3ReadTag($PathFolder & "\" & $FolderFileList[$z], 1, -1, 1)
If IsArray($TitelTag) Then
$Count = $Count + 1
ConsoleWrite("FOUND")
$TitelTag = StringSplit($TitelTag[1], "|")
$TitelTag2 = $TitelTag[UBound($TitelTag) - 1]
$TitelTag2 = StringReplace($TitelTag2, ".", "")
$TitelTag2 = StringReplace($TitelTag2, Chr(0), "")
$Link = "http://images.google.de/images?um=1&hl=de&tbs=isch%3A1&sa=1&q="&StringReplace($TitelTag2, " ", "+")&"+Cover+jpg&btnG=Suche&aq=f&oq=&start=0"
$sSource = __InetGetSource($Link)
$aPic = StringRegExp($sSource, "(?>href=/imgres\?imgurl=)(.+?)(?>&imgrefurl=)", 3)
InetGet($aPic[$z], $PathFolder&"\Cover-"&$TitelTag2&".jpg", 1)
GUICtrlDelete($Pic1)
$Pic1 = GUICtrlCreatePic($PathFolder&"\Cover-"&$TitelTag2&".jpg", 544, 72, 305, 305, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState($Pic1, $GUI_ONTOP)
Else
ConsoleWrite("NOT FOUND")
EndIf
ConsoleWrite(@CRLF)
Next
MsgBox(0, "Fertig", "Vorgang erfolgreich ausgeführt! Die Cover sind im selben Ordner wie die Musik."&@CRLF&"Es wurden "&$Count&" von "&UBound($FolderFileList)-1&" Covern gefunden!")
Case $Next
GUICtrlDelete ($Pic1)
InetGet ($aPic[$i], @TempDir&"Cover-"&$Titel&".jpg")
$i = $i+1
If $i > UBound($aPic)-1 Then
$i = "1"
EndIf
$Pic1 = GUICtrlCreatePic(@TempDir&"Cover-"&$Titel&".jpg", 544, 72, 305, 305, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetState ($Pic1, $GUI_ONTOP)
Case $Download
InetGet ($aPic[$i], @ScriptDir&"\Cover-"&$Titel&".jpg")
EndSwitch
WEnd
Func __InetGetSource($s_URL)
Local $sString = InetRead($s_URL,1)
Local $nError = @error, $nExtended = @extended
Return SetError($nError, $nExtended, BinaryToString($sString))
EndFunc ;==>__InetGetSource
Changelog:
1.1
----
Neues Design
Ein ganzer Ordner kann aktualisiert werden (Cover laden)
1.2
----
Ein paar kleine Skriptunreinheiten beseitigt!
ToDo:
Manche Cover werden geladen nur die Endung bleibt aus.
Aber z.B iTunes kann damit trotzdem umgehen.
Bei Lob und Kritik könnt ihr ja eine kleine Antwort da lassen.