Downloaddetails

  • Naja, du weist die Größe der Datei (InetGetBytes) und du weißt wieviel du schon hast (@InetGetBytesRead), also weißt du, wieviel du noch brauchst.
    Außerdem weist du die Zeit, die der Download schon gebraucht hat, also weist du den Speed...
    Das kannst du ja dann hochrechnen..

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • der Rest ist nur noch ein Dividieren durch 1000 / 60 / 24
    und der Abfrage, ob der jeweilige Wert größer 0,

    damit nicht da steht 0 Stunden und 0 Minuten ...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Das sollte erstmal funzen, es ermittelt die restliche Zeit in Millisekunden...
    Kanns grad nicht testen, aber es müsste gehen...

    [autoit]


    InetGet($url,$ziel)
    $starttime=TimerInit()
    $size=InetGetSize($url)
    AdlibEnable("_CheckDownloadDetails",1000)
    Func _CheckDownloadDetails()
    $needed=$size-@InetGetBytesRead
    $speed=@InetGetBytesRead/TimerDiff($starttime)
    $time=$needed/$speed
    EndFunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Ich habe hier mal ein Beispiel für die neue Beta:

    Spoiler anzeigen
    [autoit]

    ;#BETA
    ; Author: Prog@ndy
    #include<Date.au3>

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

    HotKeySet("{ESC}", "_Abbrechen")
    $Quelle = "http://download.mozilla.org/?product=firefox-3.5.1&os=win&lang=de"
    $Ziel = @DesktopDir & "\testff.exe"
    $InetGetHandle = InetGet($Quelle, $Ziel, 1, 1)
    Global $Timer = TimerInit(), $Timer0 = TimerInit()
    Global $LastRead = 0, $NewRead = 0, $TotalSize = InetGetInfo($InetGetHandle, 1)
    Global $kBs = 0

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

    While InetGetInfo() ; Solange es aktive Downloads gibt

    If TimerDiff($Timer) >= 999 Then
    $Timer = TimerInit()
    $NewRead = InetGetInfo($InetGetHandle, 0)
    $kBs = ($NewRead-$LastRead)/1024
    $LastRead = $NewRead
    EndIf

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

    $remainingTime = _FormatTime(Round(($TotalSize-$NewRead)/1024/$kBs))

    ToolTip( _
    "Quelle: " & $Quelle & @CRLF & _
    "Ziel: " & $Ziel & @CRLF & _
    "Geschwindigkeit: " & $kBs & " kB/s" & @CRLF & _
    "Vergangene Zeit: " & _FormatTime(TimerDiff($Timer0)/1000) & @CRLF & _
    "Verbleibende Zeit: " & $remainingTime & @CRLF , _
    Default, Default, _
    "Download:")

    Sleep(100)
    WEnd

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

    InetClose($InetGetHandle)

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

    Func _FormatTime($Secs)
    ; Prog@ndy
    Local $H, $M, $S
    _TicksToTime($Secs*1000, $H, $M, $S)
    Local $String = ""
    If $H Then $String &= $H & " Stunden "
    If $H Or $M Then $String &= $M & " Minuten "
    If $H Or $M Or $S Then $String &= $S & " Sekunden "
    Return StringTrimRight($String,1)
    EndFunc

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

    Func _Abbrechen()
    InetClose($InetGetHandle)
    FileDelete($Ziel)
    MsgBox(0, '', "Download abgebrochen")
    EndFunc

    [/autoit]


    Und für die stabile Version:

    Spoiler anzeigen
    [autoit]

    ; Author: Prog@ndy
    #include<Date.au3>

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

    HotKeySet("{ESC}", "_Abbrechen")
    $Quelle = "http://download.mozilla.org/?product=firefox-3.5.1&os=win&lang=de"
    $Ziel = @DesktopDir & "\testff.exe"
    InetGet($Quelle, $Ziel, 1, 1)
    Global $Timer = TimerInit(), $Timer0 = TimerInit()
    Global $LastRead = 0, $NewRead = 0, $TotalSize = InetGetSize($Quelle)
    Global $kBs = 1

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

    While @InetGetActive ; Solange es aktive Downloads gibt

    If TimerDiff($Timer) >= 999 Then
    $Timer = TimerInit()
    $NewRead = @InetGetBytesRead
    $kBs = ($NewRead-$LastRead)/1024
    $LastRead = $NewRead
    EndIf

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

    $remainingTime = _FormatTime(Round(($TotalSize-$NewRead)/1024/$kBs))

    ToolTip( _
    "Quelle: " & $Quelle & @CRLF & _
    "Ziel: " & $Ziel & @CRLF & _
    "Geschwindigkeit: " & $kBs & " kB/s" & @CRLF & _
    "Vergangene Zeit: " & _FormatTime(TimerDiff($Timer0)/1000) & @CRLF & _
    "Verbleibende Zeit: " & $remainingTime & @CRLF , _
    Default, Default, _
    "Download:")

    Sleep(100)
    WEnd

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

    Func _FormatTime($Secs)
    ; Prog@ndy
    Local $H, $M, $S
    _TicksToTime($Secs*1000, $H, $M, $S)
    Local $String = ""
    If $H Then $String &= $H & " Stunden "
    If $H Or $M Then $String &= $M & " Minuten "
    If $H Or $M Or $S Then $String &= $S & " Sekunden "
    Return StringTrimRight($String,1)
    EndFunc

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

    Func _Abbrechen()
    InetGet("abort")
    FileDelete($Ziel)
    MsgBox(0, '', "Download abgebrochen")
    EndFunc

    [/autoit]
  • naja wenn man schneller aktualisieren will gibt es auch noch was anderes

    hat letztn einer auf meine frage gepostet und habe ich verwendet. ist eig ganz ok

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <array.au3>

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

    Global $averagearr[1], $buffer = 0
    $aktuel = 2
    $Form1 = GUICreate("Lade datei runter! Ready...", 604, 81, 0, 0)
    $Progress1 = GUICtrlCreateProgress(15, 10, 561, 36)
    $Label1 = GUICtrlCreateLabel("", 15, 55, 566, 17)
    GUISetState(@SW_SHOW)

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

    $FileSize = InetGetSize("url")
    InetGet("url","C:\datei.datei",1,1)
    $curSize = 0
    $curFileSize = 0
    sleep(2500)
    While @InetGetActive
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then InetGet("abort")
    $iLastKbits = @InetGetBytesRead / 1024
    Sleep($aktuel *100)
    $curFileSize = @InetGetBytesRead
    $iNewKbits = $curFileSize / 1024
    $speed = ($iNewKbits - $iLastKbits) / ($aktuel / 10)
    GUICtrlSetData($Progress1, $curSize)
    $curSize = $curFileSize * 100
    $curSize = $curSize / $FileSize
    $curSize = Ceiling($curSize)
    $curFileSize = Round($curFileSize / 1024 / 1024, 1)
    WinSetTitle($Form1, "","Fertiggestellt: " & $curSize & "%")
    GUICtrlSetData($Label1, $curFileSize & " MB - " & Round($FileSize / 1024 / 1024, 1) & " MB (" & $curSize & "%) Zeit: " & round(_average($speed) / 60,0) & " Minuten" & " " & $speed & ' Kb/s')

    WEnd

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

    Func _average($a)
    If $a <> 0 Then
    _ArrayAdd($averagearr, $a)
    For $i = 1 To UBound($averagearr) - 1
    $buffer += $averagearr[$i]
    Next
    $buffer /= UBound($averagearr) - 1
    $buffer2 = $buffer
    $buffer = 0
    Return Round((($FileSize - $curFileSize) / 1024) / $buffer2)

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

    EndIf

    EndFunc ;==>_average

    [/autoit]

    klappt sehr gut ...