Advertisement
usamimi2323

JDownloader2 EventScript - DL完了時にパッケージを一番上へ移動

Dec 23rd, 2024 (edited)
22
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.  * ※ 完了パッケージ以外の一番上
  5.  *    topOfTop=trueにすれば単なる一番上
  6.  *
  7.  *
  8.  * ■「想定レイアウト」
  9.  * ----------------------------
  10.  * ○完了パッケージ
  11.  * ○完了パッケージ
  12.  * ○完了パッケージ
  13.  * △ダウンロード中…パッケージ
  14.  * △ダウンロード中…パッケージ
  15.  * □未完了パッケージ
  16.  * □未完了パッケージ
  17.  * □未完了パッケージ
  18.  * □未完了パッケージ
  19.  *     ・
  20.  *     ・
  21.  *     ・
  22.  * ----------------------------
  23.  
  24.  * [トリガー]:"ダウンロード停止時"
  25.  *
  26.  */
  27.  
  28. /** @type {boolean} 本当の一番上にしたければ、topOfTopをtrueにする */
  29. //const topOfTop = true;
  30. const topOfTop = false;
  31.  
  32. /** @enum {number} */
  33. const movePackagesTo = {
  34.     top:0,
  35.     bottom:-1,
  36. };
  37. /**
  38.  * パッケージを移動します
  39.  *
  40.  * ※ callAPIのmovePackagesは、after_dest==(0|-1)でTOPに移動するので
  41.  *    -1をbottomとみなし値を設定し直す
  42.  *
  43.  * @param {number[]} packs 移動するパッケージUUIDの配列
  44.  * @param {number} after_dest 指定したUUIDのパッケージの下に移動する
  45.  *     (movePackagesTo.top=0|movePackagesTo.bottom=-1|package.UUID)
  46.  */
  47. function movePackages(pack_uuids, after_dest)
  48. {
  49.     if (!pack_uuids || !Array.isArray(pack_uuids) || !pack_uuids.length) return;
  50.     if (after_dest === undefined)
  51.         after_dest = movePackagesTo.top;
  52.     else if (after_dest == movePackagesTo.bottom)
  53.     {
  54.         const all_p = getAllFilePackages();
  55.         if (all_p.length <= 1) return;
  56.         after_dest = all_p.pop().UUID;
  57.     }
  58.     callAPI('downloadsV2', 'movePackages', pack_uuids, after_dest);
  59. }
  60.  
  61. // ダウンロード停止時
  62. var _link = null;
  63. try{
  64.     _link = link
  65. }catch(e){
  66.     throw Error(
  67.         'イベントトリガーのタイプが正しく設定されていません\r\n\r\n'+
  68.         '解決方法:イベントスクリプトの設定から本スクリプトのトリガーに\r\n'+
  69.         '     【ダウンロード停止時】を選択し、\r\n'+
  70.         '     リストビュー画面の右クリックのコンテキストメニューから実行してください\r\n'
  71.     );
  72. }
  73.  
  74. if (_link && _link.isFinished())
  75. {
  76.     if (! _link.package.isFinished())// wait
  77.         sleep(100);
  78.    
  79.     if (_link.package.isFinished())
  80.     {
  81.         var dest = movePackagesTo.top;
  82.         if (topOfTop || getAllFilePackages().some(function(p)
  83.         {
  84.             if (!p.isFinished()) return true;
  85.             dest = p.UUID;
  86.             return false;
  87.         }))
  88.             movePackages([_link.package.UUID], dest);
  89.     }
  90. }
  91.  
  92.  
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement