JDownloader Community - Appwork GmbH
 

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 21.02.2017, 19:09
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Talking Linksammler Pakete mit allen Informationen exportieren und wieder importieren

Hier mein Roman .

Folgendes ist gegeben:
- Windows Server 2016 auf meinem billig Server (der nur zum Downloaden oder Filme schauen an ist)
- Weitere Rechner (jeweils mit JDownloader ausgestattet) im Netzwerk
- Rechner haben Zugriff auf freigegebene Ordner

Was möchte ich:
Da mein Server rechts langsam ist würde ich gerne in JDownloader auf einem anderen Rechner meine Links sammeln und die Pakete organisieren. Diese dann mit all den Daten (Paketname(n),jeweiligen Link(s),Downloadverzeichnis(se)) exportieren und in Jdownloader auf dem Server importieren.

MyJdownloader gibt mir leider nicht die gesamte Pracht des JDownloader und all seinen Funktionen wieder und reagiert zudem nicht so schnell wie ich es mir wünsche. Liegt wohl dadran, dass mein Server nicht der schnellste ist (1. oder liegt das wo anders? [z.B. 4 Sekunden bis Linksammler geladen ist])

Möglichkeiten die mir einfallen:
- 2. selber ein Java Programm schreiben mit der MyJdownloader API
Kann ich das so umsetzten, dass ich von meinem Rechner mit dem Javaprogramm übers Netzwerk den JDownloader auf dem Server steuern kann?
Also: (PC: Java Client) => (Netzwerk) => (Server: JDownloader)
oder muss das so: (PC: Java Client) => (Netzwerk) => (Server: Java Server) => (Server: JDownloader)
- 3. Über WinRS/WinRM oder PowerShell oder SSH auf den Server Verbinden und Jdownloader mit meinen Daten füttern (mit automatisierte Batch Datei zb) (Find grade nichts zu JDownloader CLI)

-4.FolderWatch und EventScripter verwenden. Bin ich aktuell auch dran. Scheitere leider bereits am Anfang...

5. Welche Möglichkeiten habe ich noch?
6. Welche Möglichkeiten wäre am besten/einfachsten umzusetzen?

Ich nehme mal an mit FolderWatch und EventScripter kommt ich schnell an mein Ziel. Nun brauch ich dort aber Hilfe :D.

7.Problem:
An dem Beispiel crwaljob hier
Spoiler:
Code:
#this is a property file format. You can put all these entries in a jsonarray [{..},{...}] as well.
#save this as myFile.crawljob
#Start a new entry with anything but a comment (#...) or key=. An empty line would be ok as well
->NEW ENTRY<-
   chunks=0
#a comment
   extractPasswords=["Password1","Password2"]
   enabled=null
   text=**External links are only visible to Support Staff**   packageName=MyPackageName
   autoStart=TRUE
   extractAfterDownload=UNSET
   downloadFolder=null
   priority=DEFAULT
   forcedStart=UNSET
   downloadPassword=null
#use only if text contains one single link
   filename=null
   overwritePackagizerEnabled=TRUE #ANGEPASST
   comment=null
   autoConfirm=UNSET
   deepAnalyseEnabled=false
   addOfflineLink=true

->NEW ENTRY<-
#properties that are not required can be ignored. This is absolutly fine:
   text=**External links are only visible to Support Staff**

Kommt nun das bei raus:
Spoiler:

Wie bring ich beide Links in das Paket "MyPackageName"?
Den Ordner Video wurde vom meim Packagizer erstellt.
Aber OverridePackagizer = TRUE ...

Fällt mir gerade beim schreiben auf: Ein guter Ansatz ist bestimmt beide links in einer Entry unterzubringen.
Spoiler:
Code:
text="**External links are only visible to Support Staff**,"**External links are only visible to Support Staff**
Code:
text=**External links are only visible to Support Staff**text=**External links are only visible to Support Staff**

Geht beides ned. HILFE :D

Nebenbei versteh ich ned ganz was die Aussage "#use only if text contains one single link" meint. Bezieht sich diese nur auf filename?


