Datei download mit _WinHttp.au3

  • Hy,

    ich versuche gerade einen Downloader für Netload.in zu schreiben und benötige ein bisschen Hilfe dabei.
    Also das einloggen funktioniert schonmal.
    Die Datei kann ich auch mit folgendem Befehl runter laden.

    [autoit]


    Do
    $data &= _WinHttpReadData($h_openRequest, 2)
    Until @error = -1
    Return $data

    [/autoit]

    Wenn ich jetzt ein Video runterlade und es mit FileWrite speichere, hab ich eine Datei die von der größe her passen könnte (z.B. test.avi), die ich aber nicht abspielen kann.
    Wie muss ich diese Datei speichen bzw. gibt es vll schon Probleme beim runterladen?
    Interessant wäre auch wie ich beim Befehl "_WinHttpReadData" die Downloadgeschwindigkeit anzeigen lassen kann, für Restzeitberechnung.

    thx

  • Morgen , also bezüglich des Speicherns kann ich dir leider nicht helfen aber bei deinem anderen Problem, du musst dir zb mit

    [autoit]

    InetGetSize

    [/autoit]

    die größe der Datei holen, und dann brauchst du nur noch eine Normale Dreisatzrechnung d.h.

    zum setzen einer Progressbar zb:

    Größe der Datei = 100
    Größe der Herruntergeladenen Datei im Moment = x

    wobei X den wert in der Progressbar darstellt.

    und beim Downloadspeer errechnen könntest du immer die Größe deiner herruntergeladenen Datei abfragen und nach einer Sekunde das selbe, dann die Differenz ziehen und schon haste deinen Speed ;)

    Gruß Marvin

  • Also InetGetSize funktioniert nicht da ich mich bei Netload über Winhttp erstmal einloggen muss um Zugriff zu haben.
    Ich hab jetzt meinen Fehler gefunden, es lag an der Variablen sowie an der Speicherung der Datei.

    Spoiler anzeigen
    [autoit]


    $vData = Binary("")
    Do
    $vData &= _WinHttpReadData($h_openRequest, 2)
    Until @error

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

    $hFile = FileOpen(@ScriptDir & "\test7.wmv", 18)
    FileWrite($hFile, $vData)
    FileClose($hFile)

    [/autoit]

    So muss es aussehen.

    Nun hab ich aber schon das nächste Problem, wenn ich damit etwas runterlade, brauche ich für 250MB über 30Min, mit wget brauche ich ca. 20Min und mit Crpytload ca. 3Min.
    Weiß jemand warum es solche Geschwindigkeitsunterschiede gibt und wie ich diese beheben kann?

    mfg

  • Moin, ich denke es liegt daran das Cryptload mehrer (chunks) generiert, also mehrere Verbindungen um die Datei zu laden somit geht es schneller.
    Wie man sowas aber mit Winhttpreaddata hinbekommt weiß ich leider nicht :/
    Gruß Marvin