Download_datei_info

  • Ich habe angefangen ein Download-programm zu schreiben, welches eine Datei mit hilfe eines angegebenen downloadlinks downloadet. Außerdem sollen Infos wie der Dateityp, die Dateigröße, die bereits gedownloadete größe angezeiget werden.

    Mein Problem: Ich weiß nicht wie ich an die Infos rankommen soll

    Bin jetzt schon den ganzen abend am rumsuchen und habe noch nix gefunden...

    Wäre echt nett, wenn mir jemand nen tipp geben könnte

    Hier könnt ihr euch meinen quellcode angucken den ich bereits schon geschrieben habe ^^
    (Ist mein erstes richtiges Programm)

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.12.1
    Author: Karroffel

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Administrator\Desktop\skripts\grafik\downloader.kxf
    $Form1 = GUICreate("Dowloader", 578, 292, 187, 126)
    $download_link_input = GUICtrlCreateInput("http://", 16, 48, 249, 21)
    $Starten = GUICtrlCreateButton("Starten", 312, 232, 100, 25, 0)
    $download_link_label = GUICtrlCreateLabel("Download_link :", 16, 16, 113, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 464, 232, 100, 25, 0)
    $Ziel_speichern_unter_label = GUICtrlCreateLabel("Ziehl speichern unter :", 16, 200, 156, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $download_info = GUICtrlCreateGroup("Download_Info", 312, 40, 249, 137)
    $load_size_label = GUICtrlCreateLabel("bereits geladen (in kB) :", 320, 112, 117, 17)
    $rest_size_label = GUICtrlCreateLabel("noch zu laden (in kB) :", 320, 152, 117, 17)
    $downloadsize_labe = GUICtrlCreateLabel("Downloadgröße (in kB) :", 320, 72, 118, 17)
    $downloadsize_label_var = GUICtrlCreateLabel("", 448, 72, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $load_size_var = GUICtrlCreateLabel("", 448, 112, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    $rest_size_label_var = GUICtrlCreateLabel("", 448, 152, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $DOWNLOAD = GUICtrlCreateLabel("DOWNLOAD", 368, 192, 123, 28)
    GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
    $Combo1 = GUICtrlCreateCombo("C:\Dokumente und Einstellungen\All Users\Desktop", 16, 232, 249, 25)
    $datei_info = GUICtrlCreateGroup("Datei_Info", 16, 88, 249, 89)
    $Dateityp_label = GUICtrlCreateLabel("Dateityp :", 24, 112, 49, 17)
    $Dateityp_label_var = GUICtrlCreateLabel("", 92, 112, 164, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $filesize_label = GUICtrlCreateLabel("Dateigröße :", 24, 152, 62, 17)
    $filesize_label_var = GUICtrlCreateLabel("", 92, 152, 164, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Main_Menu_1 = GUICtrlCreateMenu("&Datei")
    $A_Sec_Menu_1 = GUICtrlCreateMenuItem("Link einfügen", $Main_Menu_1)
    $A_Sec_Menu_2 = GUICtrlCreateMenuItem("Datei öffnen", $Main_Menu_1)
    $A_Sec_Menu_3 = GUICtrlCreateMenuItem("Programm schließen", $Main_Menu_1)
    $Main_Menu_2 = GUICtrlCreateMenu("&Info")
    $B_Sec_Menu_1 = GUICtrlCreateMenuItem("Archiv", $Main_Menu_2)
    $B_Sec_Menu_2 = GUICtrlCreateMenuItem("About...", $Main_Menu_2)
    $Main_Menu_3 = GUICtrlCreateMenu("&Help")
    $C_Sec_Menu_1 = GUICtrlCreateMenuItem("Help", $Main_Menu_3)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Abbrechen
    _Abbrechen()
    Case $Starten
    _Starten()
    EndSwitch
    WEnd

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

    Func _Abbrechen() ; Programm schließen
    Exit
    EndFunc

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

    Func _Starten() ; Programm Starten

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

    _link_open()
    _datei_typ()
    _download_size()
    _load_size()
    _rest_size()
    _speichern_unter()

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

    EndFunc

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

    Func _link_open()
    $link_input = GUICtrlRead ($download_link_input) ;öffnet die url aus der inputbox im standardbrowser
    shellExecute($link_input)
    EndFunc
    ;-----------------------------------------------------
    Func _datei_typ()
    ;;;;;;;;;;
    EndFunc
    ;-----------------------------------------------------
    Func _download_size()
    ;;;;;;;;;;
    EndFunc
    ;-----------------------------------------------------
    Func _load_size()
    ;;;;;;;;;;
    EndFunc
    ;-----------------------------------------------------
    Func _rest_size()
    ;;;;;;;;;
    EndFunc
    ;-----------------------------------------------------
    Func _speichern_unter()
    ;;;;;;;;;
    EndFunc

    [/autoit]
  • danke für die hilfe,
    jetzt muss ich nur noch rausfinden wie man den Dateityp rausfindet.
    Werde dann mal morgen weitersuchen, falls jemand ne idee hat wäre ich sehr dankbar

    geh jetzt mal schlafen und mache morgen früh weiter

  • StringRegExp !
    Wenn .mp3 drinne ist -> Mp3 Datei !

    Ich würde das mit einer While und einer Konfigurationsdatei machen !

    Also (in etwa) so:

    [autoit]


    While 1
    $read = Filereadline("config.txt")
    $regexp = StringRegExp($downloadurl,$read)
    If $regexp = 1 Then
    $filetyp = $read
    exitloop
    Endif
    Wend

    [/autoit]
    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • so habe vorhin mal ein bischen weitergemacht und nun komme ich bei einer Stelle nicht weiter... hier der vollständige quellcode

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>

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

    Dim $link_input, $i_filesize, $j_filesize, $i_loadsize, $i_restsize, $i_dateityp , $i_speichername

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\administrator\desktop\skripts\grafik\downloader\downloader_v2.kxf

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

    Global $SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS

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

    $Downloader = GUICreate("Downloader", 578, 413, 203, 154)
    $download_link_input = GUICtrlCreateInput("http://", 16, 48, 249, 21)
    GUICtrlSetCursor (-1, 5)
    $Starten = GUICtrlCreateButton("Starten", 312, 344, 100, 25, 0)
    GUICtrlSetCursor (-1, 3)
    $download_link_label = GUICtrlCreateLabel("Download_link :", 16, 16, 113, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 456, 344, 100, 25, 0)
    GUICtrlSetCursor (-1, 3)
    $Ziel_speichern_unter_label = GUICtrlCreateLabel("Ziehl speichern unter :", 16, 192, 156, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $download_info = GUICtrlCreateGroup("Download_Info", 312, 40, 249, 137)
    $load_size_label = GUICtrlCreateLabel("bereits geladen :", 320, 112, 115, 17)
    $rest_size_label = GUICtrlCreateLabel("noch zu laden :", 320, 152, 110, 17)
    $downloadsize_labe = GUICtrlCreateLabel("Downloadgröße :", 320, 72, 118, 17)
    $downloadsize_label_var = GUICtrlCreateLabel("", 448, 72, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $load_size_var = GUICtrlCreateLabel("", 448, 112, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    $rest_size_label_var = GUICtrlCreateLabel("", 448, 152, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetCursor (-1, 3)
    $spiechern_unter_combo = GUICtrlCreateCombo("C:\Dokumente und Einstellungen\All Users\Desktop", 16, 224, 249, 25)
    GUICtrlSetCursor (-1, 5)
    $datei_info = GUICtrlCreateGroup("Datei_Info", 16, 88, 249, 89)
    $Dateityp_label = GUICtrlCreateLabel("Dateityp :", 24, 112, 49, 17)
    $Dateityp_label_var = GUICtrlCreateLabel("", 92, 112, 164, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $filesize_label = GUICtrlCreateLabel("Dateigröße :", 24, 152, 62, 17)
    $filesize_label_var = GUICtrlCreateLabel("", 92, 152, 164, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetCursor (-1, 3)
    $Dateiname = GUICtrlCreateLabel("Dateiname :", 16, 256, 87, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Dateiname_combo = GUICtrlCreateCombo("Meine_download_datei", 16, 288, 249, 25)
    GUICtrlSetCursor (-1, 5)
    $Dateityp = GUICtrlCreateLabel("Dateityp :", 16, 320, 70, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Dateityp_combo = GUICtrlCreateCombo("rar", 16, 352, 249, 25)
    GUICtrlSetCursor (-1, 5)
    $prog_pic = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Administrator\Desktop\skripts\grafik\Downloader\prog_pic.jpg", 312, 200, 250, 105, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetCursor (-1, 3)
    $Main_Menu_1 = GUICtrlCreateMenu("&Datei")
    $A_Sec_Menu_1 = GUICtrlCreateMenuItem("Link einfügen", $Main_Menu_1)
    $A_Sec_Menu_2 = GUICtrlCreateMenuItem("Datei öffnen", $Main_Menu_1)
    $A_Sec_Menu_3 = GUICtrlCreateMenuItem("Programm schließen", $Main_Menu_1)
    $Main_Menu_2 = GUICtrlCreateMenu("&Info")
    $B_Sec_Menu_1 = GUICtrlCreateMenuItem("Archiv", $Main_Menu_2)
    $B_Sec_Menu_2 = GUICtrlCreateMenuItem("About...", $Main_Menu_2)
    $Main_Menu_3 = GUICtrlCreateMenu("&Help")
    $C_Sec_Menu_1 = GUICtrlCreateMenuItem("Help", $Main_Menu_3)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Abbrechen
    _Abbrechen()
    Case $Starten
    _Starten()
    EndSwitch
    WEnd

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

    Func _Abbrechen() ; Programm schließen
    Exit
    EndFunc

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

    Func _Starten() ; Programm Starten

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

    _link_open()
    _download_size()
    _load_size()
    _rest_size()
    _datei_info()
    _speichern_unter()
    _speicher_datei_name()
    _speicher_datei_typ()

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

    EndFunc

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

    Func _link_open()
    $link_input = GUICtrlRead ($download_link_input)
    InetGet( $link_input, $i_speichername & "." & $i_dateityp,1,1) ;downloadet die eine Datei die per url angegeben wurde und speichert sie ab
    EndFunc
    ;-----------------------------------------------------
    Func _datei_info()
    $j_filesize = $i_filesize /1024
    $j_filesize = Round ($j_filesize, 2)
    GUICtrlSetData ( $filesize_label_var, $j_filesize & " MB") ;zeigt die Dateigröße in MB an
    ;-----
    ;;;;;;;;;;;; ;zeigt den Dateitypen an (.exe / .rar / .usw)
    ;----
    EndFunc
    ;-----------------------------------------------------
    Func _download_size()
    $i_filesize = InetGetSize($link_input)
    $i_filesize = $i_filesize / 1024
    $i_filesize = Round ($i_filesize, 1)
    GUICtrlSetData($downloadsize_label_var,$i_filesize & " kB") ;zeigt die zu downloadende Menge an
    EndFunc
    ;-----------------------------------------------------
    Func _load_size()
    While @InetGetActive
    $i_loadsize = @InetGetBytesRead
    $i_loadsize = $i_loadsize /1024
    $i_loadsize = Round ($i_loadsize,1)
    GUICtrlSetData($rest_size_label_var, $i_loadsize & " kB") ;soll den Downloadvortschritt anzeigen
    Sleep(250)
    Wend
    EndFunc
    ;-----------------------------------------------------
    Func _rest_size()
    $i_restsize = $i_filesize - $i_loadsize
    $i_restsize = Round ($i_restsize, 1)
    GUICtrlSetData($rest_size_label_var,$i_restsize & " kB") ;zeigt die noch zu downloadende Menge an
    EndFunc
    ;-----------------------------------------------------
    Func _speichern_unter()
    ;;;;;;;;; ;Auswahl des pfades wo die datei gespeichert werden soll
    EndFunc
    ;-----------------------------------------------------
    Func _speicher_datei_name()
    $i_speichername = GUICtrlRead ($Dateiname_combo) ;gibt an wie die gedownloadete datei heißen soll
    EndFunc
    ;-----------------------------------------------------
    Func _speicher_datei_typ()
    $i_dateityp = GUICtrlRead ($Dateityp_combo) ;gibt an welchen dateityp die gedownloadete datei haben soll
    EndFunc

    [/autoit]

    nur versteh ich nicht was ich in dieser funktion falsch gemacht habe

    Spoiler anzeigen
    [autoit]

    Func _load_size()
    While @InetGetActive
    $i_loadsize = @InetGetBytesRead
    $i_loadsize = $i_loadsize /1024
    $i_loadsize = Round ($i_loadsize,1)
    GUICtrlSetData($rest_size_label_var, $i_loadsize & " kB") ;soll den Downloadvortschritt anzeigen
    Sleep(250)
    Wend
    EndFunc

    [/autoit]

    ich habe das ganze auch ein bischen anders ausprobiert um zu gucken, ob er überhaupt das bytesread macht, aber ich bekomme immer den wert -1 (error wert) zurück

    Spoiler anzeigen
    [autoit]

    Func _load_size()
    Sleep(250)
    While @InetGetActive
    TrayTip("Downloading", "Bytes = " & @InetGetBytesRead, 10, 16) ;soll den Downloadvortschritt anzeigen
    Sleep( 250)
    Wend

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

    MsgBox(0, "Bytes read", @InetGetBytesRead)
    EndFunc

    [/autoit]

    benutze ich aber fast genau den selben code in einer extra *.au3 datei

    Spoiler anzeigen
    [autoit]

    InetGet("http://www.freeware-download.com/cgi-bin/jump.cgi?ID=2041","123.exe", 1, 1)

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

    While @InetGetActive
    TrayTip("Downloading", "Bytes = " & @InetGetBytesRead, 10, 16)
    Sleep( 250)
    Wend

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

    MsgBox(0, "Bytes read", @InetGetBytesRead)

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

    dann klappt es ?(

    kann mir bitte jemnad erklären was ich falsh gemacht habe ?