Advertisement
usamimi2323

JDownloader2 EventScript - DL完了時にRAR5を無圧縮ZIPに自動変換

Nov 11th, 2023
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 2.13 KB | Source Code | 0 0
  1. //
  2. // JDownloader2 EventScript - DL完了時にRAR5を無圧縮ZIPに自動変換
  3. //
  4. // トリガー:【新しいファイル作成時】
  5. //
  6. // rar_pathにrar.exeのパスを
  7. // winrar_pathにWinRAR.exeのパスを設定すること
  8. //
  9. ////////////////////////////////////////////////////////////////////////////////
  10.  
  11.  
  12. // "rar.exe"
  13. var rar_path    = 'C:\\program files\\WinRAR\\Rar.exe';
  14.  
  15. // "winrar.exe"
  16. var winrar_path = 'C:\\program files\\WinRAR\\WinRAR.exe';
  17.  
  18.  
  19. ////////////////////////////////////////////////////////////////////////////////
  20.  
  21. // 識別用
  22. const SCRIPT_ID='8394DC648ADD83A7DE1E4586667651B8';
  23. const SCRIPT_NAME='RAR5→ZIP自動変換';
  24. const SCRIPT_TRIGGER='ON_NEW_FILE';
  25. const SCRIPT_VERSION='1.01';
  26.  
  27. function isRAR5(file_path)
  28. {
  29.     //
  30.     // "rar.exe l -c- <file>"
  31.     //
  32.     var res = callSync('"'+rar_path+'"', 'l', '-c-', '"'+file_path+'"');
  33.    
  34.     var reg_exp = /^[^ \t]+: RAR 5/m;;  // RAR書庫バージョン5のみ真
  35. //  var reg_exp = /^[^ \t]+: RAR \d/m;  // RAR書庫全て真
  36.  
  37.     return(res && reg_exp.test(res))
  38. }
  39.  
  40. function convertRAR5ToZIP(file_path)
  41. {
  42.     //
  43.     // winrar.exeに渡すコマンドライン、バックグラウンド処理で無圧縮ZIPに変換
  44.     // 別形式に変換したい場合は、以下の部分を変更する(ZIP書庫:-afzip, 無圧縮:-m0)
  45.     //
  46.     var winrar_cmdline = 'cv -afzip -m0 -df -ac -ibck -y --';
  47.    
  48.     if (! isRAR5(file_path)) return;
  49.    
  50.     // マルチボリュームは変換しない
  51.     if (/\.part\d+\.rar$/.test(file_path)) return;
  52.    
  53.     // winrar.exe で変換
  54.     var params = [];
  55.     params.push('"'+winrar_path+'"');
  56.     params = params.concat(winrar_cmdline.split(' '));
  57.     params.push('"'+file_path+'"');
  58.     callAsync(null, params);
  59. }
  60. var fl = null;
  61. try{
  62.     fl = files;
  63. }
  64. catch(e){
  65.     throw Error(
  66.         'イベントトリガーのタイプが正しく設定されていません\r\n\r\n'+
  67.         '解決方法:イベントスクリプトの設定から本スクリプトのトリガーに\r\n'+
  68.         '     【新しいファイル作成時】を選択してください\r\n'
  69.     );
  70. }
  71.  
  72. fl && fl.forEach(function(f) {
  73.     (/\.rar$/i.test(f)) && convertRAR5ToZIP(f);
  74. });
  75.  
  76.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement