Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * JDownloader2 EventScript - DL完了時に同じファイル名のリンクを無効化
- *
- * 【概要】
- * DL完了時に同一パッケージ内に同じファイル名(拡張子を含まない)の
- * リンクがあれば無効化し、完了する
- *
- * 【説明】
- * ファイルのダウンロードが完了した際、
- * 同一パッケージ内に含まれている他のリンクに同じ名前のリンクがあっても
- * ファイル拡張子が違えば、ミラーとして認識せずに完了扱いされず
- * 未完了の別ファイルと見なされ続ける
- *
- * それをダウンロード完了時にそれら拡張子違いのリンクを無効化し、
- * 疑似完了扱いにすることで同じ中身のファイルが更にダウンロードされることを防ぐ
- *
- * また、スキップされたリンクが残存していれば
- * パッケージの進捗状況が100%にならず、完了パッケージにならないため、
- * それらも無効にした上でスキップマークを消す
- *
- *
- * 【使い方】
- * [トリガー] "ダウンロード停止時"
- *
- */
- /** @type {string[]} ミラー扱いするリンクの拡張子 (追加、削除可能) */
- const MirrorDetect_Extensions = [
- 'rar',
- 'zip',
- '7z',
- 'cbz',
- 'cbr',
- 'epub'
- ];
- //const MirrorDetect_Extensions = null;
- function getFileName(f) // Or FolderName
- {
- const r = f.match(/([^\\\/\:]*)[\\\/]*$/);
- return r ? r[1] : '';
- }
- function getExt(f)
- {
- const r = f.match(/(\.[0-9a-zA-Z]{2,6})$/);
- return r ? r[1] : '';
- }
- function getFileSpec(f)
- {
- const r = getFileName(f).match(/^([^\\\/\:]*?)(\.[0-9a-zA-Z]{2,6})?$/);
- return r ? r[1] : f;
- }
- function checkMirror(finished_l)
- {
- const mde_regexp = new RegExp(
- ((MirrorDetect_Extensions && MirrorDetect_Extensions.length > 0)
- ? ('^\.(?:'+MirrorDetect_Extensions.join('|')+')$')
- : '^.*$'), 'i'
- );
- if (!mde_regexp.test(getExt(finished_l.name)))
- return;
- const finished_l_fspec = getFileSpec(finished_l.name);
- finished_l.package.downloadLinks.forEach(function (l)
- {
- // 拡張子抜きのファイル名が一致して未完了だったら無効化し、完了したパッケージにする
- if (finished_l.UUID != l.UUID
- && finished_l_fspec == getFileSpec(l.name)
- && (mde_regexp.test(getExt(l.name))))
- l.setEnabled(false), l.setSkipped(false)
- });
- }
- // ダウンロード停止時
- var _link = null;
- try{
- _link=link
- }catch(e){
- throw Error(
- 'イベントトリガーのタイプが正しく設定されていません\r\n\r\n'+
- '解決方法:イベントスクリプトの設定から本スクリプトのトリガーに\r\n'+
- ' 【ダウンロード停止時】を選択し、\r\n'+
- ' リストビュー画面の右クリックのコンテキストメニューから実行してください\r\n'
- );
- }
- if (_link && _link.isFinished() && ! _link.package.isFinished())
- {
- checkMirror(_link);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement