JDownloader Community - Appwork GmbH
 

Reply
 
Thread Tools Display Modes
  #61  
Old 29.10.2016, 21:38
Mister Floppy Mister Floppy is offline
JD Addict
 
Join Date: May 2009
Location: Erde
Posts: 150
Default

Quote:
Originally Posted by pspzockerscene View Post

Bedenkt bitte, dass das Script ... auch greift, wenn man den Speed manuell mal limitiert --> Das gehört hier eigentlich noch rein.

Grüße, psp
Hmmm.... okay, man könnte als zusätzliche Bedingung für die Skript-Ausführung sicherlich noch "!isDownloadControllerPaused()" mit reinnehmen, d. h. also:
Code:
if (isDownloadControllerRunning() && !isDownloadControllerStopping() && !isDownloadControllerPaused()) {
Das Problem ist dann nur, dass nach erneuter Betätigung der "Pause"-Schaltfläche es eine gewisse Zeit dauert, bis die Download-Geschwindigkeit wieder Fahrt aufnimmt, und dem Skript dann irgendwie bekanntgegeben werden müsste, wie lange die Beendigung der Pause her ist, damit die Überprüfung der Download-Geschwindigkeit für eine ausreichend lange Wartezeit ausgesetzt werden kann.

Deshalb meine Frage: ist die Dauer nach (bzw. der Zeitpunkt der) Beendigung der Pause irgendwie in einer Variable abfragbar?

Last edited by Mister Floppy; 30.10.2016 at 02:50.
Reply With Quote
  #62  
Old 30.10.2016, 06:48
Mister Floppy Mister Floppy is offline
JD Addict
 
Join Date: May 2009
Location: Erde
Posts: 150
Default Vielleicht ist das bereits die Lösung - Feedback erwünscht!

So, ich habe glaube ich bereits einen "Work-around" für das in meinem vorherigen Beitrag genannte Problem mit der Pausierung und damit manuell limitierten Verbindungsgeschwindigkeit gefunden:

Ist die Schaltfläche "Pause" gedrückt worden, wartet das Skript solange, bis diese erneut betätigt wird, und daran anschließend noch eine gewisse Zeit ab, um der zuvor manuell gebremsten Verbindungsgeschwindigkeit Gelegenheit zu geben, sich wieder zu "erholen" - bei mir sind hierfür 15 Sekunden ausreichend;
da es selbst bei einem als "Trigger" engmaschig eingestellten "Intervall" von 1000 ms (= 1 Sekunde) theoretisch vorkommen könnte, dass die Skript-Ausführung in dem Moment, in dem man die "Pause"-Schaltfläche das erste Mal betätigt, diese Schritte bereits passiert hat, habe ich zur Sicherheit auch noch einmal einen entsprechenden Check unmittelbar bei der Überprüfung der Verbindungsgeschwindigkeit mit eingebaut, um diese Situation ebenfalls abzufangen.

Ich poste hier nun meine Endfassung des Skripts, die m. E. allen Anforderungen entspricht, und würde mich über ein Feedback und ggf. Verbesserungsvorschläge Eurerseits sehr freuen!

Bitte beachten: Bei diesem Skript muss die Option "Synchronous execution of script" gesetzt sein!!!!!

Code:
//überprüfen, ob Downloads stattfinden
if (isDownloadControllerRunning() && !isDownloadControllerStopping()) {
    //bei ggf. manuell limitierter Verbindungsgeschwindigkeit bis Beendigung der Pause abwarten und anschließend Erholungszeit einplanen
    if (isDownloadControllerPaused()) {
        while (isDownloadControllerPaused()) {
             sleep(1);
        }
        sleep(15000);
    }
    langsam = false;
    fortsetzbar = true;
    laufend = getRunningDownloadLinks();
    //alle laufenden Downloads überprüfen
    for (i = 0; i < laufend.length; i++) {
        //überprüfen, ob es sich um einen fortsetzbaren Download handelt
        if (!laufend[i].isResumeable() && laufend[i].getBytesLoaded() > 0) {
            fortsetzbar = false;
            break;
        }
        //überprüfen, ob es sich um einen Zippyshare-Download handelt
        if (laufend[i].getHost() == 'zippyshare.com') {
            //überprüfen, ob der Download mindestens seit 30 Sekunden läuft
            if (laufend[i].getDownloadDuration() > 30000) {
                //überprüfen, ob die Verbindungsgeschwindigkeit unter 500kb/s liegt und nicht gerade manuell limitiert wird
                if (laufend[i].getSpeed() < 500 * 1024 && !isDownloadControllerPaused()) {
                    langsam = true;
                }
            }
        }
    }
    //reconnecten, wenn Zippyshare-Verbindungsgeschwindigkeit langsam ist und Downloads bei weiteren Filehostern fortsetzbar sind
    if (langsam && fortsetzbar) {
        requestReconnect();
        setDownloadsPaused(true);
        sleep(60000);
        setDownloadsPaused(false);
    }
}

Last edited by Mister Floppy; 24.02.2017 at 17:52. Reason: Definition "nicht fortsetzbarer Download" korrigiert; CPU-Auslastung verbessert
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +2. The time now is 11:13.
Provided By AppWork GmbH | Privacy | Imprint
Parts of the Design are used from Kirsch designed by Andrew & Austin
Powered by vBulletin® Version 3.8.10 Beta 1
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.