Re: Exclude Blacklist & Series-Mappings
Posted: 25 Jan 2016, 19:37
Added to series alias.
The ultimate TV and Movie Renamer
https://www.filebot.net/forums/
Code: Select all
11.22.63 11/22/63
Code: Select all
var script = JD_HOME + '/jdownloader-postprocess.sh'
var path = package.getDownloadFolder()
var name = package.getName()
var label = package.getComment() ? package.getComment() : 'N/A'
var links = package.getDownloadLinks() ? package.getDownloadLinks() : []
function isReallyFinished() {
for (var i = 0; i < links.length; i++) {
if (links[i].getArchive() != null && links[i].getExtractionStatus() != "SUCCESSFUL" || !package.isFinished()) {
return false
}
}
return true
}
if (isReallyFinished()) {
var command = [script, path, name, label, 'PACKAGE_FINISHED']
log(command)
log(callSync(command))
}
Code: Select all
#!/bin/sh
# org.jdownloader.extensions.eventscripter.EventScripterExtension.scripts.json
# [{"eventTrigger":"ON_PACKAGE_FINISHED","enabled":true,"name":"Execute FileBot (PackageFinished)","script":"var script = JD_HOME + '/jdownloader-postprocess.sh'\n\nvar path = package.getDownloadFolder()\nvar name = package.getName()\nvar label = package.getComment() ? package.getComment() : 'N/A'\n\nvar command = [script, path, name, label, 'PACKAGE_FINISHED']\n\nlog(command)\nlog(callSync(command))\n","eventTriggerSettings":{}} ]
# Input Parameters
ARG_PATH="$1"
ARG_NAME="$2"
ARG_LABEL="$3"
# Configuration
CONFIG_OUTPUT="T:/_TV Shows"
filebot -script fn:amc "D:/_JDownloader Downloads" --output "T:/_TV Shows" --log-file amc.log --action copy --conflict skip -non-strict --def clean=y --def excludeList=amc.txt --def "seriesFormat=t:/_TV Shows/{n.replaceAll(/\.:/,'-').replacePart('')}/{'Season '+s}/{n.replaceAll(/\./,'-').replacePart('')} - {s00e00} - {t.replace('?', '').replaceAll(/\.:/,'-').replacePart(', Part $1')}{' ('+fn.match(/Uncensored/)+')'} [{airdate.format('MM-dd-yyy')}]({VF}{'.'+SOURCE}{'.'+VC}{'.'+AC}{'.'+AF}{'.'+fn.match(/DD5.1/)})" --def skipExtract=n --def deleteAfterExtract=y
Code: Select all
var command = "filebot.exe"; // Change this if filebot isn't on your path
var logfile = "D:/jdownloader-eventscripter.log"; // File this script logs to. Use forward slashes as path separators!
var filebotLogfile = "D:/filebot.log"; // File that filebot will log to. Use forward slashes as path separators!
var downloadBase = "D:/\Downloads/\extracted"; // Base folder under which your download packages reside. Use escaped backslashes as path separators!
var archiveExtensions = /(\.(zip|rar|7z|par\d+|part\d+|r\d+|t\d+|\d{3}))$/; // Regex to test for nested archives in extracted files
// Parameters for the scripts to run
var params = {
"rename": {
"options": {
"-script": "fn:amc",
"--log-file": filebotLogfile,
"--action": "move",
"--conflict": "override",
"--lang": "de"
},
"defs": {
"plex": "crack00r",
"unsorted": "y",
"skipExtract": "y",
"clean": "y",
"minFileSize": "104857600",
"excludeList": "D:/amc-input.txt",
"seriesFormat": "D:/Filme/Filme/Serien/{n}/{'Staffel '+s}/{n} - {s00e00} - {t}",
"movieFormat": "D:/Filme/Filme/Filme/{n} ({y})"
},
"switches": [
"-non-strict"
]
},
"cleaner": {
"options": {
"-script": "fn:cleaner",
"--log-file": filebotLogfile
},
"defs": {
"root": "y"
},
"switches": []
}
}
var logBuf = "";
function log(message) {
logBuf += new Date().toISOString().slice(0, 19) + " - " + message + "\r\n";
}
function logArray(message, arr) {
log("\t" + message);
if (arr == null) {
log("\t\tnone");
return;
}
for (var i = 0; i < arr.length; i++) {
log("\t\t" + arr[i]);
}
}
function logSpacer() {
log("++++++++++++++++++++++++++++++");
}
function flushLog() {
// Comment out the next two lines to prevent log from being written to file
writeFile(logfile, logBuf, true);
logBuf = "";
}
function quoteIfNecessary(value) {
return (value != null && value.indexOf("\"") < 0) ? '"' + value + '"' : value;
}
function quoteArrayElements(input) {
var result = [];
for (var i = 0; i < input.length; i++) {
result[result.length] = quoteIfNecessary(input[i]);
}
return result;
}
function reduce(map, joinChar) {
var keyValuePairs = [];
for (var key in map) {
keyValuePairs[keyValuePairs.length] = key + joinChar + map[key];
}
return keyValuePairs;
}
function mapToArray(map) {
var array = [];
for (var key in map) {
array[array.length] = key;
array[array.length] = map[key];
}
return array;
}
function createArgumentArray(parameters, inputs) {
var options = mapToArray(parameters["options"]);
var switches = parameters["switches"];
var defs = reduce(parameters["defs"], "=");
return [command].concat(options).concat(switches).concat(inputs).concat(["--def"]).concat(defs);
}
function isArchiveFile(filename) {
return archiveExtensions.test(filename);
}
function containsNestedArchive(extractedFiles) {
for (var i = 0; i < extractedFiles.length; i++) {
if (isArchiveFile(extractedFiles[i])) {
return true;
}
}
return false;
}
function getPackageRoot(folder) {
return folder.substring(0, folder.indexOf("\\", downloadBase.length + 1));
}
var archiveFolder = archive.getFolder();
var archiveName = archive.getName();
var archiveType = archive.getArchiveType();
var extractedFiles = archive.getExtractedFiles();
var archiveUID = archiveFolder + "\\" + archiveName;
var packageRoot = getPackageRoot(archiveFolder);
logSpacer();
log("FINISHED EXTRACTION - " + archiveUID);
log("\tType: " + archiveType);
log("\tPackage root: " + packageRoot);
logArray("Extracted files:", extractedFiles);
if (extractedFiles == null || extractedFiles.length == 0) {
log("SKIPPING - No files extracted.");
} else if (containsNestedArchive(extractedFiles)) {
log("SKIPPING - Nested archive detected.");
} else {
var renameInputs = quoteArrayElements(extractedFiles);
var renameArgs = createArgumentArray(params["rename"], renameInputs);
log("RUNNING SCRIPT - " + archiveUID);
callAsync(
function(exitCode, stdOut, errOut) {
if (exitCode == 0) {
log("SUCCESS - " + archiveUID);
var cleanerArgs = createArgumentArray(params["cleaner"], packageRoot);
log("CLEANING - " + packageRoot);
callAsync(
function(exitCode, stdOut, errOut) {
if (exitCode == 0) {
log("ALL CLEAN - " + packageRoot);
} else {
log("STILL DIRTY - " + packageRoot);
}
flushLog();
},
cleanerArgs
);
} else {
log("ERROR - " + archiveUID + " - Code " + exitCode);
}
flushLog();
},
renameArgs
);
}
logSpacer();
flushLog();
Code: Select all
Z:.
│ Brute Force (1947).mp4
│
├───Trailers
│ trailer.mp4
│
└───Featurettes
Paul Mason President Trump Love Letter.mp4
Z:\Brute Force (1947)>
Z:.
│ The 3 Penny Opera (1931).mp4
│
├───Scenes
│ Mack The Knife.mp4
│
├───Shorts
│ Jerry Orbach - Mack the Knife.mp4
│
└───Trailers
trailer.mp4
Z:\The 3 Penny Opera (1931)>