Bilder laden von tmdb

  • 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.


    [autoit]

    #include <String.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    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")&"\"

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    GUISetState(@SW_SHOW) ;GUI anzeigen

    [/autoit][autoit][/autoit][autoit]

    ;~ mach erstmal nix ausser warten
    While 1
    Sleep(1)
    If $bStart Then
    _Run($nLastCompleted)
    IniWrite($sFile, "Progress", "LastCompleted", $nLastCompleted)
    $nLastCompleted += 1
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func start()
    $bStart = Not $bStart
    If $bStart Then
    GUICtrlSetData(@GUI_CtrlId,"Stop")
    Else
    GUICtrlSetData(@GUI_CtrlId,"Start")
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    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"

    [/autoit][autoit][/autoit][autoit]

    $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

    [/autoit][autoit][/autoit][autoit]

    ;~ 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

    [/autoit][autoit][/autoit][autoit]

    ;~ mach das fenster zu es zieht
    Func CLOSEClicked() ;geht nur wenn keine andere funktion arbeitet
    Exit
    EndFunc

    [/autoit]

    I spent 10 minutes reviewing code and thinking "What kind of drugs is this guy on?" before realizing it was something I wrote.