#1
|
|||
|
|||
mit Event Scripter Info-File erstellen?
Hi,
ich habe vor kurzem euer neues PlugIn Event Scripter entdeckt und dachte mir, damit müsste man doch das aus jd1 bekannte info-File erstellen können. Den richtigen Trigger habe ich (A Download Stopped), auch die Analyse auf Vollständigkeit des Package funktioniert, nur: Wie komme ich an die Felder "Kommentar" und "Archivpasswort" sowohl vom Link auch als vom Package ran, um diese Informationen in das info-File wegschreiben zu können? Ausprobieren von link.getComment() und link.getAnnotation() hat jedenfalls nicht funktioniert. Vielen Dank ottoS p.s. Da ich mir vorstellen kann, dass die Script-Funktionalität sehr viele Freunde finden wird, aber für Nicht-Programmierer sehr tricky ist, wäre vielleicht ein separates Unterforum sehr praktisch. Dort könnten auch funktionierende Skripte präsentiert werden. p.p.s. Vielleicht erstellt ihr ein infoFile-Writer-Skript und legt es als Example schon in das Erweiterungsmodul. Dann wird a) anschaulich der Zugriff auch link und package und deren Status-Auswertungen als auch b) der Schreibzugriff auf's Filesystem gezeigt und c) die Funktionalität steht auch gleich für alle zur Verfügung
__________________
Sys-Info: Win10Home32bit | NTFS | OracleJRE1.8 | JD2 with GUI |
#2
|
||||
|
||||
Coalado wird das fehlende sicherlich bald noch einbauen
__________________
JD-Dev & Server-Admin |
#3
|
|||
|
|||
Hast du schon was hinbekommen?
Kam auch schon auf die Idee, habe es auch noch nicht hinbekommen. Hab da auch so meine Schwierigkeiten mit Java. Ich möchte die "Info-File" bei der Übernahme in die Downloadliste erstellt haben. Dann kann ich auch endlich von JD1 auf JD2 endgültig umsteigen! Last edited by AffenKopf; 06.03.2015 at 20:27. |
#4
|
||||
|
||||
Er kam noch nicht dazu, aber ich ping ihn mal an
__________________
JD-Dev & Server-Admin |
#5
|
||||
|
||||
Ticket zum InfoFileWrite:
__________________
JD Supporter, Plugin Dev. & Community Manager
Erste Schritte & Tutorials || JDownloader 2 Setup Download |
#6
|
||||
|
||||
Du solltest den Trigger "Archive Extraction finished" verwenden.
Da gibt es jetzt einige neue Möglichkeiten: archive.getInfo() << Alle Einstellungen. z.B. auch vordefiniertes Passwort. archive.getExtractionLog() << Wie der Name schon sagt. ein Extractionlog archive.getDownloadLinks() << ein array aller beteiligten Links. link.getComment() << wie gewünscht. package.getComment() <<wie gewünscht.
Spoiler:
Code:
// get archive Informations var info = archive.getInfo(); //init the text to write var text = ""; //add the full info object text += JSON.stringify(info, null, 2); //add the extraction log var log = archive.getExtractionLog(); if (log) { //add a new line text += "\r\n"; text += log } var links = archive.getDownloadLinks(); //add all affected Links to the file. if (links) { text += "\r\n"; text += "All Links:" for (var i = 0; i < links.length; i++) { var link = links[i]; text += "\r\n"; //add name, url and comment. text += link.getName() + " (" + link.getUrl() + ") " + link.getComment(); } } //define the filepath of the info file var path = archive.getFolder() + "/" + archive.getName() + ".info"; // //write. writeFile(path /*the path*/ , text /*the text to write*/ , true /*append to existing file*/ );
__________________
|
#7
|
|||
|
|||
bekomme leider in der Zeile 9 die Fehlermeldung:
Quote:
Quote:
Funktionier leider nicht, wird kein File erstellt. Muss der Ordner extra erstellt werden, wenn dieser nicht existiert oder passiert das mit dem erstellen der Datei (writeFile)? Last edited by AffenKopf; 10.03.2015 at 20:39. |
#8
|
||||
|
||||
Erstell mir doch mal einen normalen JD Log davon &/Oder komm in unseren Supportchat für eine Teamviewer session. Dann helfe ich dir da.
__________________
|
#9
|
|||
|
|||
so, hab' mein InfoFileWriter-Script fertig.
Triggert auf Event "Package finished" und schreibt in den Download-Ordner ein Info-File "<PackageName>.info", falls die URI zu lang wird, dann "jd.info" Code:
/* Event Script: writeInfoFile Creates an Info-File into the DL-Folder with detailed information Version: 0.10 Requirements: Trigger "Package Finished" Tested: JD2 on Windows7-32bit Platform and jre8 (see path-creation code) */ //---------- Global declarations ----------------- var bWriteFile = false; //pessimistic approach: no file-writing at start, if situation ok, then set it "true" var sInfoFilePath = ""; //the target file, if already available, then APPENDING, else creation var myPackage = package; var aParts = myPackage.getDownloadLinks(); var aArchives = package.getArchives(); // runtime vars var sText = ""; //temporarily used! //---------- ANALYZING SITUATION ---------- if (myPackage.isFinished() == true) { //no further analysis due to Trigger "Package Finished" :-) bWriteFile = true; } if (bWriteFile == true) { //---------- INFO.FILE naming ----------- sInfoFilePath = myPackage.getDownloadFolder() + "/" + myPackage.getName() + ".info"; //<packageFolder>/<packageName>.info if (sInfoFilePath.length > 255) { //path to long! -> shorten!! sInfoFilePath = myPackage.getDownloadFolder() + "/" + "jd.info"; //<packageFolder>/jd.info } //---------- Package Infos ----------- sText = "" sText += "**********************************" + "\r\n" sText += "* P A C K A G E *" + "\r\n" sText += "**********************************" + "\r\n" sText += "Package.Name : " + myPackage.getName() + "\r\n" + "Package.DownloadFolder : " + myPackage.getDownloadFolder() + "\r\n" + "Package.Total : " + myPackage.getBytesTotal() + "\r\n" + "Package.Loaded : " + myPackage.getBytesLoaded() + "\r\n" + "Package.Finished : " + myPackage.isFinished() + "\r\n"; if (myPackage.getComment() != undefined) { sText += "Package.Comment : " + myPackage.getComment() + "\r\n"; } writeFile(sInfoFilePath, sText, true); /*Write [into] a text file*/ //---------- Part Infos ----------- sText = "\r\n" sText += "**********************************" + "\r\n" sText += "* P A R T S *" + "\r\n" sText += "**********************************" + "\r\n" writeFile(sInfoFilePath, sText, true); /*Write [into] a text file*/ for (var i = 0; i < aParts.length; i++) { sText = "Part.Name : " + aParts[i].getName() + "\r\n" + "Part.Status : " + aParts[i].getStatus() + "\r\n" + "Part.Enabled : " + aParts[i].isEnabled() + "\r\n" + "Part.Finished : " + aParts[i].isFinished() + "\r\n" + "Part.Skipped : " + aParts[i].isSkipped() + "\r\n" + "Part.ExtractionStatus : " + aParts[i].getExtractionStatus() + "\r\n" + "Part.Total : " + aParts[i].getBytesTotal() + "\r\n" + "Part.Loaded : " + aParts[i].getBytesLoaded() + "\r\n"; if (aParts[i].getUrl() != undefined) { sText += "Part.URL : " + aParts[i].getUrl() + "\r\n"; } if (aParts[i].getComment() != undefined) { sText += "Part.Comment : " + aParts[i].getComment() + "\r\n"; } var myPart = aParts[i].getArchive(); if (myPart != undefined) { if (myPart.getUsedPassword() != undefined) { sText += "Part.UsedPassword : " + myPart.getUsedPassword() + "\r\n"; } } sText += "--------------------------:-" + "\r\n" writeFile(sInfoFilePath, sText, true); } writeFile(sInfoFilePath, sText, true); /*Write [into] a text file*/ //---------- Archive Infos ----------- sText = "\r\n" sText += "**********************************" + "\r\n" sText += "* A R C H I V E S *" + "\r\n" sText += "**********************************" + "\r\n" writeFile(sInfoFilePath, sText, true); for (var i = 0; i < aArchives.length; i++) { sText = "Archive.Name : " + aArchives[i].getName() + "\r\n" + "Archive.ArchiveTyp : " + aArchives[i].getArchiveType() + "\r\n"; if (aArchives[i].getInfo() != undefined) { sText += "Package.Archive.Info : "; sText += JSON.stringify(aArchives[i].getInfo(), null, 2) + "\r\n"; } sText += "--------------------------:-" + "\r\n" writeFile(sInfoFilePath, sText, true); } }
__________________
Sys-Info: Win10Home32bit | NTFS | OracleJRE1.8 | JD2 with GUI |
#10
|
||||
|
||||
Cool. Darf ich das als Beispielscript integrieren?
__________________
|
#11
|
|||
|
|||
Das Skript stelle ich gerne zur Verfügung.
Anbei das abschließend überarbeitete Skript. Es nicht nicht so ganz stringent (leicht redundant), aber dafür kann man nun leichter Anpassungen einbauen. Code:
/* Event Script: writeInfoFile Creates an Info-File into the DL-Folder with detailed information Version: 0.21 Requirements: Trigger "Package Finished" Tested: JD2 on Windows7-32bit Platform and jre8 (see path-creation code at the end of this script) */ //---------- Global declarations ----------------- var bWriteFile = false; //pessimistic approach: no file-writing at start, if situation ok, then set it "true" var sInfoFilePath = ""; //the target file, if already available, then APPENDING, else creation var sText = ""; //will be filled with content (or not :-) var sInfoFileType = ".info" //set path creation at the end of the script var iContent = 0; //setting bit 1 if pwd is available, setting bit 2 if comments available //if not set, no info file var myPackage = package; var aParts = myPackage.getDownloadLinks(); var aArchives = package.getArchives(); //---------- ANALYZING SITUATION ---------- if (myPackage.isFinished() == true) { //no further analysis due to Trigger "Package Finished" :-) bWriteFile = true; } //---------- Building Info-Text ----------- if (bWriteFile == true) { sText += "**********************************" + "\r\n" sText += "* P A C K A G E *" + "\r\n" sText += "**********************************" + "\r\n" sText += "Package.Name : " + myPackage.getName() + "\r\n" + "Package.DownloadFolder : " + myPackage.getDownloadFolder() + "\r\n" + "Package.Total : " + myPackage.getBytesTotal() + "\r\n" + "Package.Loaded : " + myPackage.getBytesLoaded() + "\r\n" + "Package.Finished : " + myPackage.isFinished() + "\r\n"; if (myPackage.getComment() != undefined) { sText += "Package.Comment : " + myPackage.getComment() + "\r\n"; iContent |= 2; } sText += "\r\n" sText += "**********************************" + "\r\n" sText += "* P A R T S *" + "\r\n" sText += "**********************************" + "\r\n" for (var i = 0; i < aParts.length; i++) { sText += "Part.# : " + i + "\r\n" + "Part.Name : " + aParts[i].getName() + "\r\n" + "Part.Status : " + aParts[i].getStatus() + "\r\n" + "Part.Enabled : " + aParts[i].isEnabled() + "\r\n" + "Part.Finished : " + aParts[i].isFinished() + "\r\n" + "Part.Skipped : " + aParts[i].isSkipped() + "\r\n" + "Part.ExtractionStatus : " + aParts[i].getExtractionStatus() + "\r\n" + "Part.Total : " + aParts[i].getBytesTotal() + "\r\n" + "Part.Loaded : " + aParts[i].getBytesLoaded() + "\r\n"; if (aParts[i].getUrl() != undefined) { sText += "Part.URL : " + aParts[i].getUrl() + "\r\n"; } if (aParts[i].getComment() != undefined) { sText += "Part.Comment : " + aParts[i].getComment() + "\r\n"; iContent |= 2; } var myArchive = aParts[i].getArchive(); if (myArchive != undefined) { if (myArchive.getUsedPassword() != undefined) { sText += "Part.UsedPassword : " + myArchive.getUsedPassword() + "\r\n"; iContent |= 1; } } sText += "--------------------------:-" + "\r\n" } sText += "\r\n" sText += "**********************************" + "\r\n" sText += "* A R C H I V E S *" + "\r\n" sText += "**********************************" + "\r\n" for (var i = 0; i < aArchives.length; i++) { sText += "Archive.# : " + i + "\r\n" + "Archive.Name : " + aArchives[i].getName() + "\r\n" + "Archive.ArchiveTyp : " + aArchives[i].getArchiveType() + "\r\n"; if (aArchives[i].getInfo() != undefined) { sText += "Package.Archive.Info : "; sText += JSON.stringify(aArchives[i].getInfo(), null, 2) + "\r\n"; } sText += "--------------------------:-" + "\r\n" } } //---------- INFO.FILE naming and writing ----------- if (bWriteFile == true && iContent > 0) { //comment out or set "iContent >= 0" if info-file should be written always //- path creation sInfoFileType = "." + iContent + sInfoFileType //add content-type hint to filetype sInfoFilePath = myPackage.getDownloadFolder() + "/" + myPackage.getName() + sInfoFileType; //<packageFolder>/<packageName>.<iContent>.info if (sInfoFilePath.length > 255) { //path to long! -> shorten!! sInfoFilePath = myPackage.getDownloadFolder() + "/jd" + sInfoFileType; //<packageFolder>/jd.<iContent>.info } //- writing try { writeFile(sInfoFilePath, sText, true); } catch (e) { //no error handling implemented ! } }
__________________
Sys-Info: Win10Home32bit | NTFS | OracleJRE1.8 | JD2 with GUI |
#12
|
|||
|
|||
Sieht ja alles ganz logisch aus, funktioniert leider auch nicht bei mir.
Von dem Skript von "ottoS" bekomme ich ein Fehler Zeile 24 ("var aArchives = package.getArchives();"). Habe in die Werkzeugzeile den Menüpunkt "OpenDefaultDownloadFolderAction (Den Standard-Downloadordner öffnen)" hinzugefügt und das hat auch keine Funktion. Vielleicht hat einer eine Idee, warum das nicht funktioniert. Habe extra JD2 neu installiert, im standard Ordner diesmal, sonst ist es"C:\Program Files (x86)\JDownloader v2.0". Der Downloadordner ist "C:\Datei\Dateien\JDownloader", das System ist "Win 7 Ultimate x64". Als Admin starten bringt leider kein Unterschied. Habe auch schon Java aktualisiert. Muss ich noch irgendwas aktivieren außer den Eventscripter mit Skript? |
#13
|
||||
|
||||
AffenKopf:
komm wegen dem Script mal in den Chat bitte. Für Teamviewer Support. OpenDefaultDownloadFolderAction funktioniert 1A. Eventl. sollten wir auch das über Teamviewer klären.
__________________
|
#14
|
|||
|
|||
Hallo JD Team,
Ich habe ein Problem mit dem EventScripter. Und zwar wollte ich erstmals durch die vorhandenen Scripts testen wie das ganze Funktioniert. Jedoch erstellt er mir dieser keine Info File. Hat jemand ein Tipp für mich? |
#15
|
||||
|
||||
Im Chat oder via support@jdownloader.org melden. Welches Problem genau hast du?
__________________
JD-Dev & Server-Admin |
#16
|
|||
|
|||
Coalado hat mir erklärt, das Script ist so eingestellt, dass es nur Files/Dateien schreibt wenn entweder extract passwort oder comment gesetzt ist.
Heißt iContent sollte hier auf 1 gesetzt werden. Danach läuft das Script ohne Probleme durch. Danke an das Team. |
#17
|
||||
|
||||
Danke fürs Feedback
__________________
JD-Dev & Server-Admin |
|
|