JDownloader Community - Appwork GmbH
 

Reply
 
Thread Tools Display Modes
  #1  
Old 09.06.2019, 19:55
yondu yondu is offline
DSL Light User
 
Join Date: Jun 2019
Posts: 33
Default Automatische Erhöhung des Tageslimits

Ich betreibe Account-Sharing. Deswegen habe ich das Tageslimit für Share-Online auf 50GB gelegt. Jedoch lädt die andere Partei nicht jeden Tag etwas. Somit gehen 50GB verloren. Könntet ihr eine Einstellungsmöglichkeit implementieren, die das Tageslimit eine halbe Stunde vor Mitternacht auf 100GB erhöht und die Downloads startet?
Reply With Quote
  #2  
Old 10.06.2019, 19:13
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,325
Default

Quote:
Originally Posted by yondu View Post
Könntet ihr eine Einstellungsmöglichkeit implementieren, die das Tageslimit eine halbe Stunde vor Mitternacht auf 100GB erhöht und die Downloads startet?
Allgemein dürfte es mit dem Event Scripter gehen. Allerdings hab ich aktuell weder einen aktiven SO Account noch die nötigen Infos um den Wert (Trafficlimit) in Javascript zu setzen. Infos hab ich bei mgpai bzw. unter
https://board.jdownloader.org/showpo...&postcount=775 angefordert.

@mgpai
And plugin settings with Event Scripter possible? Example?

Like set TRAFFIC_LIMIT to 90 for share-online.biz

Thanks!
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 10.06.2019 at 23:26.
Reply With Quote
  #3  
Old 10.06.2019, 21:10
mgpai mgpai is offline
Script Master
 
Join Date: Sep 2013
Posts: 1,529
Default

@thecoder2012: myjd API namespace "plugins" via calllAPI
Reply With Quote
  #4  
Old 10.06.2019, 22:08
yondu yondu is offline
DSL Light User
 
Join Date: Jun 2019
Posts: 33
Default

Danke für eure Antworten. Leider weiss ich nicht, wie JavaScript funktioniert :( Zudem wird bei den Triggern im Ereignis-Skripter keine Möglichkeit zur Eingabe eines täglichen Zeitpunktes zur Ausführung angegeben.
Reply With Quote
  #5  
Old 10.06.2019, 23:22
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,325
Default

Quote:
Originally Posted by yondu View Post
Leider weiss ich nicht, wie JavaScript funktioniert :( Zudem wird bei den Triggern im Ereignis-Skripter keine Möglichkeit zur Eingabe eines täglichen Zeitpunktes zur Ausführung angegeben.
Beim Ereignis-Skripter wird dies entsprechend programmiert als Quellcode in Javascript. Also im Prinzip wird ein Interval erzeugt und dann im Skript geprüft ob die Zeit erreicht ist.

Jeweils dann wenn der Traffic vorhanden und Zeit erreicht wäre, dann auf 100 setzen und ab Mitternacht wieder auf 50. Leider bekomme ich es grad auch nicht hin, da ich vermutlich irgendetwas anders machen muss mit dem Aufruf callAPI. Eventuell kann mgpai helfen, da er der Experte dafür ist. Der untere Abschnitt ist nur zur Klärung damit hoffentlich dein Skript in Zukunft erhälst.

@mgpai
Quote:
Originally Posted by mgpai View Post
@thecoder2012: myjd API namespace "plugins" via calllAPI
Yes but it not works in my tests. I have only "false" as return value with callAPI+plugins+set/reset.

Code test as example:
Code:
// Pluginlist
var pluginlist = callAPI("plugins", "list", {});
//alert(pluginlist);

// Full pluginquery
var pluginquery = callAPI("plugins", "query", {
    "defaultValues": true,
    "description": true,
    "enumInfo": true,
    "includeExtensions": true,
    "values": true
});
//alert(pluginquery);

for (i = 0; i < pluginquery.length; ++i) {
    if (pluginquery[i].storage == "share-online.biz" && pluginquery[i].key == "TRAFFIC_LIMIT") {
        //alert(pluginquery[i]);
    }
}

var displayName = "share-online.biz";//wrong?
var interfaceName = "deprecated.jd.plugins.hoster.ShareOnlineBiz";//wrong?
//var interfaceName = "jd.plugins.hoster.ShareOnlineBiz";
var key = "TRAFFIC_LIMIT";//wrong?

var pluginCheck = callAPI("plugins", "set", interfaceName, displayName, key, {"value": 50});//wrong?
//var pluginCheck = callAPI("plugins", "reset", interfaceName, displayName, key);//same
alert(pluginCheck);
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.
Reply With Quote
  #6  
Old 11.06.2019, 06:46
mgpai mgpai is offline
Script Master
 
Join Date: Sep 2013
Posts: 1,529
Default

Quote:
Originally Posted by thecoder2012 View Post
Yes but it not works in my tests. I have only "false" as return value with callAPI+plugins+set/reset.
You were pretty much there.

Code:
var tempLimit = 100; // <- user specified

var interfaceName = "deprecated.jd.plugins.hoster.ShareOnlineBiz";
var displayName = "share-online.biz";
var key = "TRAFFIC_LIMIT";
var values = ["100", "99", "98", "97", "96", "95", "90", "80", "70", "60", "50", "40", "30", "20", "10"];

var oldValue = callAPI("plugins", "get", interfaceName, displayName, key); // Store old value
callAPI("plugins", "set", interfaceName, displayName, key, tempLimit.toString()); // Set temp value
callAPI("plugins", "set", interfaceName, displayName, key, values[oldValue]); // Restore old value
Reply With Quote
  #7  
Old 11.06.2019, 13:56
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,325
Default

@mgpai
Thanks!

@yondu
Kannst du einmal im Ereignis-Skripter (Event Scripter) folgende 2 Zeilen ausführen und den Abschnitt mit Share-online posten (text oder screenshot)?
Code:
var premiumAccounts = callAPI("accountsV2", "listAccounts", {"enabled": true,"trafficLeft": true,"trafficMax": true});
alert(premiumAccounts);
Ich habe wie gesagt keinen SO Account derzeit und brauch die Werte wie trafficLeft und trafficMax daraus für den Test davon. Auch um zu sehen ob es dabei überhaupt sinnvoll enthalten ist. Andere Daten interessieren dabei nicht.
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 11.06.2019 at 14:01.
Reply With Quote
  #8  
Old 11.06.2019, 17:55
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,236
Default

@thecoder2012: werte sind traffic in bytes, jedoch hat javascript selbst nur doubles
Quote:
JavaScript uses double-precision floats for numbers, and they have about 15 digits of precision (in base 10).
und somit wird der traffic als lange gleitkommazahl ausgegeben. aber javascript sollte das bei größer/logik berechnungen automatisch umwandeln können
__________________
JD-Dev & Server-Admin
Reply With Quote
  #9  
Old 11.06.2019, 18:06
yondu yondu is offline
DSL Light User
 
Join Date: Jun 2019
Posts: 33
Default



Ich habe das im Testlauf machen lassen. Wenn ich das Dialogfeld schliesse und im Reiter Accountverwaltung nachschaue, werden 60GB Traffic angezeigt.
Reply With Quote
  #10  
Old 11.06.2019, 20:29
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,236
Default

@yondu: Danke für den Screenshot!
__________________
JD-Dev & Server-Admin
Reply With Quote
  #11  
Old 11.06.2019, 23:30
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,325
Default

Habe mal versucht ein solches Skript zu bauen aber ist ungetestet.
Allgemein Interval wählen und auf 60000 stellen. Mit tempLimit stellst ein ab wie viel übrige Gigabytes die Downloads gestartet und worauf am Ende das Limit wieder gesetzt werden soll.

Meines Wissens kann man den Scheduler nicht für den Ereignis Skripter (Event Scripter) nutzen um eine gezielte Zeit einzustellen. Aus dem Grund hab ich die Startzeit und die Resetzeit als Uhrzeit im Skript hinterlegt.

Code:
// Change SO daily limit
// Trigger: Interval
var tempLimit = 50;
var starttime = "23:30"; //23:30 Uhr
var resettime = "00:00"; //00:00 Uhr

var displayName = "share-online.biz";
var interfaceName = "jd.plugins.hoster.ShareOnlineBiz";
var key = "TRAFFIC_LIMIT";
var values = ["100", "99", "98", "97", "96", "95", "90", "80", "70", "60", "50", "40", "30", "20", "10"];
var trafficLeft = "";
var trafficMax = "";
var defaultValue = "";
var value = "";

var hh = new Date().getHours();
var mm = new Date().getMinutes();
hh = (hh < 10) ? "0" + hh : hh;
mm = (mm < 10) ? "0" + mm : mm;
var checktime = hh + ":" + mm;
var long1;

if (checktime == starttime || checktime == resettime) {
    var premiumAccounts = callAPI("accountsV2", "listAccounts", {
        "enabled": true,
        "trafficLeft": true,
        "trafficMax": true
    });
    for (i = 0; i < premiumAccounts.length; ++i) {
        if (premiumAccounts[i].hostname == "share-online.biz" && premiumAccounts[i].enabled == true) {
            long1 = [premiumAccounts[i].uuid];
            trafficLeft = (premiumAccounts[i].trafficLeft / 1024 / 1024 / 1024);
            //trafficMax = (premiumAccounts[i].trafficLeft / 1024 / 1024 / 1024);
            break;
        }
    }

    var pluginquery = callAPI("plugins", "query", {
        "defaultValues": true,
        "description": true,
        "enumInfo": true,
        "includeExtensions": true,
        "values": true
    });
    for (i = 0; i < pluginquery.length; ++i) {
        if (pluginquery[i].storage == "share-online.biz" && pluginquery[i].key == "TRAFFIC_LIMIT") {
            defaultValue = pluginquery[i].defaultValue;
            value = pluginquery[i].Value;
            break;
        }
    }


    if (checktime == starttime) {
        //if (trafficLeft <= tempLimit) {
        //if ((100-trafficLeft) >= tempLimit) {
        if (trafficLeft >= tempLimit) {
            callAPI("plugins", "set", interfaceName, displayName, key, defaultValue.toString());
        } else {
            callAPI("plugins", "set", interfaceName, displayName, key, tempLimit.toString());
        }
        sleep(3000);
        callAPI("accountsV2", "disableAccounts", long1);
        sleep(5000);
        callAPI("accountsV2", "enableAccounts", long1);
        startDownloads();/*Start Downloads*/
    }
    if (checktime == resettime) {
        callAPI("plugins", "set", interfaceName, displayName, key, tempLimit.toString());
        sleep(3000);
        callAPI("accountsV2", "disableAccounts", long1);
        sleep(5000);
        callAPI("accountsV2", "enableAccounts", long1);
        stopDownloads();/*Stop Downloads*/
    }
}

Skript um SO Accounts schneller zu aktualisieren auch ohne Workaround:
Code:
// SO with faster account refresh
// Trigger: Interval (e.g. 600000ms = 10min)
var premiumAccounts = callAPI("accountsV2", "listAccounts", {
    "enabled": true,
    "userName": true,
});
for (i = 0; i < premiumAccounts.length; ++i) {
    if (premiumAccounts[i].hostname == "share-online.biz" && premiumAccounts[i].enabled == true) {
        var long1 = [premiumAccounts[i].uuid];
        callAPI("accountsV2", "refreshAccounts", long1, true);
    }
}
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 11.07.2019 at 17:36.
Reply With Quote
  #12  
Old 12.06.2019, 11:16
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,236
Default

Quote:
Originally Posted by thecoder2012 View Post
Meines Wissens kann man den Scheduler nicht für den Ereignis Skripter (Event Scripter) nutzen um eine gezielte Zeit einzustellen. Aus dem Grund hab ich die Startzeit und die Resetzeit als Uhrzeit im Skript hinterlegt.
Ja, derzeit gibts da keine Pläne für *Überschneidungen* beider Erweiterungen und der Eventscripter ist zu Bevorzugen, da mächtiger und flexibler.
__________________
JD-Dev & Server-Admin
Reply With Quote
  #13  
Old 12.06.2019, 21:27
yondu yondu is offline
DSL Light User
 
Join Date: Jun 2019
Posts: 33
Default

Dankeschön! Ich habe das Skript gespeichert und aktiviert, werde die Download-Liste füllen und heute Abend um 23.45 Uhr nochmals in den JDownloader reinschauen.

EDIT: Habe während des einen Downloads den SO-Account "aktualisiert" und er ist wieder auf 60GB/60GB gesprungen. Hätte ich wohl nicht machen sollen, werde morgen nochmals testen ohne rumfummeln.

EDIT: Habe den Download nachher gestoppt und nach einiger Zeit die korrekte Anzeige von "0b/60GB left" bekommen. Das Skript habe ich so umgeschrieben, dass es um 22.30 Uhr zündet. Es hat dann nach einer Erlaubnis gefragt, die ich erteilt habe. Leider blieb die Einstellung auf 60GB und somit wurde kein weiterer Traffic angezeigt. Aus Jux habe ich das Skript auf 100GB Traffic und 22.42 Uhr umgeschrieben, und just hat es nach erneut erteilter Erlaubnis geklappt. Neu sind 100GB Trafficlimit eingestellt und JD saugt munter weiter. Meine Frage ist nun, wie ich es hinkriege, dass um Mitternacht wieder 60GB gesetzt werden.

Last edited by yondu; 12.06.2019 at 23:46.
Reply With Quote
  #14  
Old 14.06.2019, 14:53
yondu yondu is offline
DSL Light User
 
Join Date: Jun 2019
Posts: 33
Default

Das Problem ist nicht 100% solved, auch wenn schon sehr viel steht. Würde mich riesig freuen, wenn sich ein Sachverständiger die Lage im letzten Post nochmal anschauen würde
Reply With Quote
  #15  
Old 14.06.2019, 19:56
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,236
Default

Hm, 60/60GB bedeutet es sind noch 60GB frei. Da die Bedingung
if (trafficLeft >= tempLimit)
ist und tempLimit 50gb ist, kann diese Bedingung ja nie eintreten? wenn nicht mind 50GB noch übrig sind.
Letztendlich müsste es doch reichen, einfach um 22.30 auf 100 zu switchen und irgendwann nach Mitternacht wieder auf 50 , oder nicht?
__________________
JD-Dev & Server-Admin
Reply With Quote
  #16  
Old 22.06.2019, 12:07
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,325
Default

Möchte auch darauf hinweisen wenn es um sehr schnelle Downloads handelt, dann mag der JDownloader korrekt den Start von Downloads berechnen aber SO erlaubt bis zu ca. 15 GB mehr Traffic am Tag in Tests, wenn die Downloads bereits erfolgreich noch laufen.
Der Wert bei SO kann ins Minus gehen und wird um Mitternacht zurückgesetzt.

Quote:
Originally Posted by yondu View Post
EDIT: Habe während des einen Downloads den SO-Account "aktualisiert" und er ist wieder auf 60GB/60GB gesprungen. Hätte ich wohl nicht machen sollen, werde morgen nochmals testen ohne rumfummeln.
Also von Hand würde ich den SO-Account nicht aktualisieren sonst müsste man noch eine zusätzliche Prüfung einbauen, da sich sonst ggf. der Abruf auch überschnitten haben könnte bei der Umstellung. Ähnliche Probleme könnte es geben wenn das System verlangsamt wäre.

Quote:
Originally Posted by yondu View Post
EDIT: Habe den Download nachher gestoppt und nach einiger Zeit die korrekte Anzeige von "0b/60GB left" bekommen. Das Skript habe ich so umgeschrieben, dass es um 22.30 Uhr zündet. Es hat dann nach einer Erlaubnis gefragt, die ich erteilt habe. Leider blieb die Einstellung auf 60GB und somit wurde kein weiterer Traffic angezeigt. Aus Jux habe ich das Skript auf 100GB Traffic und 22.42 Uhr umgeschrieben, und just hat es nach erneut erteilter Erlaubnis geklappt.
Falls die Frage nach der Erlaubnis stört, wenn man nur die Uhrzeit bzw. Limit ändert, dann kannst in die oberste Zeile
disablePermissionChecks(); schreiben.

Quote:
Originally Posted by yondu View Post
Neu sind 100GB Trafficlimit eingestellt und JD saugt munter weiter. Meine Frage ist nun, wie ich es hinkriege, dass um Mitternacht wieder 60GB gesetzt werden.
Wie Jiaz schon vorgeschlagen hat könnte man das Skript aufteilen einmal für aktivieren und einmal für deaktivieren. So das eine Deaktivierung immer erfolgt aber in der Theorie sollte das auch jetzt schon so sein.

Quote:
Originally Posted by Jiaz View Post
Hm, 60/60GB bedeutet es sind noch 60GB frei. Da die Bedingung
if (trafficLeft >= tempLimit)
Also man kann die Bedingung auch einfach umdrehen ala if (trafficLeft <= tempLimit) oder verändern if ((100-trafficLeft) >= tempLimit), falls es anders gewünscht ist. Hab keinen SO Account und kann es aus dem Grund nicht testen.

Hab oben im Skript mal paar Pausen eingefügt ggf. muss es noch vergrößert werden. In einem anderen Thema hat ein Skript ohne Pausen nicht funktioniert weil das System zu langsam war (damit auch die Requests).

Auf dem eigenen System muss ich oft ein Timeout unter 1s senken damit ich überhaupt einen Timeout mal erlebe.

Quote:
Originally Posted by Jiaz View Post
Letztendlich müsste es doch reichen, einfach um 22.30 auf 100 zu switchen und irgendwann nach Mitternacht wieder auf 50 , oder nicht?
Wäre zumindestens einfacher.

Quote:
Originally Posted by Jiaz View Post
Ja, derzeit gibts da keine Pläne für *Überschneidungen* beider Erweiterungen und der Eventscripter ist zu Bevorzugen, da mächtiger und flexibler.
Gehören erstellte Tickets nicht zu den Plänen?

Weiß auch nicht wie schwierig es ist. Also ein Skript im Ereignis-Skripter (Eventscripter) vom Scheduler aus zu starten im Code.
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 22.06.2019 at 12:16.
Reply With Quote
  #17  
Old 24.06.2019, 19:06
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,236
Default

Quote:
Originally Posted by thecoder2012 View Post
Gehören erstellte Tickets nicht zu den Plänen?
Sorry, kann mir auch nicht alles merken :p


Quote:
Originally Posted by thecoder2012 View Post
Weiß auch nicht wie schwierig es ist. Also ein Skript im Ereignis-Skripter (Eventscripter) vom Scheduler aus zu starten im Code.
Wie an anderer Stelle schon geschrieben, macht es mehr Sinn den Eventscripter weiter auszubauen, statt dem veralteten Scheduler. Auch sind Kopplungen zwischen Erweiterungen immer unschön/kompliziert, da auch der Fall betrachtet werden muss, wenn nur eine von beiden Erweiterungen installiert/aktiviert ist.
Es würde hier mehr Sinn machen, den Eventscripter ein Event "Zeitpunkt" zu ermöglichen und im Script selbst wird dann dieser Zeitpunkt/Zeitpunkte definiert. Das würde sich auch wesentlich leichter umsetzen lassen
__________________
JD-Dev & Server-Admin
Reply With Quote
  #18  
Old 02.07.2019, 15:43
yondu yondu is offline
DSL Light User
 
Join Date: Jun 2019
Posts: 33
Default

Habe das Skript nun in der aktualisierten Form abgespeichert und suche mir 100GB Downloads zusammen, damit ich testen kann ob es klappt. Gebe Bescheid sobald ich mehr weiss. Danke abermals!
Reply With Quote
  #19  
Old 11.07.2019, 19:03
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,325
Default

Quote:
Originally Posted by yondu View Post
Habe das Skript nun in der aktualisierten Form abgespeichert und suche mir 100GB Downloads zusammen, damit ich testen kann ob es klappt. Gebe Bescheid sobald ich mehr weiss. Danke abermals!
Wenn noch Hilfe brauchst, dann sag einfach Bescheid.

Hab weiter oben noch ein zusätzliches kleines Skript geschrieben um schneller den SO Traffic (Accountdaten) zu aktualisieren über SO selbst. Siehe auch SO-Plugin - Berechnung / Volumen
Zusätzlich gibt es inzwischen die Plugineinstellung "max. traffic workaround".
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 16.07.2019 at 02:44.
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 13: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 - 2024, Jelsoft Enterprises Ltd.