JDownloader Community - Appwork GmbH
 

Reply
 
Thread Tools Display Modes
  #3081  
Old 22.11.2024, 15:49
Trap Trap is offline
Junior Loader
 
Join Date: Aug 2024
Posts: 11
Default

Quote:
Originally Posted by mgpai View Post
Thanks



Yes.

Okay, seems that my previous attempts with scripts broke something, loaded a backup and it works flawlessly.

Thank you!
Reply With Quote
  #3082  
Old 22.11.2024, 16:41
mgpai mgpai is offline
Script Master
 
Join Date: Sep 2013
Posts: 1,656
Default

Quote:
Originally Posted by Trap View Post
Okay, seems that my previous attempts with scripts broke something, loaded a backup and it works flawlessly.

Thank you!
You're welcome.
Reply With Quote
  #3083  
Old 26.11.2024, 00:41
wkearney99 wkearney99 is offline
DSL Light User
 
Join Date: May 2024
Posts: 33
Default

Is there a reason there's not a separate subforum just for Event Scripter discussions?

https://board.jdownloader.org/showth...366#post541366
Reply With Quote
  #3084  
Old 26.11.2024, 02:31
wkearney99 wkearney99 is offline
DSL Light User
 
Join Date: May 2024
Posts: 33
Default

I've come across a number of sites that now include #hashtag text in the filenames. I don't want those, as they tend to make the pathname excessively long.

I raised the question on this thread.

I wrote this script to strip them out. It's called via a Packagizer Hook:

Code:
if (linkcheckDone) {

    var myPackagizerLink = link;
    var fileName = myPackagizerLink.getName();
    var re, ext, newName;

    if (fileName !== null && fileName.includes("#")) {

        ext = fileName.slice((fileName.lastIndexOf(".") - 1 >>> 0) + 2);
        if (ext !== "") {
            ext = "." + ext.toLowerCase();
        }

        fileName = fileName.substr(0, (fileName.length - ext.length));

        rgx = new RegExp("#[a-zA-Z0-9_]+", "gi");
        newName = fileName.replace(rgx, "");

        rgx = new RegExp("\\s\\s+", "gi");
        newName = newName.replace(rgx, " ");

        newName = newName.trim();

        myPackagizerLink.setName(newName + ext);
    }
}
I'd welcome suggestions on improving it, or accomplishing the goal in another manner.
Reply With Quote
  #3085  
Old 26.11.2024, 11:34
pspzockerscene's Avatar
pspzockerscene pspzockerscene is offline
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 73,786
Default

New separate subforum for EventScripter scripts:
https://board.jdownloader.org/forumdisplay.php?f=52
__________________
JD Supporter, Plugin Dev. & Community Manager

Erste Schritte & Tutorials || JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
Reply With Quote
  #3086  
Old 28.11.2024, 16:08
pspzockerscene's Avatar
pspzockerscene pspzockerscene is offline
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 73,786
Default

Moved EventScripter thread in our new EventScripter subforum and pinned it there.
__________________
JD Supporter, Plugin Dev. & Community Manager

Erste Schritte & Tutorials || JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
Reply With Quote
Old 08.12.2024, 17:49
StefanM
Message deleted by pspzockerscene. Reason: User requested deletion of this post
Old 08.12.2024, 17:51
StefanM
Message deleted by pspzockerscene. Reason: User requested deletion of this post
  #3087  
Old 16.01.2025, 23:43
GTAINGLHERR GTAINGLHERR is offline
Baby Loader
 
Join Date: Oct 2022
Posts: 7
Default

Hallo
ich melde mich wieder nach 3 Jahren. Ich habe nun das was ich von Anfang an wollte nämlich, dass das Script Serien und Filme unterscheiden kann und zusätzlich nach dem Entpacken im Entpackverzeichnis in jeden Ordner geht und guckt ob sich da Videodateien befinden und diese in ein anderes Verzeichnis verschiebt sowie umbenannt. Dieses Script möchte ich euch nicht vorenthalten. Ich finds genial.
// Trigger: Entpacken beendet
Spoiler:
sleep(1500);
var myArchive = archive;

// Schritt 1: Paketnamen aus Datei lesen
var packageName;
try {
var filePath = "R:\\Dateiname.txt";
var fileContent = readFile(filePath);
packageName = fileContent.split("\n")[0].trim();
log("Paketname aus Datei geladen: " + packageName);
} catch (e) {
log("Fehler beim Lesen des Paketnamens aus Datei: " + e.message);
packageName = "Unbekannt";
log("Fortsetzen mit Paketname: 'Unbekannt'");
}

// Schritt 2: Zielordner vorbereiten // -----------------------------------------------------------------------------------------
//var baseTargetDir = "I:\\Neu"; // ------------------------- Ablageort ändern ----------------------------------------
var baseTargetDir = "R:\\zum verschieben"; // ------------------------- Ablageort ändern ----------------------------------------
ensureDirectoryExists(baseTargetDir);

var targetPackageDir = baseTargetDir + "\" + packageName;
ensureDirectoryExists(targetPackageDir);

// Schritt 3: Extrahierten Ordner holen
var extractedFolder = myArchive.getExtractToFolder();
log("Extrahierter Ordner: " + extractedFolder);

// Unterstützte Formate und Konfiguration
var videoFormats = [".mkv", ".avi", ".mp4", ".mov", ".wmv"];
var episodePattern = /(S(\d{2})E\d{2})/i; // "S01E04"-Format
var seasonSuffixPattern = /-(\d+)(?=\.\w+)$/; // "-215.mkv"
var minFileSize = 200 * 1024 * 1024; // Mindestgröße: 200 MB

// Funktion: Sicherstellen, dass ein Ordner existiert
function ensureDirectoryExists(path) {
var dir = getPath(path);
if (!dir.exists()) {
dir.mkdirs();
log("Ordner erstellt: " + path);
}
}

// Funktion: Dateien verarbeiten
function processFile(filePath) {
var file = getPath(filePath);
var fileName = file.getName();
var fileExt = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();

if (videoFormats.indexOf(fileExt) !== -1) {
var match = fileName.match(episodePattern);
var seasonDir;

if (match) {
// Staffel-Ordner erstellen (Basierend auf SXZEXZ)
var seasonNumber = parseInt(match[2], 10);
seasonDir = targetPackageDir + "\\Staffel " + seasonNumber;
log("Match gefunden: S03E03");
} else if ((match = fileName.match(seasonSuffixPattern))) {
// Staffel-Ordner erstellen (Basierend auf -XXX)
var seasonNumber = Math.floor(match[1] / 100); // Staffel aus Nummer ableiten
seasonDir = targetPackageDir + "\\Staffel " + seasonNumber;
log("Match gefunden: Nummer am Ende der Datei");
}

if (seasonDir) {
ensureDirectoryExists(seasonDir);

var tempPath = "R:\\Zwischenspeichern" //+ packageName + fileExt;
var Kopierpfad = "R:\\Zwischenspeichern\" + fileName //+ fileExt;
log("Pfad der Datei zum Kopieren: " + Kopierpfad);
ensureDirectoryExists(tempPath)
var targetFilePath = seasonDir //+ "\" + packageName + fileExt;

try {
// Datei in Zwischenspeicher verschieben und umbenennen
log("Versuch starten: " + tempPath);
file.moveTo(getPath(tempPath));
log("Datei umbenannt und in Zwischenspeicher verschoben: " + tempPath);

// Datei aus Zwischenspeicher kopieren und löschen
var tempFile = getPath(Kopierpfad);
tempFile.copyTo(getPath(targetFilePath));
tempFile.delete();
log("Datei aus Zwischenspeicher verschoben nach: " + targetFilePath + " und gelöscht in " + tempPath);
} catch (e) {
log("Fehler beim Verarbeiten der Datei: " + e.message);
}
} else if (file.size > minFileSize) {

// Film: Datei in Zwischenspeicher und Zielordner verschieben
ensureDirectoryExists("R:\\Zwischenspeichern")
var tempPath = "R:\\Zwischenspeichern\" + packageName + fileExt;
var targetFilePath = targetPackageDir //+ "\" + packageName + fileExt; // zum kopieren mit Datenamen und Extension

try {
file.renameTo(tempPath);
log("Film umbenannt und in Zwischenspeicher verschoben: " + tempPath);

var tempFile = getPath(tempPath);
tempFile.copyTo(getPath(targetFilePath));
tempFile.delete();
log("Film aus Zwischenspeicher verschoben nach: " + targetFilePath);
} catch (e) {
log("Fehler beim Verschieben des Films: " + e.message);
}
} else {
log("Datei ignoriert (zu klein): " + filePath);
}
} else {
log("Datei ignoriert (kein Videoformat): " + filePath);
}
}

// Funktion: Verzeichnis rekursiv durchsuchen
function traverseDirectory(dirPath) {
var dir = getPath(dirPath);
if (!dir.exists()) {
log("Verzeichnis nicht gefunden: " + dirPath);
return;
}

dir.getChildren().forEach(function (item) {
if (item.isFile()) {
processFile(item.getAbsolutePath());
} else if (item.isDirectory()) {
traverseDirectory(item.getAbsolutePath());
}
});

if (dir.getChildren().length === 0) {
dir.delete();
log("Leeres Verzeichnis gelöscht: " + dirPath);
}
}

// Schritt 4: Verarbeitung starten
traverseDirectory(extractedFolder);

// Schritt 5: "Dateiname.txt" löschen
try {
var txtFile = getPath(filePath);
if (txtFile.exists()) {
txtFile.delete();
log("Dateiname.txt gelöscht.");
}
} catch (e) {
log("Fehler beim Löschen von Dateiname.txt: " + e.message);
}

log("Verarbeitung abgeschlossen.");

Momentan schreibe ich mit dem "Download ist gestoppt" Event den Paketnamen in eine Datei und lese sie mit diesem Script aus.
Kann mir jemand sagen wie ich den Paketnamen direkt in die Variable schreiben kann. Weil wenn während dem entpacken ein anderes Paketteil von einem anderen Paket fertiggeladen ist, wird die Datei "Dateiname" überschrieben und die entpackten Dateien an den falschen Ort verschoben.
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 04:53.
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 - 2025, Jelsoft Enterprises Ltd.