So damit bin ich erst mal fertig mit meinem Post. Einmal durchlesen, verdauen und wieder auskotzen bitte.

Noch kleine Anmerkung: Habs wirklich versucht klein zu halten

Last edited by mikle20; 21.02.2017 at 19:13.
Reply With Quote
  #2  
Old 21.02.2017, 20:04
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Die einfachste Lösung. Mit JDownloader X sammeln und organisieren. Die Links im Linksammler behalten. Danach X beenden und die Datei cfg/linkcollectorXY.zip nehmen und diese dann via LadeContainer im JDownloader Y laden und voila, die Links tauchen nun im Linksammler von Y auf Ich denke das ist genau das, wonach du gesucht hast
__________________
JD-Dev & Server-Admin
Reply With Quote
  #3  
Old 21.02.2017, 21:59
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

Warum denn den X schließen?

Wenn ich neue Links hinzufüge, dann dauerts etwa ca 10 sek und dann ist ein neues linkcollectorXY.zip erstellt.

EDIT:
So ein rießen Text und so ne kleine Antwort.

EDIT2:
Gibts ne Möglichkeit um mein Linksammler mit der linkcollectorXY.zip zu vergleichen?
Vergleiche solange bis Linksammler == neuster linkcollectorXY
Danach weiß ich, dass das aktuelle linkcollectorXY.zip wirklich das richtige ist.

EDIT3:
Wenn nicht mach ichs so:
Nach drücken meines EventScriptButtons
1.Lösche alle linkcollectorXY.zip.
2.Füge Dummy link in Linksammler.
3.Sobald Datei linkcollector*.zip existiert dann kopiere wohin ich will
.
.
.
Letzter Schritt importiere: Wenn importiert, dann lösche Dummy

Frage is nur, wenn ich über EventScripter ein Link hinzufüge, ob dass das Event auslöst um eine neue linkcollectorXY.zip zu erstellen.

EDIT4:
Kann man mit EventScripter überhaupt Links hinzufügen o.O?
Finde leider nichts dazu in der Hilfe beim EventScripter.

Last edited by mikle20; 21.02.2017 at 22:49.
Reply With Quote
  #4  
Old 22.02.2017, 12:27
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Quote:
Originally Posted by mikle20 View Post
Warum denn den X schließen?
Wenn ich neue Links hinzufüge, dann dauerts etwa ca 10 sek und dann ist ein neues linkcollectorXY.zip erstellt.
So gehts natürlich auch
__________________
JD-Dev & Server-Admin
Reply With Quote
  #5  
Old 22.02.2017, 12:29
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Jede Änderungen im Linksammler wirft das *verzögerte* Speichern an Also egal ob manuell via Gui oder über API oder über Eventscripter
Das Delay kannst du via Einstellungen-Profieinstellungen- MinimumSaveDelay und MaximumSaveDelay selbst festlegen
__________________
JD-Dev & Server-Admin
Reply With Quote
  #6  
Old 22.02.2017, 12:31
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Quote:
Originally Posted by mikle20 View Post
Kann man mit EventScripter überhaupt Links hinzufügen o.O?
Finde leider nichts dazu in der Hilfe beim EventScripter.
Ja, hier am besten mgpai fragen (auf English). Er ist unser Eventscript Meister
Oder du suchst einfach nach seinen Posts und findest evtl schon was fertiges/brauchbares
__________________
JD-Dev & Server-Admin
Reply With Quote
  #7  
Old 22.02.2017, 15:23
thecoder2012's Avatar
thecoder2012 thecoder2012 is offline
Official 9kw.eu Support
 
Join Date: Feb 2013
Location: Internet
Posts: 1,324
Default

Quote:
Originally Posted by mikle20 View Post
Kann man mit EventScripter überhaupt Links hinzufügen o.O?
Finde leider nichts dazu in der Hilfe beim EventScripter.
Ja. Man nutzt per EventScripter dann die callAPI.

Beispiel:
Code:
var link = "http://jdownloader.org/download/index"; // Specify URL to be added
    callAPI("linkgrabberv2", "addLinks", {
        "deepDecrypt": true,
        "links": link
    });

