Bild-Downloader

  • Hey,
    hier bin ich mal wieder mit einem vorbereitetem Skript.
    Also, es ist ein Bild-Downloader. Ihr müsst den URL-Link des Bildes kopieren und müsst es bei dem Link einfügen. Probiert es am besten beim AutoIt-Bild oben aus, geht am schnellstem :P
    Hier das Skript:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Bild-Downloader v1.0", 372, 154, 192, 124)
    $Label1 = GUICtrlCreateLabel("Suchen Sie zuerst ein Bild aus, und kopieren die URL des Bildes.", 16, 16, 313, 17)
    $Label2 = GUICtrlCreateLabel("Fügen Sie diesen Link nun in das erste Eingabefeld ein.", 16, 40, 278, 17)
    $Label3 = GUICtrlCreateLabel("Tragen Sie schließlich noch in das nächste Eingabefeld den Namen ein", 16, 64, 341, 17)
    $Label4 = GUICtrlCreateLabel("Link:", 16, 96, 27, 17)
    $Label5 = GUICtrlCreateLabel("Name des Bildes:", 16, 120, 86, 17)
    $Input1 = GUICtrlCreateInput("", 48, 96, 177, 21)
    $Input2 = GUICtrlCreateInput("", 104, 120, 121, 21)
    $Button1 = GUICtrlCreateButton("Bild downloaden", 232, 96, 121, 49)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Link = GUICtrlRead($Input1)
    $Name = GUICtrlRead($Input2)
    MsgBox(0,"Info","Ihr Bild wird nun unter dem Namen " & $Name & " im Datenträger C:\ abgespeichert")
    If $Link = "" Or $Name = "" Then
    MsgBox(16,"Error","Möglicherweise haben Sie ein oder mehrere Eingabefeld/er ausgelassen...")
    ContinueLoop
    Exit
    EndIf
    InetGet("" & $Link,"C:\" & $Name & ".gif")
    EndSwitch
    WEnd

    [/autoit]
  • zum üben eignet sich jedes Script, egal wie sinnlos es ist :)

    sonst kann ich nur ein paar bemerkungen zum script selbst machen ;)
    dazu findest du ein paar Kommentare im script ;D

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    ; alle anderen Includes brauchst du gar nicht
    #Region ### START Koda GUI section ### Form=
    ; warum soll die GUI nicht Zentriert erscheinen?
    $Form1 = GUICreate("Bild-Downloader v1.0", 372, 154, -1, -1)

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

    ; Label's brauch man nicht in Variablen speichern, wenn sie später nicht mehr bearbeitet werden müssen
    ; als Label höhe würde auch 15 reichen oder 13
    GUICtrlCreateLabel("Suchen Sie zuerst ein Bild aus, und kopieren die URL des Bildes.", 16, 16, 313, 15)
    GUICtrlCreateLabel("Fügen Sie diesen Link nun in das erste Eingabefeld ein.", 16, 40, 278, 15)
    GUICtrlCreateLabel("Tragen Sie schließlich noch in das nächste Eingabefeld den Namen ein", 16, 64, 341, 15)
    GUICtrlCreateLabel("Link:", 16, 96, 27, 15)
    GUICtrlCreateLabel("Name des Bildes:", 16, 120, 86, 15)
    ; vllt. den hintergrund auf transparent setzten? (muss man nicht ist aber immer besser)

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

    $Input1 = GUICtrlCreateInput("", 48, 96, 177, 21)
    $Input2 = GUICtrlCreateInput("", 104, 120, 121, 21)
    $Button1 = GUICtrlCreateButton("Bild downloaden", 232, 96, 121, 49)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Switch GUIGetMsg() ; hier sprart man eine Variable, ist aber geschmacks sache :)
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Link = GUICtrlRead($Input1)
    $Name = GUICtrlRead($Input2)
    MsgBox(0,"Info","Ihr Bild wird nun unter dem Namen " & $Name & " im Datenträger C:\ abgespeichert")
    If $Link = "" Or $Name = "" Then
    MsgBox(16,"Error","Möglicherweise haben Sie ein oder mehrere Eingabefeld/er ausgelassen...")
    ContinueLoop
    ; Exit wird durch ContinueLoop gar nicht ausgeführt
    EndIf
    InetGet($Link, "C:\" & $Name & ".gif")
    ; die Anführungszeichen und das & wird nicht benötig
    ; was ist, wenn das bild ein anderes Dateiformat hat?
    ; oder wenn man es nicht unter C:\ speichern will?
    EndSwitch
    WEnd

    [/autoit]

    und sonst kann ich dir nur empfehlen
    bei Variable namen eindeutige bezeichnungen oder Array's nehmen

    es ist immer gut die variable art im Namen mit anzugeben
    $iZahl, i = integer
    $sName, s = string
    $aIrgentwas = Array
    $cInput = C = Control (Ctrl) => wie GUICtrlCreateButton

    aber sonst ist es für nen einstieg ja nicht schlecht :)

    mfg

    PS: das meiste ist nur als empfehlung gemeint, viele machen es auch anders :)
    ist nur als Ratschlag gemeint ;)

  • @Krabat danke für die ganzen Tipps, haben mir weitergeholfen... Jetzt gerade bin ich dabei einen Speicherort miteinzubauen, mein Problem:
    Ich möchte, dass wenn man auf diese Inputbox klickt, so ein Speicherort erscheint, dass man nicht alles eingeben muss. Ich weiss blöd ausgedrückt aber weiss nicht wie ichs sonst erklären soll :D

  • Falls sich schon wieder Leute wundern, weil lukasboy sich bedankte, wir machen das Projekt zsm...

  • Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $hGUI = GUICreate("Bild-Downloader v1.0", 372, 154, 192, 124)
    $Label1 = GUICtrlCreateLabel("Suchen Sie zuerst ein Bild aus, und kopieren die URL des Bildes.", 16, 16, 313, 17)
    $Label2 = GUICtrlCreateLabel("Fügen Sie diesen Link nun in das erste Eingabefeld ein.", 16, 40, 278, 17)
    $Label3 = GUICtrlCreateLabel("Tragen Sie schließlich noch in das nächste Eingabefeld den Namen ein", 16, 64, 341, 17)
    $lLink = GUICtrlCreateLabel("Link:", 16, 96, 27, 17)
    $lName = GUICtrlCreateLabel("Name des Bildes:", 16, 120, 86, 17)
    $iLink = GUICtrlCreateInput("", 48, 96, 177, 21)
    $iName = GUICtrlCreateInput("", 104, 120, 121, 21)
    $btnDownload = GUICtrlCreateButton("Bild downloaden", 232, 96, 121, 49)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnDownload
    GUICtrlSetState($btnDownload,$GUI_DISABLE)
    If GUICtrlRead($iLink) = '' Or GUICtrlRead($iName) = '' Then
    MsgBox(16,"Error","Möglicherweise haben Sie ein oder mehrere Eingabefeld/er ausgelassen...")
    GUICtrlSetState($btnDownload,$GUI_ENABLE)
    ContinueLoop
    Else
    $sFormat = StringRight(GUICtrlRead($iLink),4)
    MsgBox(2,"",$sFormat)
    InetGet(GUICtrlRead($iLink),@ScriptDir & '/' & GUICtrlRead($iName) & $sFormat)
    MsgBox(2,"","Done")
    GUICtrlSetData($iLink,'')
    GUICtrlSetData($iName,'')
    GUICtrlSetState($btnDownload,$GUI_ENABLE)
    Endif
    EndSwitch
    WEnd

    [/autoit]

    ;)

  • @Krabat danke aber habe vor ein paar Stunden ein wenig rumprobiert und habe etwas geschafft(man muss einen Ordner angeben und darin wirds gespeichert)

    [autoit]

    InetGet("" & $URL, $Speicherort & "\" & $Name & ".gif")

    [/autoit]
  • jo, aber

    wäre es nicht einfacher, wenn der user bei FileSaveDialog gezwungen wird den Dateinamen noch mit einzugeben? ^^

    [autoit]


    $path = FileSaveDialog("Speichern unter...", @DesktopDir, "Alle (*.*)", 16 + 2, "Default.png")
    InetGet($URL, $path)

    [/autoit]


    ind $path ist jetzt der vollständige Speicherort inklusive Dateiname ect.