Download informationen aus FireFox auslesen

  • Hallo zusammen:

    Will mir mal zwecks übung, nen eigenen Download-Manager für Firefox erstellen.
    was gibts denn für möglichkeiten (befehle) bei denen man aus Firefox folgendes auslesen kann:
    - wenn ein download startet,
    - wenn ein download abgebrochen wurde,
    - wenn ein download erfolgreich beendet wurde,
    - wenn alle DLs erfolgreich beendet wurden ??

    also zb. Firefox meldet ja unten in der taskleiste "alle downloads beendet" - das würde ich gern auslesen lassen und in ein script das mit FF.au3 arbeitet einfügen lassen und verarbeiten. (als beispiel)

    greetz

    3 Mal editiert, zuletzt von MaxSony (31. Oktober 2010 um 15:53)

  • hi

    danke für den link, hab es nach etwas längerer suche nach der erstellung dieses threads, dann auch gefunden ^^

    werd es morgen mal ausprobieren, aber sieht aufjedenfall sehr vielversprechend aus.

    melde mich dann bei dir falls es probs gibt ;) vielen dank auch dafür ;)

    greetz

  • Hi

    Wollte jetzt mal mein script in soweit verändern, dass, wenn der download aus irgendeinem grund cancelled , - mein prog sich das merkt und sofort nochmal probiert.

    Hab mal zum test nen Download abgebrochen. - Jedoch wird dieser nicht resumed. - woran könnte es liegen?
    kann man sich des 2 OR 3 sparen ? bzw reicht eines von beidem? - besagt ja beides "download cancelled"

    hab hier mal den relevanten teil aus meinem script für euch zur kontrolle- was da nicht stimmen könnte - er klickt einfach nicht auf: "Nochmal versuchen"

    [autoit]

    Global $DownloadID

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

    While _FF_DM_IsDownloading()
    $DownloadID = _FF_DM_GetActiveDownloadsIDs()
    Sleep(1000)
    WEnd

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

    If _FF_DM_GetDownloadState($DownloadID) = 2 OR 3 Then
    _FF_DM_DownloadRetry($DownloadID)
    EndIf

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

    While _FF_DM_IsDownloading()
    Sleep(1000)
    WEnd

    [/autoit]

    Der Code den ich meine: _FF_DM_DownloadRetry($DownloadID)

    macht er einfach nicht. - der befehl _FF_DM_GetActiveDownloadsIDs() bekommt nur bei aktiven downloads eine ID - deshalb sitzt der command in der while schleife, bei welcher das prog drauf wartet, bis der download abgeschlossen ist.

    Reihenfolge zur verdeutlichung:

    1. Download starten
    2. ID von download bekommen
    3. Warten bis download fertig ist
    4. überprüfen warum der download fertig ist
    - wenn download ohne fehler beendet wurde --> script normal weiter durcharbeiten
    - wenn download als gecancelled eingetragen wurde ---> _FF_DM_DownloadRetry($DownloadID) ausfühen
    5. warten bis download abgeschlossen ist
    6. script ganz normal weiterarbeiten lassen (nicht mehr relevant)

    wer entdeckt etwas?

    PS.: ist es möglich, das das script auch beim programmstart überprüft ob vorher schonmal downloads gecancelled wurden, die noch nicht komplett runtergeladen wurden, und diese dann runterlädt? - muss man vermutlich dann beim vorherigen script ende in ne ini schreiben lassen, oder?
    greetz

    Einmal editiert, zuletzt von MaxSony (27. Oktober 2010 um 18:00)

  • Also ich hoffe das ist ok, dass ich den thread hier mal pushe


    Denk schon, sonst wär mir der Thread nicht aufgefallen ;)

    Also mir sind da 2 Fehler aufgefallen:
    1)

    [autoit]

    If _FF_DM_GetDownloadState($DownloadID) = 2 OR 3 Then

    [/autoit]


    Dieser If;-Zweig wird immer ausgeführt, da

    [autoit]

    OR 3

    [/autoit]

    immer

    [autoit]

    True

    [/autoit]

    ist 8|
    Probiers mal so:

    [autoit]


    $DownloadState = _FF_DM_GetDownloadState($DownloadID)
    If $DownloadState = 2 OR $DownloadState = 3 Then

    [/autoit]

    2)

    [autoit]

    $DownloadID = _FF_DM_GetActiveDownloadsIDs()

    [/autoit]


    Die Funktion gibt dir ein Array zurück!
    Du behandelst den Rückgabewert aber so, als ob sie eine ID enthält

    [autoit]

    _FF_DM_GetDownloadState($DownloadID)

    [/autoit]


    Also vorher in das Array gehen und die ID holen:
    (Achtung! Dirty Hack! Nur zum Testen)

    [autoit]

    $DownloadID = $DownloadID[1]

    [/autoit]
    So klappts bei mir
    [autoit]

    #include <_ff_dm.au3>

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

    Local $DownloadID
    Local $DownloadState
    _FFConnect()
    While 1
    While _FF_DM_IsDownloading()
    $DownloadID = _FF_DM_GetActiveDownloadsIDs()
    Sleep(1000)
    WEnd
    $DownloadID = $DownloadID[1]
    $DownloadState = _FF_DM_GetDownloadState($DownloadID)
    If $DownloadState = 2 OR $DownloadState = 3 Then
    _FF_DM_DownloadRetry($DownloadID)
    Else
    ExitLoop
    EndIf
    WEnd

    [/autoit]