Oder eine Textdatei mit mehreren Links wäre auch denkbar:
Code:
var myfile = JD_HOME + "/mylinks.txt"; // Full path to text file containing the urls
    callAPI("linkgrabberv2", "addLinks", {
        "deepDecrypt": true,
        "links": readFile(myfile)
    });
__________________
Join 9kw.eu Captcha Service now and let your JD continue downloads while you sleep.

Last edited by thecoder2012; 22.02.2017 at 15:44.
Reply With Quote
  #8  
Old 05.03.2017, 14:58
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Thumbs up

Also habs jetzt über FolderWatch gelöst.
Hatte mit mgpai auch andere Ansätze umgesetz aber die hatten so Ihre Nachteile.

Version 1 mit mgpai: Manuelles exportieren mittels DLC erstellen. Und manuelles importieren dieser DLC. Probleme hier waren, dass man den DownloadFolder und das ExtractPassword nicht mitnehmen konnte. Das hatten wir über den Paketnamen behoben. Bsp: Terminator#Filme#password. Das war mir aber noch viel zu viel Aufand da ich alles selber machen musste (Export Import).

Version 2 mit mgpai: EventScripter kopiert linkCollector.zip in ShareOrdner. Server sucht alle 10 sek nach neuer Datei in diesem Ordner. Dann startet eine externe Batch und Jdownloader schließt sich. Die Batch löscht vorhandene linkCollector.zips im cfg Ordner und kopiert die neuen rein. Danach wird Jdownloader wieder gestartet.
Nachteile: Jdownloader muss neugestartet werden, bereits vorhandene Daten im LinkCrawler würden gelöscht.

Aktuelle Version 3 ganz alleine: Makiere Pakete die exportiert werden sollen. Rechtsklick -> Export to Server. Dies erstellt ein CrawlerJob für makierte Pakete. Hab das aber auf archivdateien beschränkt. Andere Dateien sind so klein die lad ich gleich direkt mit meim PC.

Hier mal das Script:
Spoiler:
Code:
if (name == "Export to Server") {
    var folderWatchPath = "Z:\\.jdownloader\\.share\\"; //Change path if you like 
    var packages = lgSelection.getPackages();

    var hasOnlyArchives = true;
    var crawlerEntrys = [];

    for (var i = 0; i < packages.length; i++) {
        package = packages[i];
        var links = package.getDownloadLinks();
        var linksText = "";
        var password = null;

        for (var j = 0; j < links.length; j++) {
            linksText += links[j].getUrl() + ",";
            var archive = links[j].getArchive();
            if (archive == null) hasOnlyArchives = false;
            else if (archive.getInfo().passwords.length != 0) password = archive.getInfo().passwords[0];
        }

        crawlerEntrys.push(createCrawlerEntry(package.getName(), linksText, package.getDownloadFolder(), password));
    }

    if (hasOnlyArchives) {
        crawlerJob = "";
        for (var i = 0; i < crawlerEntrys.length; i++) {
            entry = crawlerEntrys[i];
            crawlerJob += entry + "\r\n\r\n";
        }
        var filePath = folderWatchPath + "exportJob.crawljob";
        var file = getPath(filePath);
        if (file.exists()) file.delete();
        writeFile(filePath, crawlerJob, false);
    } else alert("Supports Only Archive Files");
}

function createCrawlerEntry(packageName, linksText, downloadFolder, password) {
    var job = "->NEW ENTRY<-\r\n";
    var newLine = "\r\n";

    if (password != null) job += "extractPasswords=[\"" + password + "\"]" + newLine;
    job += "packageName=" + packageName + newLine;
    job += "text=" + linksText + newLine;
    job += "downloadFolder=" + downloadFolder + newLine;

    job += "autoStart=TRUE" + newLine;
    job += "extractAfterDownload=TRUE" + newLine;
    job += "overwritePackagizerEnabled=TRUE" + newLine;
    job += "deepAnalyseEnabled=FALSE" + newLine;
    job += "autoConfirm=TRUE";

    return job;
}


