Advertisement
usamimi2323

JDownloader2 EventScript - DL完了時に同じ名前のファイルを無効化

Nov 11th, 2023
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 2.61 KB | Source Code | 0 0
  1. //
  2. // JDownloader2 EventScript - DL完了時に同じ名前のファイルを無効化
  3. //
  4. // DL完了時に同一パッケージ内に同じファイル名(拡張子を含まない)で
  5. // 未完了のリンクがあれば無効化
  6. // ※ ファイル拡張子が違えばミラーとして認識されず、パッケージの進捗状況を100%にならないため
  7. //
  8. //
  9. // トリガー:【ダウンロード停止時】
  10. //
  11. //
  12. // ミラー扱いする拡張子リスト
  13. // (おそらくZIPとRARで事足りる。nullだと全拡張子が対象)
  14. //
  15. ////////////////////////////////////////////////////////////////////////////////
  16.  
  17.  
  18. const MirrorDetect_Extensions = ['rar','zip'];
  19. //const MirrorDetect_Extension = null;
  20.  
  21.  
  22. ////////////////////////////////////////////////////////////////////////////////
  23.  
  24. const SCRIPT_ID='48FBC19759B1B2DB9136746E0DD2B927';
  25. const SCRIPT_NAME='DL完了時に同じ名前のファイルを無効化';
  26. const SCRIPT_TRIGGER='ON_DOWNLOAD_CONTROLLER_STOPPED';
  27. const SCRIPT_VERSION='1.01';
  28.  
  29.  
  30.  
  31. function getFileName(f) // Or FolderName
  32. {
  33.     var r = f.match(/([^\\\/\:]*)[\\\/]*$/);
  34.     return r ? r[1] : '';
  35. }
  36.  
  37. function getExt(f)
  38. {
  39.     var x = getFileName(f);
  40.     var r = x.match(/(\.[\da-z]{2,6})$/i);
  41.     return r ? r[1] : '';
  42. }
  43.  
  44. function getFileSpec(f)
  45. {
  46.     var x = getFileName(f);
  47.     var r = x.match(/^([^\\\/\:]*?)(\.[\da-z]{2,6})?$/i);
  48.     return r ? r[1] : f;
  49. }
  50.  
  51.  
  52. function checkMirror(l_param)
  53. {
  54.     var ln = l_param.name;
  55.     var mde_regexp = null;
  56.    
  57.     if (MirrorDetect_Extensions && MirrorDetect_Extensions.length)
  58.     {
  59.         mde_regexp = new RegExp('^\.(?:'+MirrorDetect_Extensions.join('|')+')$','i');
  60.         if (false == mde_regexp.test(getExt(ln)))
  61.             return;
  62.     }
  63.    
  64.     var fs = getFileSpec(ln);
  65.     var p = l_param.package;
  66.     p.downloadLinks.forEach(function (p_l)
  67.     {
  68.         // 拡張子抜きのファイル名が一致して未完了だったら無効化する
  69.         var n = p_l.name;
  70.         if (fs == getFileSpec(n) && ( mde_regexp === null || mde_regexp.test(getExt(n)) ) && false == p_l.isFinished())
  71.             p_l.setEnabled(false);
  72.     });
  73. }
  74.  
  75.  
  76. // ダウンロード停止時
  77. var l = null;
  78. try{
  79.     l=link
  80. }catch(e){
  81.     throw Error(
  82.         'イベントトリガーのタイプが正しく設定されていません\r\n\r\n'+
  83.         '解決方法:イベントスクリプトの設定から本スクリプトのトリガーに\r\n'+
  84.         '     【ダウンロード停止時】を選択し、\r\n'+
  85.         '     リストビュー画面の右クリックのコンテキストメニューから実行してください\r\n'
  86.     );
  87. }
  88. if (l && l.isFinished() && ! l.package.isFinished())
  89. {
  90.     checkMirror(l);
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement