JDownloader Community - Appwork GmbH
 

Reply
 
Thread Tools Display Modes
  #1  
Old 16.01.2025, 23:43
GTAINGLHERR GTAINGLHERR is offline
Baby Loader
 
Join Date: Oct 2022
Posts: 7
Default Move finished downloads

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 02:16.
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.