Es gab zudem ein weiteren Grund warum ich das auf Archive beschränke.
Ich verwende die link.getUrl() methode um die links für den Job zu generieren.
Bei YouTube bräuchte ich aber die link.getContentURL() denn sonst werden andere Links beim Import generiert und nicht die eigentlichen Links die ich über YouTube laden wollte. Naja wie gesagt das ist eines der kleinen Dateien die ich sowieso über mein PC lade.

Ein würde mich dennoch interessieren, beim .crawljob um alle links in ein Paket zu bekommen mache ich das aktuell so:
text=link1,link2,link3,...
aber sollte man, dass so machen?
ich würde eigentlich denken, dass text= nur für einen Link gedacht ist.
Aber anderst sehe ich keine Möglichkeit alles in einem Package zu bekommen.

Zudem Verbessungsvorschläge für das Script sind gern gesehen
Reply With Quote
  #9  
Old 06.03.2017, 14:10
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Du kannst die linkCollector.zip auch als Container (via Script,Folderwatch) laden lassen Dann importiert der JDownloader die Datei in Linksammler oder DownloadListe.
du kannst im CrawlJob einen Paketnamen definieren "packageName", dann wandern die Links in ein entsprechend benanntes Paket
__________________
JD-Dev & Server-Admin
Reply With Quote
  #10  
Old 08.03.2017, 15:25
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

Quote:
Originally Posted by Jiaz View Post
Du kannst die linkCollector.zip auch als Container (via Script,Folderwatch) laden lassen
Leider fragt mich Jdownloader dann beim Import, ob ich diese Dateien impotieren möchte. Das sollte er aber ohne Nachfrage machen. Das wäre besonders problematisch, wenn ich im Headless Modus laufen lasse.

Quote:
Originally Posted by Jiaz View Post
du kannst im CrawlJob einen Paketnamen definieren "packageName", dann wandern die Links in ein entsprechend benanntes Paket
Ok hätte genauer sein sollen:
sieht aktuell so aus:
Code:
->NEW ENTRY<-
packageName=Video
text=link1,link2,link3,
downloadFolder=E:\Video\
autoStart=TRUE
extractAfterDownload=TRUE
overwritePackagizerEnabled=TRUE
deepAnalyseEnabled=FALSE
autoConfirm=TRUE
Frage ist, soll "text=" mehrere Links enhalten oder sollte es so ein:
text=link1
NEW ENTRY
text=link2
NEW ENTRY
...
Wenn es nach dem Schema seien sollte, dann weiß ich nicht wie man alles in ein Paket bekommt.
Aber nach meinem Schema geht es ja
Reply With Quote
  #11  
Old 08.03.2017, 15:32
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Setze resttext= ans Ende und JDownloader nimmt dann alle restlichen Zeilen ebenfalls
zb
resttext=Link1
Link2
Link3
Link4....

ansonsten text=link1\rlink2\r usw
also newlines statt komma
__________________
JD-Dev & Server-Admin
Reply With Quote
  #12  
Old 08.03.2017, 17:46
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

Ahh ok.

Da ich über crawljob das Problem mit dem URL / ContentURL habe, kann ich die Abfrage beim Import der zip umgehen? z.b. so:
crawljob:
text=file://D:\filecollector1023.zip

**External links are only visible to Support Staff**Wie funktioniert FolderWatch auf Synology
Nach dem Thread sollte dies ja möglich sein. Bei mir läd er aber dann die zip oder dlc direkt ohne "entpacken" in den Linksammler
Reply With Quote
  #13  
Old 08.03.2017, 18:04
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Folderwatch einfach über das Webinterface in den Einstellungen installieren, JDownloader neustarten und dann gehts genauso wie im normalen JDownloader
__________________
JD-Dev & Server-Admin
Reply With Quote
  #14  
Old 08.03.2017, 18:06
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Welches Problem mit URL/ContentURL?

Du meinst den Import Dialog, den willst du umgehen?
__________________
JD-Dev & Server-Admin
Reply With Quote
  #15  
Old 08.03.2017, 18:18
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

Wenn ich über mein Script ein CrawlerJob erstellen lasse, dann weiß ich nicht wann ich getUrl() oder getContentURL() oder eines der anderen Möglichkeiten verwenden soll.
Wenn ich z.B. von filecrypt ein Paket im Linksammler habe, dann ist der ContentURL der link zu filecript (blöd, denn nach Import über crawljob kommt ein Captcha dadruch). Der Url geht direkt zu ShareOnline. Also nehm ich hier getURL.
Bei Youtube könnte ich nicht URL verwenden sondern brauche ContentURL, sonst weiß man nicht ob der Link die Videodatei oder die Untertitel runterladen soll. Also getURL bringt mir hier eine Offline Datei glaub ich, die bringt mir rein garnichts.
Aber wie gesagt, youtube dateien werde ich kaum auf den Server importieren, da dies kleine Dateien sind die ich über den PC lade. ABER fände es schön, wenn mein Script alles könnte

Und ja den ImportDialog will ich umgehen.

Last edited by mikle20; 08.03.2017 at 18:21.
Reply With Quote
  #16  
Old 08.03.2017, 18:52
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Mit dem nächsten Core-Update sollte der ConfirmDialog via Folderwatch nicht mehr kommen.
__________________
JD-Dev & Server-Admin
Reply With Quote
  #17  
Old 08.03.2017, 19:02
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Da jedes Plugin unterschiedlich arbeitet, gibt es keine *einfache* Lösung.
getContent ->sofern die URL nicht aus einem Container kam, gibt entweder eine URL zurück welche genau zu dem Link führt oder einfach die URL selbst. Im Falle von Container gibt es nix zurück.
getURL gibt immer die *rohe* Plugin URL weiter. Oftmals klappt das, aber je nach Plugin kann hier auch eine komplette JDownloader interne URL stehen. Auch gibt es Links da geht getURL gar nicht /zb Usenet, da hier sehr viele Metadaten notwendig sind.
__________________
JD-Dev & Server-Admin
Reply With Quote
  #18  
Old 08.03.2017, 20:17
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

Klappt ja wunderbar, danke.

Jetzt brauch ich nur noch einen Button der mir die neuste zip in den folderwatch/share order kopiert.

Da ich mit LinkCollector: Minimum/Maximum Save Delay irgendwie nicht auf einen Nenner komme, mach ichs wohl so:
0. Button gedrückt
1. Suche aktuelle zip: z.b: "linkcollector1352.zip"
2. ändere Downloadordner zu Server Downloadordner (falls bereits geschehen, ändere Kommentar zu "Dummy"). Dadurch soll das verzögerte Speichern ausgelöst werden.
3. warte bis "linkcollector1353.zip" existiert
4. kopiere in share ordner


Frage: würde die Nummerierung bei den zip's irgendwann von neu anfangen? Oder zählt JD bis ins Unendliche :D?
Reply With Quote
  #19  
Old 09.03.2017, 13:07
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Ein einfaches 'Disable/Enable' genügt schon Jede *Änderung* soll ja am Ende auch gespeichert werten.
__________________
JD-Dev & Server-Admin
Reply With Quote
  #20  
Old 09.03.2017, 13:08
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Quote:
Originally Posted by mikle20 View Post
Frage: würde die Nummerierung bei den zip's irgendwann von neu anfangen? Oder zählt JD bis ins Unendliche :D?
Aktuell zählt JDownloader fleissig weiter Man kann natürlich irgendwann mal einen *Reset* auf 0 durchführen, aber wüsste jetzt nicht warum
__________________
JD-Dev & Server-Admin
Reply With Quote
  #21  
Old 09.03.2017, 13:56
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

Ach ok, dass disable/enable is natürlich auch gut.

Und wegen dem zählen, da gings mir nur darum, wenn ich bei 9999 bin und ich dann 10000 suche, dass er nicht wieder auf 1 zurück springt, sonst würde mein Script das dann nicht als das neustes erkennen. Aber wenn er einfach weiter zählt ist es um so besser für mich :D.

Gut, glaub jetzt hab ich alles was ich möchte. Jetzt setzte ich nocht meinen Button um und stells dann hier rein. Glaube aber kaum, dass das jemand braucht. Das ist einfach zu speziell auf mein Bedarf zugeschnitten :D.

Danke für die Hilfe.
Reply With Quote
  #22  
Old 09.03.2017, 15:52
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Nix zu danken
__________________
JD-Dev & Server-Admin
Reply With Quote
  #23  
Old 10.03.2017, 16:23
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

So hier ist das gute Stück

Spoiler:
Code:
//SyncFilesScript will sync you files in Linkgrabber with a JDownloader in your network, you have to use a share folder for this.
//Be aware you can only sync "selected" links/packages and not selected links/packages will be removed!!!!!
//If you have deactivated "GeneralSettings: Save Linkgrabber list" you have to activate it or JDownloader won't create linkcollector.zip's in the cfg folder.
//Beware you also need at least one "linkcollector.zip" with numbers: "linkcollector1.zip" or "linkcollector2.zip"
//Just insert some links in Jdownloader and wait for a new lincollector.zip file. Or delete some links and wait.

//Simple howTo ;)
//Insert this script into the JDownloader you want to export links with the event "Button Clicked in LinkGrabber Contect Menu"
//Create a button "SyncFiles" in the context menu of the linkgrabber
//Adjust your share folder in the function "copyLinkCollectorToShare(collector)" below
//Activate folderWatch on the JDownloader you want to import the links and adjust the folder path
//Happy syncing


if (name == "SyncFiles") {
    var collector = getCurrentLinkCollector();
    var nbr = getLinkCollectorNumber(collector);
    var newLinkCollector = generateNewLinkCollector(nbr + 1);

    deleteUnselected(); //be aware, you need to delete all other Links else you would sync also filtered links you filterd through the Sidebar Views

    var isFound = false;
    var breakAfterSec = 20 * 2; //change only the "20" not the "* 2", 20 means 10 seconds ;D
    while (true) {
        if (isFoundLinkCollector(newLinkCollector) == true) {
            isFound = true;
            break;
        }

        sleep(500);
        breakAfterSec -= 1;
        if (breakAfterSec == 0) break;
    }

    if (isFound) {
        copyLinkCollectorToShare(newLinkCollector);
        alert("Files were synced.");
    } else(alert("Couldn't sync Files. Probaly the collector.zip file take to long to create. If so change the \"breakAfterSec\" to a higher value."));
}

function copyLinkCollectorToShare(collector) {
    var sharePath = "\\\\PCNAME\\shareFolder\\otherFolder\\"; //Change to your share folder!
    var absoluteCollectorPath = getPath(JD_HOME + "\\cfg\\" + collector);
    absoluteCollectorPath.copyTo(sharePath);
}

function isFoundLinkCollector(collector) {
    var currentCollector = getCurrentLinkCollector();
    if (collector == currentCollector) return true;
    return false;
}

function generateNewLinkCollector(nbr) {
    var collector = "linkcollector" + nbr + ".zip";
    return collector;
}

function getLinkCollectorNumber(collector) {
    return parseInt(collector.match(/\d+/g));
}

function getCurrentLinkCollector() {
    var cfgPath = JD_HOME + "\\cfg\\";
    var linkcollectors = getPath(cfgPath).getChildren().filter(/linkcollector[0-9]*.zip/);
    return linkcollectors[linkcollectors.length - 1].getName();
}

function deleteUnselected() {
    var allLinks = getAllCrawledLinks();
    var selectedLinks = lgSelection.getLinks();

    for (var i = 0; i < allLinks.length; i++) {
        currUUID = allLinks[i].getUUID();
        var isInSelectedLinks = false;
        for (var j = 0; j < selectedLinks.length; j++) {
            if (currUUID == selectedLinks[j].getUUID()) {
                isInSelectedLinks = true;
                break;
            }
        }
        if (!isInSelectedLinks) allLinks[i].remove();
    }
}
Reply With Quote
  #24  
Old 10.03.2017, 16:45
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,290
Default

Danke fürs Teilen des guten Stücks
__________________
JD-Dev & Server-Admin
Reply With Quote
  #25  
Old 10.03.2017, 21:39
mikle20 mikle20 is offline
JD Beta
 
Join Date: Jan 2015
Posts: 52
Default

Ups. Hatte vergessen, dass Enable/Disable einzubauen. Es ging bisher nur wenn mehr Links vorhanden waren als man Selektiert hatte.

Nun gehts auch wenn man nur ein Link hat und man diesen syncen möchte.

Spoiler:
Code:
//SyncFilesScript will sync you files in Linkgrabber with a JDownloader in your network, you have to use a share folder for this.
//Be aware you can only sync "selected" links/packages and not selected links/packages will be removed!!!!!
//If you have deactivated "GeneralSettings: Save Linkgrabber list" you have to activate it or JDownloader won't create linkcollector.zip's in the cfg folder.
//Beware you also need at least one "linkcollector.zip" with numbers: "linkcollector1.zip" or "linkcollector2.zip"
//Just insert some links in Jdownloader and wait for a new lincollector.zip file. Or delete some links and wait.

//Simple howTo ;)
//Insert this script into the JDownloader you want to export links with the event "Button Clicked in LinkGrabber Contect Menu"
//Create a button "SyncFiles" in the context menu of the linkgrabber
//Adjust your share folder in the function "copyLinkCollectorToShare(collector)" below
//Activate folderWatch on the JDownloader you want to import the links and adjust the folder path
//Happy syncing


if (name == "SyncFiles") {
    var collector = getCurrentLinkCollector();
    var nbr = getLinkCollectorNumber(collector);
    var newLinkCollector = generateNewLinkCollector(nbr + 1);

    deleteUnselected(); //be aware, you need to delete all other Links else you would sync also filtered links you filterd through the Sidebar Views

    var isFound = false;
    var breakAfterSec = 10 * 2; //change only the "20" not the "* 2"
    while (true) {
        if (isFoundLinkCollector(newLinkCollector) == true) {
            isFound = true;
            break;
        }

        sleep(500);
        breakAfterSec -= 1;
        if (breakAfterSec == 0) break;
    }

    if (isFound) {
        copyLinkCollectorToShare(newLinkCollector);
        alert("Files were synced.\n");
    } else(alert("Couldn't sync Files. Probaly the collector.zip file take to long to create. If so change the "breakAfterSec" to a higher value.\n"));
}

function copyLinkCollectorToShare(collector) {
    var sharePath = "\\\\PCNAME\\ShareFolder\\folder\\folder\"; //Change to your share folder!
    var absoluteCollectorPath = getPath(JD_HOME + "\\cfg\" + collector);
    absoluteCollectorPath.copyTo(sharePath);
}

function isFoundLinkCollector(collector) {
    var currentCollector = getCurrentLinkCollector();
    if (collector == currentCollector) return true;
    return false;
}

function generateNewLinkCollector(nbr) {
    var collector = "linkcollector" + nbr + ".zip";
    return collector;
}

function getLinkCollectorNumber(collector) {
    return parseInt(collector.match(/\d+/g));
}

function getCurrentLinkCollector() {
    var cfgPath = JD_HOME + "\\cfg\";
    var linkcollectors = getPath(cfgPath).getChildren().filter(/linkcollector[0-9]*.zip/);
    return linkcollectors[linkcollectors.length - 1].getName();
}

function deleteUnselected() {
    var allLinks = getAllCrawledLinks();
    var selectedLinks = lgSelection.getLinks();

    if (allLinks.length == selectedLinks.length)
        swapEnabledDisabled(allLinks[0]);

    for (var i = 0; i < allLinks.length; i++) {
        currUUID = allLinks[i].getUUID();
        var isInSelectedLinks = false;
        for (var j = 0; j < selectedLinks.length; j++) {
            if (currUUID == selectedLinks[j].getUUID()) {
                isInSelectedLinks = true;
                break;
            }
        }
        if (!isInSelectedLinks) allLinks[i].remove();
    }
}

function swapEnabledDisabled(link) {
    var enabled = link.isEnabled();
    link.setEnabled(!enabled);
    link.setEnabled(enabled);
}
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 02:29.
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.