Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * JDownloader2 EventScript - ダウンロード開始時にパッケージを未完了パッケージの一番上に移動
- *
- * ■「想定レイアウト」
- * ----------------------------
- * ○完了パッケージ
- * ○完了パッケージ
- * ○完了パッケージ
- * △ダウンロード中…パッケージ
- * △ダウンロード中…パッケージ
- * □未完了パッケージ
- * □未完了パッケージ
- * □未完了パッケージ
- * □未完了パッケージ
- * ・
- * ・
- * ・
- * ----------------------------
- *
- * トリガー:【ダウンロード開始時】
- *
- * スクリプトタイプ: Async
- */
- /** @enum {number} */
- const movePackagesTo = {
- top:0,
- bottom:-1,
- };
- /**
- * パッケージを移動します
- *
- * ※ callAPIのmovePackagesは、after_dest==(0|-1)でTOPに移動するので
- * -1をbottomとみなし値を設定し直す
- *
- * @param {number[]} packs 移動するパッケージUUIDの配列
- * @param {number} after_dest 指定したUUIDのパッケージの下に移動する
- * (movePackagesTo.top=0|movePackagesTo.bottom=-1|package.UUID)
- */
- function movePackages(pack_uuids, after_dest)
- {
- if (!pack_uuids || !Array.isArray(pack_uuids) || !pack_uuids.length) return;
- if (after_dest === undefined)
- after_dest = movePackagesTo.top;
- else if (after_dest == movePackagesTo.bottom)
- {
- const all_p = getAllFilePackages();
- if (all_p.length <= 1) return;
- after_dest = all_p.pop().UUID;
- }
- callAPI('downloadsV2', 'movePackages', pack_uuids, after_dest);
- }
- function _main(started_p, started_l)
- {
- var tmp_pid = -1;
- var limit_count = 100;
- const wait_interval = 5 * 1000;
- // DL開始するまでチェックしながら待機
- while (0 < limit_count--)
- {
- // DL開始されたなら次へ
- if (0 <= started_l.getDownloadDuration()
- || 0 < started_l.getSpeed()
- || 0 <= started_l.getDownloadSessionDuration())
- break;
- // DL完了なら何もしない
- if ( started_l.isFinished() )
- return;
- // エラーなどでキャンセルなら何もしない
- if (-1 == l.getDownloadSessionDuration())
- return;
- sleep(wait_interval);
- }
- // 待機の上限を超えたら終了
- if (0 == limit_count) return;
- var after_dest = movePackagesTo.top;
- getAllFilePackages().some(function(p)
- {
- if ( (!p.isFinished()) && (!p.downloadLinks.some(function(l){return(0<=l.getDownloadDuration()||l.isFinished())})) )
- return true;
- after_dest = p.UUID;
- });
- if (started_p.UUID != after_dest)
- movePackages([started_p.UUID], after_dest);
- }
- // ダウンロード開始時
- var _package = null;
- var _link = null;
- try{
- _package=package;
- _link=link;
- }catch(e){
- throw Error(
- 'イベントトリガーのタイプが正しく設定されていません\r\n\r\n'+
- '解決方法:イベントスクリプトの設定から本スクリプトのトリガーに\r\n'+
- ' 【ダウンロード開始時】を選択し、\r\n'+
- ' リストビュー画面の右クリックのコンテキストメニューから実行してください\r\n'
- );
- }
- if (_package && _link)
- {
- _main(_package, _link);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement