Advertisement
Guest User

JDownloader Filebot Call

a guest
May 27th, 2015
1,111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var logfile = "C:/log/jdownloader-eventscripter.log"; // File this script logs to
  2. var command = "filebot"; // Change this if filebot isn't on your path
  3. var archiveExtensions = /(\.(zip|rar|7z|par\d+|part\d+|r\d+|t\d+|\d{3}))$/; // Regex to test for nested archives in extracted files
  4.  
  5. var defs = {
  6.     "plex"           : "ZEUS",
  7.     "unsorted"       : "y",
  8.     "skipExtract"    : "y",
  9.     "clean"          : "y",
  10.     "minFileSize"    : "104857600",
  11.     "excludeList"    : "C:/Util/amc-input.txt",
  12.     "seriesFormat"   : "D:/Serien/{n}/{'Season '+s}/{n} - {s00e00} - {t}",
  13.     "movieFormat"    : "D:/Filme/{n} ({y}) [{vf}]/{n} ({y}) [{vf}]"
  14. };
  15.  
  16. var options = {
  17.     "-script"    : "fn:amc",
  18.     "--log-file" : "C:/log/filebot.log",
  19.     "--action"   : "move",
  20.     "--conflict" : "auto"
  21. };
  22.  
  23. var switches = [
  24.     "-non-strict"
  25. ];
  26.  
  27. var logBuf = "";
  28.  
  29. function log(message) {
  30.     logBuf += new Date().toISOString().slice(0, 19) + " - " + message + "\r\n";
  31. }
  32.  
  33. function logArray(message, arr) {
  34.     log(message);
  35.  
  36.     if (arr == null) {
  37.         log("\tnone");
  38.         return;
  39.     }
  40.  
  41.     for (var i = 0; i < arr.length; i++) {
  42.         log("\t" + arr[i]);
  43.     }
  44. }
  45.  
  46. function logSpacer() {
  47.     log("++++++++++++++++++++++++++++++");
  48. }
  49.  
  50. function flushLog() {
  51.     writeFile(logfile, logBuf, true);
  52.     logBuf = "";
  53. }
  54.  
  55. function quoteIfNecessary(value) {
  56.     return (value != null && value.indexOf(' ') >= 0) ? '"' + value + '"' : value;
  57. }
  58.  
  59. function reduce(map, joinChar) {
  60.     var keyValuePairs = [];
  61.  
  62.     for (var key in map) {
  63.         keyValuePairs[keyValuePairs.length] = key + joinChar + quoteIfNecessary(map[key]);
  64.     }
  65.  
  66.     return keyValuePairs;
  67. }
  68.  
  69. function mapToArray(map) {
  70.     var array = [];
  71.  
  72.     for(var key in map) {
  73.         array[array.length] = key;
  74.         array[array.length] = quoteIfNecessary(map[key]);
  75.     }
  76.  
  77.     return array;
  78. }
  79.  
  80. function createArgumentArray(cmd, options, switches, inputs, defs) {
  81.     return [cmd].concat(options).concat(switches).concat(inputs).concat(["--def"]).concat(defs);
  82. }
  83.  
  84. function isArchiveFile(filename) {
  85.     return archiveExtensions.test(filename);
  86. }
  87.  
  88. function containsNestedArchive(extractedFiles) {
  89.     for (var i = 0; i < extractedFiles.length; i++) {
  90.         if (isArchiveFile(extractedFiles[i])) {
  91.             return true;
  92.         }
  93.     }
  94.  
  95.     return false;
  96. }
  97.  
  98. function sanitizeInput(input) {
  99.     var sanitizedInput = [];
  100.  
  101.     for(var i = 0; i < input.length; i++) {
  102.         sanitizedInput[sanitizedInput.length] = quoteIfNecessary(input[i]);
  103.     }
  104.  
  105.     return sanitizedInput;
  106. }
  107.  
  108. var archiveUID = archive.getFolder() + "\\" + archive.getName();
  109. var extractedFiles = archive.getExtractedFiles();
  110.  
  111. logSpacer();
  112. log("FINISHED EXTRACTION - " + archiveUID);
  113. log("Containing Folder: " + archive.getFolder());
  114. log("Type: " + archive.getArchiveType());
  115. logArray("Extracted files:", extractedFiles);
  116.  
  117. if(extractedFiles == null || extractedFiles.length == 0) {
  118.     log("SKIPPING - No files extracted.");
  119. } else if (containsNestedArchive(extractedFiles)) {
  120.     log("SKIPPING - Nested archive detected.");
  121. } else {
  122.     var input = sanitizeInput(extractedFiles);
  123.     var arguments = createArgumentArray(command, mapToArray(options), switches, input, reduce(defs, "="));
  124.     log("RUNNING SCRIPT - " + archiveUID);
  125.  
  126.     callAsync(
  127.         function(exitCode, stdOut, errOut) {
  128.             if (exitCode == 0) {
  129.                 log("SUCCESS - " + archiveUID);
  130.             } else {
  131.                 log("ERROR - " + archiveUID + " - Code " + exitCode);
  132.             }
  133.  
  134.             flushLog();
  135.         },
  136.         arguments
  137.     );
  138. }
  139.  
  140. logSpacer();
  141. flushLog();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement