Advertisement
jhn

Audiobook M3U Generator

jhn
Mar 8th, 2014
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @script jscript
  2. function zeroPad(num)
  3. {
  4.   var numZeropad = num + '';
  5.   while(numZeropad.length < 2){
  6.   numZeropad = "0" + numZeropad;
  7. }
  8. return numZeropad;
  9. }
  10. function numberCDS(CD){
  11.   var getCDNumber = zeroPad(CD);
  12. return getCDNumber;
  13. }
  14. function isAudio(extension)
  15. {
  16.   switch (extension.toLowerCase()){
  17.   case '.mp3':
  18.   case '.wav':
  19.   case '.ogg':
  20.   case '.m4v':
  21.   case '.flac':
  22.   case '.wma':
  23.       return true;
  24.     }
  25.   return false;
  26. }
  27. function OnClick(ClickData)
  28. {
  29.       var objCmd = ClickData.Func.Command;
  30.       var allFiles = objCmd.sourcetab.files;
  31.       var objEnum = new Enumerator(allFiles);
  32.       if (!objEnum.atEnd())
  33.       {
  34.               // build an array of the files so we can sort it
  35.               var objFiles = new Array();
  36.               i = 0;
  37.               while (!objEnum.atEnd())
  38.               {
  39.                     objFiles[i] = objEnum.item();
  40.                     if (isAudio(objFiles[i].ext) == false)
  41.                     {
  42.                       objFiles.splice (i, 1);
  43.                     }
  44.                     ++i;
  45.                     objEnum.moveNext();
  46.               }
  47.       objFiles.sort();
  48.       ClickData.func.command.ClearFiles();
  49.       audiobookFolderName = objCmd.sourcetab.path.filepart;
  50.       var audiobookFolderPath = objCmd.sourcetab.path;
  51.       var fso, f1;
  52.       var ForWriting = 2;
  53.       var totalNumberOfFiles = objCmd.sourcetab.stats.files;
  54.       var Dopus = DOpus.CreateCommand;
  55.       var dlg = Dopus.Dlg;
  56.       dlg.window = DOpus.Listers(0);
  57.       dlg.message = "Split audiobook every nth file:";
  58.       dlg.title = "Audiobook M3U Generator";
  59.       dlg.buttons = "OK|Cancel";
  60.       dlg.choices = DOpus.NewVector("2", "3", "4", "5", "6", "7", "8", "9", "10")
  61.       dlg.selection = 0
  62.       ret = dlg.show;
  63.       if (ret == 0)
  64.       {
  65.            return;
  66.       }
  67.       var chosenOutput = dlg.choices(dlg.selection);
  68.       switch (chosenOutput){
  69.       case '2':
  70.       var chosenNumber = 2;
  71.       break;
  72.       case '3':
  73.       var chosenNumber = 3;
  74.       break;
  75.       case '4':
  76.       var chosenNumber = 4;
  77.       break;
  78.       case '5':
  79.       var chosenNumber = 5;
  80.       break;
  81.       case '6':
  82.       var chosenNumber = 6;
  83.       break;
  84.       case '7':
  85.       var chosenNumber = 7;
  86.       break;
  87.       case '8':
  88.       var chosenNumber = 8;
  89.       break;
  90.       case '9':
  91.       var chosenNumber = 9;
  92.       break;
  93.       case '10':
  94.       var chosenNumber = 10;
  95.       break;
  96.       }
  97.       var x = totalNumberOfFiles / chosenNumber;
  98.       var totalCDs = Math.floor(x);
  99.       if ((totalNumberOfFiles % chosenNumber) !== 0)
  100.       {
  101.         totalCDs = Math.floor(x) + 1;
  102.         totalNumberOfFiles = totalNumberOfFiles + 10;
  103.       }
  104.       var m3uName;
  105.       function createCD(currentCDNumber)
  106.       {
  107.         var getCdNumber = numberCDS(currentCDNumber);
  108.           if (currentCDNumber <= totalCDs)
  109.           {
  110.             m3uName = audiobookFolderName + "_CD" + getCdNumber + ".m3u";
  111.             return m3uName;
  112.           }
  113.       }
  114.         fso = new ActiveXObject("Scripting.FileSystemObject");
  115.         var i = 0;
  116.         var k = 1;
  117.         do {
  118.             for(incrementbyChosen = 0; incrementbyChosen <= totalNumberOfFiles; incrementbyChosen += chosenNumber)
  119.             {
  120.               createCD(k);
  121.               if (k * chosenNumber == incrementbyChosen)
  122.               {
  123.                 if (typeof m3uName !== "undefined")
  124.                 {
  125.                 f1 = fso.CreateTextFile(audiobookFolderPath + "\\" + m3uName, ForWriting);
  126.                 }
  127.                 for (i; i < objFiles.length && i < incrementbyChosen; i++)
  128.                 {
  129.                     if (objFiles[i] != null)
  130.                     {
  131.                          f1.Write((objFiles[i].name) + '\r');
  132.                     }
  133.                 }
  134.               }
  135.             }
  136.             k++;
  137.         } while (k <= totalCDs);
  138.       {
  139.       delete objFiles;
  140.       }
  141.    delete objEnum;
  142.    }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement