Guest User

check_mirror for JDownloader EventScript

a guest
Jun 23rd, 2023
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. // Trigger:"新規ファイル生成時"
  3. //
  4. // DL完了時に同一パッケージ内に同じファイル名(拡張子を含まない)で
  5. // 未完了のリンクがあれば無効化する
  6. // 完了したパッケージがあれば一番下にする
  7. //
  8. // ※ 圧縮形式違いのファイルなどファイル拡張子が違えばミラーとして認識されず
  9. // パッケージの進捗状況が100%にならないため
  10. //
  11.  
  12. function getFileName(f) // Or FolderName
  13. {
  14.     var r = f.match(/([^\\\/\:]*)[\\\/]*$/);
  15.     return r ? r[1] : '';
  16. }
  17.  
  18. function getFileSpec(f)
  19. {
  20.     var x = getFileName(f);
  21.     var r = x.match(/^([^\\\/\:]*?)(\.[0-9a-zA-Z]{2,6})?$/);
  22.     return r ? r[1] : '';
  23. }
  24.  
  25. function check_mirror(fl)
  26. {
  27.     var ps = [];
  28.     var all_l = getAllDownloadLinks();
  29.     fl.forEach(function (path)
  30.     {
  31.         var fs = getFileSpec(path);
  32.         all_l.some(function (l)
  33.         {
  34.             if (l.getDownloadPath() == path)
  35.             {
  36.                 var p = l.getPackage();
  37.                 p.getDownloadLinks().forEach(function (p_l)
  38.                 {
  39.                     // 拡張子抜きのファイル名が一致して未完了だったら無効化する
  40.                     if (fs == getFileSpec(p_l.getName()) && ! p_l.isFinished())
  41.                         p_l.setEnabled(false);
  42.                 });
  43.                 if (p.isFinished()) ps.push(p.getUUID());
  44.                 return true;
  45.             }
  46.         });
  47.     });
  48.    
  49.     // 完了したパッケージがあれば一番下へ移動 (一番上へ移動ならcallAPIの最後の引数を-1にする)
  50.     if (0 < ps.length)
  51.         callAPI('downloadsV2', 'movePackages', ps, all_l[all_l.length-1].getPackage().getUUID());
  52. }
  53.  
  54. check_mirror(files);
  55.  
Advertisement
Add Comment
Please, Sign In to add comment