View Single Post
  #15  
Old 20.07.2019, 15:10
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 951
Default

Quote:
Originally Posted by Fetter Biff View Post
Ich könnte dem Skirpt-Namen vielleicht noch uloz hinufügen oder ist der bestehende Name für das Funktionieren des Skirpts erforderlich?
Du musst es dann nur im Skript ebenfalls anpassen. Der Name spielt keine Rolle so lange es im Menü und Skript entsprechend geändert ist.

Quote:
Originally Posted by Fetter Biff View Post
Hier sind ja noch andere Skripte, woher weiß man denn, welches das richtige ist im Menü oder in dem Fenster oben?
Anhand vom Namen und der groben Zuordnung der Schaltfläche (z.B. Werkzeugleiste, Hauptmenü)

Quote:
Originally Posted by Fetter Biff View Post
Vielen Dank schon mal für die Lösung. Dachte, ich könnte jetzt schon beide nutzen, dann würde ich es erstmal mit der automatischen versuchen. Das heißt, man kann also über die Schaltfläche / einen Menüeintrag das Skript auslösen oder (jetzt noch "oder", später, mit Deiner Lösung beides) eben automatisch laufen lassen, etwa alles 15 Min.
Hab das Skript umgeschrieben damit beides zeitnah ermöglicht wird.

Neues Hauptskript:
Code:
//disablePermissionChecks();
//setNotifyOnException(false);
//setAdvancedAlert(true);

// Proxylist updates for hosters (e.g. Zippyshare.com)
// Trigger: Interval (e.g. 10000ms)

var refreshtime = "900"; // (e.g. 900s)
var myCountries = ["GB", "DE", "FR"]; //Filterlist for countries
var max_response_time = 1.5; //1.5 or higher (e.g. 2), 1 is too low
var proxy_test = 0; //1=ON,0=OFF (very slow)
var max_proxies = 0; //0=Unlimited
var standard_filter = " \"filter\" : {\"type\" : \"WHITELIST\",\"entries\" : [ \"zippyshare.com\"]},"; //\"filter\" : null,
var add_proxy = JSON.parse("{\"proxy\" : {\"username\" : null,\"password\" : null,\"port\" : 80,\"address\" : null,\"type\" : \"NONE\",\"preferNativeImplementation\" : false,\"resolveHostName\" : false,\"connectMethodPrefered\" : false},\"rangeRequestsSupported\" : true," + standard_filter + "\"pac\" : false,\"reconnectSupported\" : false,\"enabled\" : true}");
var filter = new Array();

var old_proxylist = [];
var new_proxylist = "";

var settings = "org.jdownloader.updatev2.InternetConnectionSettings";
var storage = "cfg/org.jdownloader.settings.InternetConnectionSettings";
old_proxylist = callAPI("config", "get", settings, storage, "customproxylist");

if (IsValidname() || IsValidinterval() && ((Math.round(Date.now() / 1000) - getProperty("LastProxyUpdate", true)) >= refreshtime) && !getProperty("updatingProxy", true) || getProperty("updatingProxy", true)) {
    if (!getProperty("updatingProxy", true)) {
        setProperty("LastProxyUpdate", Math.round(Date.now() / 1000), true);
    } else {
        if (getProperty("updatingProxy", true)) {
            setProperty("updatingProxy", false, true);
        }
    }

    var html;
    try {
        html = getPage("https" + "://raw.githubusercontent.com/fate0/proxylist/master/proxy.list");

        var lines = html.split("\n");

        for (var key in old_proxylist) {
            if (old_proxylist.hasOwnProperty(key)) {
                if (old_proxylist[key].proxy.type == "DIRECT" || old_proxylist[key].proxy.type == "NONE" || old_proxylist[key].enabled == false) {
                    if (new_proxylist == "") {
                        new_proxylist += JSON.stringify(old_proxylist[key]);
                    } else {
                        new_proxylist += "," + JSON.stringify(old_proxylist[key]);
                    }
                }
            }
        }

        var myBr = getBrowser();
        for (var i = 0; i < lines.length; ++i) {
            if (IsValidJSONString(lines[i])) {
                var temp_JSON = JSON.parse(lines[i]);
                var add_proxy_new = add_proxy;
                add_proxy_new.proxy.type = temp_JSON.type.toUpperCase();
                add_proxy_new.proxy.port = temp_JSON.port;
                add_proxy_new.proxy.address = temp_JSON.host;
                if (myCountries.indexOf(temp_JSON.country) > -1 || temp_JSON.response_time > max_response_time) {
                    continue; //skip proxy
                }
                var errorcheck = 0;
                if (proxy_test == 1) {
                    myBr.setProxy(temp_JSON.type + "://" + temp_JSON.host + ":" + temp_JSON.port);
                    try {
                        myBr.getPage("http://www.google.de/");
                    } catch (e) {
                        errorcheck = 1;
                    }
                }

                if (errorcheck == 0 && proxy_test == 1 || proxy_test != 1) {

                    if (add_proxy_new.proxy.address && filter[temp_JSON.host] != true) {
                        filter[temp_JSON.host] = true;
                        if (new_proxylist == "") {
                            new_proxylist += JSON.stringify(add_proxy_new);
                        } else {
                            new_proxylist += "," + JSON.stringify(add_proxy_new);
                        }
                    }
                }
            }
            if (i >= max_proxies && max_proxies > 0) {
                break;
            }
        }
        callAPI("config", "set", settings, storage, "customproxylist", "[" + new_proxylist + "]");
    } catch (e) {}
}

function IsValidJSONString(str) {
    if (typeof str !== "string") {
        return false;
    }
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}

function IsValidname() {
    try {
        if (name == "Geoblocking: zippy") {
            return true;
        }
    } catch (e) {
        return false;
    }
    return true;
}

function IsValidinterval() {
    try {
        if (interval >= 10000) {
            return true;
        }
    } catch (e) {
        return false;
    }
    return true;
}

Zusätzliches kleines Skript um das Menü zu nutzen trotz "Intervall" im Hauptskript:
Code:
// Button for proxylist updates
// Trigger: Schaltfläche Werkzeuglsite bestätigt
if (name == "Geoblocking: zippy") {
    setProperty("updatingProxy", true, true);
}
Statt "Schaltfläche Werkzeuglsite bestätigt" kannst natürlich auch das Hauptmenü oder andere Orte nutzen und das Menü dort verändern. Auch mehrfach kannst das Skript kopieren und nutzen, wenn den Menüpunkt überall haben willst. Name bei Bedarf anpassen.

Anmerkung:
Bitte beachten wenn ein Intervall verwendet wird und ein Menü dann sollte es auf z.B. 10000ms (10s) gestellt werden. Falls der Rechner schnell genug ist, dann gerne auch weniger als 10s.
Der Wert "refreshtime" kam hinzu um einzustellen wie oft es automatisiert sich aktualisieren soll, wenn kein schnelleres Update (per Eintrag im Hauptmenü/Werkzeugleiste) gewünscht wird.

Im Hauptskript wurde nun eine Option geschaffen um direkt oben die unerwünschten Länder eintragen zu können statt irgendwo weiter unten im Skript.

Quote:
Originally Posted by Fetter Biff View Post
Verzeihung, etwas namens "no proxy" kann ich dort nicht finden, auch kann ich nicht erkennen, dass man einen solchen Eintrag anlegen könnte. Wo finde ich besagtes?
In Deutsch heißt der Eintrag "Kein Proxy" (engl. "No Proxy") meines Wissens. Den Eintrag lässt das Skript nämlich in Ruhe. Solltest noch weitere andere Proxies oder Gateways nutzen müsste man es ggf. noch anpassen.

Quote:
Originally Posted by Fetter Biff View Post
Herzlichen Dank, fügte ich ganau so wie es ist ein.
Wenn Dich die Meldung stört, dann kannst noch ein "disablePermissionChecks();" einfügen im Skript.
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 21.07.2019 at 02:23.
Reply With Quote