für die media center erweiterung Mediabrowser habe ich letzten sommer mal ein tool geschrieben mit dem man die Bilder von schauspielern laden kann und diese dann in ordnern mit dem jeweilen schauspielernamen gespeichert werden.
da jeder schauspieler dort eine nummer hat, werden die nummern der schauspieler zwischen 2 strings gesetzt und daraus entsteht dann die bildadresse.
sollte kein bild der nummer zugewiesen worden sein, wird kein ordner erstellt und mit der nächsten nummer weitergemacht.
viel spass damit.
#include <String.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
Global $dir, $cNummer, $cActor, $bStart
Global $sFile = "test.opt" ;das file mit der nummer des letzten actors der abgearbeitet wurde
Global $nLastCompleted = IniRead($sFile,"Progress","LastCompleted",1)
Global $dir = IniRead($sFile,"Data","Folder","NotFound")&"\"
Opt("GUIOnEventMode", 1) ;Wechsle in den OnEvent Modus
[/autoit][autoit][/autoit][autoit]GUICreate("TMDB Actor Loader", 200, 90, 192, 124, -1, BitOR($WS_EX_WINDOWEDGE,$WS_EX_CONTEXTHELP))
GUISetIcon("C:\Windows\System32\shell32.dll", -44)
GUICtrlCreateLabel("Nummer", 10, 10, 43, 17)
$cNummer = GUICtrlCreateLabel("", 100, 8, 100, 17)
GUICtrlCreateLabel("Actor", 10, 35, 43, 17)
$cActor = GUICtrlCreateLabel("", 100, 35, 100, 17)
GUICtrlCreateButton("Folder", 115, 55, 60)
GUICtrlSetOnEvent(-1, "Folder")
$cStart = GUICtrlCreateButton("Start", 25, 55, 60) ;create start button
GUICtrlSetOnEvent($cStart, "Start") ;start event freigeben
If Not StringInStr(FileGetAttrib($dir),"D") Then GUICtrlSetState($cStart,$GUI_DISABLE) ;disable the start button if no valid path is loaded
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUISetState(@SW_SHOW) ;GUI anzeigen
;~ mach erstmal nix ausser warten
While 1
Sleep(1)
If $bStart Then
_Run($nLastCompleted)
IniWrite($sFile, "Progress", "LastCompleted", $nLastCompleted)
$nLastCompleted += 1
EndIf
WEnd
Func start()
$bStart = Not $bStart
If $bStart Then
GUICtrlSetData(@GUI_CtrlId,"Stop")
Else
GUICtrlSetData(@GUI_CtrlId,"Start")
EndIf
EndFunc
Func _run($nActor)
Local $sSource, $sName, $sImageUrl
Local $sNameLeft = "<h2>" ;linker string beim actorname
Local $sNameRight = "</h2>" ;rechter string beim actorname
Local $sImageLeft = "http://hwcdn.themoviedb.org/profiles/" ;linker string beim bilderdownload
Local $sFileName = "\folder.jpg"
$sSource = BinaryToString(InetRead("http://www.themoviedb.org/person/" & $nActor))
[/autoit][autoit][/autoit][autoit]$sName = _StringBetween($sSource, $sNameLeft, $sNameRight) ;actorname auslesen
If @error Then Return ;the old error function caused an infinite loop leading to a stack overflow error.
GUICtrlSetData($cNummer, $nActor) ;actornummer in GUI schreiben
GUICtrlSetData($cActor, $sName[0]) ;actorname in GUI schreiben
If FileExists($dir & $sName[0]) Then Return
$sImageUrl = _StringBetween($sSource, $sImageLeft, '"') ;teil des links für das bild auslesen
If @error Then Return
DirCreate($dir & $sName[0])
InetGet($sImageLeft & $sImageUrl[0], $dir & $sName[0] & $sFileName,0,1) ;lade bild in den dateispeicherort
EndFunc
;~ Speicherort festlegen
Func Folder()
Do
$dir=FileSelectFolder("Choose a folder.", "",1) ;This will repeat untill a valid folder is chosen
Until StringInStr(FileGetAttrib($dir),"D")
IniWrite($sFile, "Data", "Folder", $dir)
GUICtrlCreateButton("OK", 25, 55, 60) ;ok button erstellen
GUICtrlSetOnEvent(-1, "Start") ;start event freigeben
$dir &= "\"
EndFunc
;~ mach das fenster zu es zieht
Func CLOSEClicked() ;geht nur wenn keine andere funktion arbeitet
Exit
EndFunc