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.");