@@ -2852,34 +2734,29 @@
}
}
});
-
allLink = (allLink ? allLink.join("\r\n") : "")
if (temp.mode === "api" && list.length >= 2) {
- content.find(".pl-extra").append(`
-
`);
-
+ content.find(".pl-extra").append(`
+
`);
} else if (temp.mode === "curl") {
- content.find(".pl-extra").append(`
`);
- if (list.length >= 2) content.find(".pl-extra").append(`
`);
-
+ content.find(".pl-extra").append(`
`);
+ if (list.length >= 2) content.find(".pl-extra").append(`
`);
} else if (temp.mode === 'aria2') {
let rpc = base.getValue("setting_aria2_rpc").find(i => i.default);
- content.find(".pl-extra").append(`
`);
- content.find(".pl-extra").append(`
`);
- if (list.length >= 2) content.find(".pl-extra").append(`
`);
- if (list.length >= 2) content.find(".pl-extra").append(`
`);
-
+ content.find(".pl-extra").append(`
`);
+ content.find(".pl-extra").append(`
`);
+ content.find(".pl-extra").append(`
`);
+ if (list.length >= 2) content.find(".pl-extra").append(`
`);
+ if (list.length >= 2) content.find(".pl-extra").append(`
`);
} else if (temp.mode === "bitcomet") {
- if (list.length >= 2) content.find(".pl-extra").append(`
`);
let rpc = base.getValue("setting_bitcomet_rpc").find(i => i.default);
- content.find(".pl-extra").append(`
`);
- if (list.length >= 2) content.find(".pl-extra").append(`
`);
-
+ content.find(".pl-extra").append(`
`);
+ if (list.length >= 2) content.find(".pl-extra").append(`
`);
+ if (list.length >= 2) content.find(".pl-extra").append(`
`);
} else if (temp.mode === 'abdm') {
let rpc = base.getValue("setting_abdm_rpc").find(i => i.default);
- content.find(".pl-extra").append(`
`);
+ content.find(".pl-extra").append(`
`);
}
-
function updateTooltip($element, value) {
if (!value) return;
$element.addClass("listener-tip");
@@ -2897,13 +2774,10 @@
if (tooltip?.normal) updateTooltip(content.find(".normal"), tooltip.normal);
if (tooltip?.copy) updateTooltip(content.find(".copy"), tooltip.copy);
if (tooltip?.filename) updateTooltip(content.find(".filename"), tooltip.filename);
-
let html = content.html();
content.remove();
-
return html;
},
-
/**
* 获取镜像列表
* @author 油小猴
@@ -2937,7 +2811,6 @@
return undefined
}
},
-
/**
* 添加页面元素监听
* @author 油小猴
@@ -2963,7 +2836,6 @@
$doc.on('click', '.listener-open-beautify', () => {
base.showBeautify();
});
-
$doc.on('click', '.listener-unregister', async function (e) {
message.warning("正在“注入”设置项目...");
let list = base.getValue("setting_init");
@@ -2995,21 +2867,18 @@
list.custom[e.currentTarget.dataset.type] = e.currentTarget.checked;
base.setValue("setting_ui_theme", list);
});
-
$doc.on('click', '.listener-api-download.normal', async function (e) {
e.preventDefault();
let dataset = e.currentTarget.dataset;
let href = dataset.link;
$('#downloadIframe').attr('src', href);
});
-
$doc.on('click', '.listener-retry', async function (e) {
let o = base._EventFactory(e);
o.tip.hide();
o.link.show();
o.directLink.show();
});
-
$doc.on('click', '.listener-stop', async function (e) {
let o = base._EventFactory(e);
let index = o.link[0].dataset.index;
@@ -3028,7 +2897,6 @@
o.stop.hide();
}
});
-
$doc.on('click', '.listener-back', async function (e) {
let o = base._EventFactory(e);
o.progress.hide();
@@ -3039,7 +2907,6 @@
o.stop.hide();
o.back.hide();
});
-
$doc.on('click', '.listener-download-all', async function (e) {
let target = $(e.currentTarget);
let originalHtml = target.html();
@@ -3079,13 +2946,18 @@
target.html(originalHtml);
}
});
-
- $doc.on('click', '.listener-rpc-task', function () {
+ $doc.on('click', '.listener-rpc-task.youxiaohou', function () {
let rpc = base.getValue("setting_aria2_rpc").find(i => i.default);
- let url = `${config.base.service.rpc}/?rpc=${base.encodeBase(JSON.stringify({ domain: rpc.domain, port: rpc.port }))}#${rpc.token}`;
+ let isHttps = rpc.domain.startsWith('https://');
+ let url = `${isHttps ? 'https' : 'http'}://d.youxiaohou.com/?rpc=${base.encodeBase(JSON.stringify({ domain: rpc.domain, port: rpc.port }))}#${rpc.token}`;
+ GM_openInTab(url, { active: true, insert: true, setParent: true });
+ });
+ $doc.on('click', '.listener-rpc-task.ariang', function () {
+ let rpc = base.getValue("setting_aria2_rpc").find(i => i.default);
+ let isHttps = rpc.domain.startsWith('https://');
+ let url = `${isHttps ? 'https' : 'http'}://ariang.mayswind.net/latest/#!/settings/rpc/set?protocol=${isHttps ? 'wss' : 'ws'}&host=${rpc.domain.replace(/^(https?:\/\/)/, "")}&port=${rpc.port}&interface=${rpc.path.replace(/^\//, "")}&secret=${rpc.token}`;
GM_openInTab(url, { active: true, insert: true, setParent: true });
});
-
$doc.on('change', '.listener-rpc-select', async function (e) {
let element = $(this);
let selectedIndex = element.val();
@@ -3197,7 +3069,6 @@
}
});
},
-
/**
* 创建基础样式
* @author 油小猴
@@ -3206,7 +3077,6 @@
*/
addPanLinkerStyle() {
temp.color = base.getValue('setting_ui_theme').color;
-
base.addStyle('swal-pub-style', 'style', `@media (prefers-color-scheme:light){${GM_getResourceText('SwalLigt')}}`);
base.addStyle('swal-pub-dark-style', 'style', `@media (prefers-color-scheme:dark){${GM_getResourceText('SwalDark').replace(/#19191a/, '#222226')}}`);
base.addStyle('swal-pub-custom-style', 'style', `
@@ -3219,17 +3089,13 @@
.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:${temp.color} }
.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:${temp.color}}
.swal2-html-container{padding:1em 1.6em 0.3em;margin:0}
-
.swal2-close,div:where(.swal2-container) button:where(.swal2-close){position:absolute;border-radius:10px;top:0;right:0;transition:all.2s}
.swal2-close:hover,div:where(.swal2-container) button:where(.swal2-close):hover{color:${temp.color};background-color:${temp.color}30;font-size:60px}
-
.swal2-styled{display:flex;justify-content:center;align-items:center;gap:5px}
.swal2-styled.swal2-confirm,div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){background-color:${temp.color};color:#fff}
-
.swal2-styled.swal2-confirm:focus,div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):focus{box-shadow:0 0 0 3px ${temp.color}80}
.swal2-styled.swal2-deny:focus,.swal2-close:focus,div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):focus{box-shadow:0 0 0 3px #dc374180}
.swal2-styled.swal2-cancel:focus,div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):focus{box-shadow:0 0 0 3px #6e788180}
-
.swal2-styled.swal2-confirm,
.swal2-styled.swal2-deny,
.swal2-styled.swal2-cancel,
@@ -3238,7 +3104,6 @@
div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel)
{border-radius:50px}
div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{opacity:0.7}
-
.swal2-backdrop-show,.swal2-noanimation,div:where(.swal2-container).swal2-backdrop-show, div:where(.swal2-container).swal2-noanimation{background:rgba(25,25,26,.75);transition:backdrop-filter.2s;backdrop-filter:blur(1px)}
body.swal2-toast-shown .swal2-container{backdrop-filter:none}
.swal2-popup,div:where(.swal2-container) div:where(.swal2-popup){padding-bottom:1em;border-radius:10px}
@@ -3246,14 +3111,12 @@
.swal2-html-container,div:where(.swal2-container) div:where(.swal2-html-container){padding:1.3em 1.3em 0.3em;margin:0}
.swal2-footer,div:where(.swal2-container) div:where(.swal2-footer){flex-direction:column;justify-content:center;align-items:center}
.swal2-icon-content,div:where(.swal2-icon) .swal2-icon-content{font-family:sans-serif}
-
.swal2-input, .swal2-file, swal2-select, .swal2-textarea,
div:where(.swal2-container) input:where(.swal2-input),
div:where(.swal2-container) input:where(.swal2-file),
div:where(.swal2-container) input:where(.swal2-select),
div:where(.swal2-container) textarea:where(.swal2-textarea)
{box-shadow:none}
-
.swal2-input:focus, .swal2-file:focus, .swal2-select:focus, .swal2-textarea:focus,
.swal2-input:focus-visible, .swal2-file:focus-visible, .swal2-select:focus-visible, .swal2-textarea:focus-visible,
div:where(.swal2-container) input:where(.swal2-input):focus,
@@ -3265,7 +3128,6 @@
div:where(.swal2-container) textarea:where(.swal2-textarea):focus,
div:where(.swal2-container) textarea:where(.swal2-textarea):focus-visible
{outline:0;border:1px solid ${temp.color};box-shadow:0 0 0 3px ${temp.color}80}
-
.swal2-checkbox, .swal2-file, .swal2-input, .swal2-radio, .swal2-select, .swal2-textarea,
div:where(.swal2-container) input:where(.swal2-input), div:where(.swal2-container) input:where(.swal2-file), div:where(.swal2-container) textarea:where(.swal2-textarea), div:where(.swal2-container) select:where(.swal2-select), div:where(.swal2-container) div:where(.swal2-radio), div:where(.swal2-container) label:where(.swal2-checkbox)
{margin:1em 2em}`);
@@ -3275,7 +3137,6 @@
::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{border-radius:10px}
::-webkit-scrollbar-thumb{background-color:${temp.color}90!important,transition:background-color.2s;will-change:background-color}
::-webkit-scrollbar-thumb:hover{background-color:${temp.color}D0!important}
-
.swal2-popup{font-size:16px}
.pl-popup{font-size:12px;min-width:70%;max-width:95%}
.pl-header{padding:0;align-items:flex-start;border-bottom:1px solid #eee;margin:0 0 10px;padding:0 0 5px}
@@ -3283,16 +3144,13 @@
.pl-content{padding:0;font-size:12px}
.pl-footer{font-size:15px;text-align:center;display:block}
.pl-icon{width:15px;height:15px;vertical-align:-0.15em;fill:currentColor;overflow:hidden;font-size:18px}
-
.pl-main{background:${temp.color}15;border-radius:10px;display:flex;flex-direction:column;gap:8px;max-height:calc(${document.documentElement.clientHeight}px - 300px);overflow:auto;padding:8px 6px}
-
.pl-a{position:relative;vertical-align:baseline;color:${temp.color};border-bottom:2px solid ${temp.color};text-decoration:none!important;transition:color.3s,opacity.3s;will-change:color,opacity;overflow:hidden}
- .pl-a::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:100%;background-color:${temp.color};transform:scaleY(0);transform-origin:bottom center;transition:transform.15s,opacity.3s;will-change:transform;z-index:-1}
+ .pl-a::before{content:"";position:absolute;left:0;bottom:0;width:100%;height:100%;background-color:${temp.color};transform:scaleY(0);transform-origin:bottom center;transition:transform.15s,opacity.3s;will-change:transform;z-index:-1}
.pl-a:hover,.pl-a:focus{color:#fff}
.pl-a:hover::before,.pl-a:focus::before{transform:scaleY(1)}
.pl-a:active{color:#fff;opacity:0.8}
.pl-a .pl-icon{vertical-align:-0.06em;}
-
.pl-item{display:flex;align-items:center;background:${temp.color}30;border-radius:8px;padding:5px;gap:10px}
.pl-item-name{width:15%;text-align:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:default}
.pl-item-name>*{text-align:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@@ -3300,21 +3158,22 @@
a.pl-item-link{color:${temp.color};text-align:left;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transition:color.15s;will-change:color}
a.pl-item-link:hover{color:#fff}
.pl-item-tip{display:flex;justify-content:space-between;flex:1}
-
.pl-item-progress{display:flex;flex:1;align-items:center}
.pl-progress{display:inline-block;vertical-align:middle;width:100%;box-sizing:border-box;line-height:1;position:relative;height:20px;margin:0 6px;flex:1}
.pl-progress-outer{height:20px;border-radius:100px;background-color:#c1c1c1;overflow:hidden;position:relative;vertical-align:middle}
.pl-progress-inner{position:absolute;left:0;top:0;background-color:${temp.color};border-radius:100px;line-height:1;white-space:nowrap;transition:width.6s;will-change:width;height:20px;display:inline-flex;text-align:center;align-items:center}
.pl-progress-inner-text{display:inline-block;vertical-align:middle;cursor:default;color:#ffffff;font-size:12px;margin:0 5px;height:20px;width:100%}
.pl-progress-inner-text:after{display:inline-block;content:"";height:100%;vertical-align:middle}
-
.pl-ext{display:inline-block;width:44px;background:#999;color:#fff;height:16px;line-height:16px;font-size:12px;border-radius:3px}
.pl-retry{padding:3px 10px;background:#cc3235;color:#fff;border-radius:3px;cursor:pointer}
-
.pl-extra{display:flex;background-color:${temp.color}15;border-radius:10px;gap:10px}
.pl-extra:has(>*){margin-top:1.25em;padding:8px 6px}
- .pl-extra>*{flex:1}
-
+ .pl-extra>.api.listener-download-all,
+ .pl-extra>.curl.listener-copy,
+ .pl-extra>.aria2.listener-send-rpc,
+ .pl-extra>.bitcomet.listener-copy,
+ .pl-extra>.abdm
+ {flex:1}
.pl-btn-primary{color:#ffffff!important;background:${temp.color};border:0;border-radius:50px;cursor:pointer;font-size:12px;outline:none;display:flex;align-items:center;justify-content:center;gap:5px;padding:0.625em 1.1em;transition:opacity.2s,box-shadow.2s;will-change:opacity,box-shadow}
.pl-btn-primary:hover{opacity:0.8}
.pl-btn-primary:focus{box-shadow:0 0 0 3px ${temp.color}80}
@@ -3328,7 +3187,6 @@
.pl-btn-danger:focus{box-shadow:0 0 0 3px #cc323580}
.pl-btn-opacity{animation:easeOpacity 1.2s 2;animation-fill-mode:forwards;will-change:opacity}
@keyframes easeOpacity{ from{opacity:1} 50%{opacity:0.35} to{opacity:1} }
-
.pl-button-mini{padding:5px 10px}
.pl-button,.pl-dropdown-menu{transition:all.2s}
.pl-button{position:relative}
@@ -3336,14 +3194,12 @@
.pl-button:hover .pl-dropdown-menu{opacity:1;pointer-events:auto}
.pl-button-init{opacity:0.5;animation:easeInitOpacity 1.2s 5;animation-fill-mode:forwards}
@keyframes easeInitOpacity{ from{opacity:0.5} 50%{opacity:1} to{opacity:0.5} }
-
.pl-dropdown-menu{position:absolute;padding:5px 0;color:${temp.color};background:#fff;z-index:999;min-width:110px;border-radius:5px;box-shadow:0 1px 6px ${temp.color}33;-webkit-box-shadow:0 1px 6px ${temp.color}33;text-align:center;border:none}
@media (prefers-color-scheme:dark){ .pl-dropdown-menu{color:#fff;background:#222226} }
.pl-button-mode{color:${temp.color}!important;height:30px;padding:0 10px!important;display:flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;white-space:nowrap;transition:background-color.2s;will-change:background-color}
@media (prefers-color-scheme:dark){ .pl-dropdown-menu .pl-button-mode{color:#fff!important} }
.pl-button-mode:hover{background-color:${temp.color}33!important}
@media (prefers-color-scheme:dark){ .pl-button-mode:hover{color:#fff!important;background:${temp.color}!important} }
-
header[style="display:none;"]~.pl-button{display:inline-block;position:fixed;top:0.6em;left:65%;z-index:99999}
.color-button{background:${temp.color}!important;border-color:${temp.color}!important;border:1px solid ${temp.color}!important;display:inline-flex;transition:background.2s,border-color.2s;will-change:background,border-color}
.color-button:hover{background:${temp.color}b0!important;border-color:${temp.color}!important}
@@ -3362,7 +3218,6 @@
.quark-button,.uc-button{padding:0 14px;background:${temp.color}!important;background-color:${temp.color}!important;will-change:background,background-color}
.uc-btn-icon{width:20px;height:20px;vertical-align:-0.3em}
.uc-button{padding:10px 20px!important}
-
.pl-setting-item{display:flex;align-items:center;justify-content:space-between;margin-top:1em}
.pl-setting-item > *:nth-child(2){max-width:80%;display:flex;justify-content:space-between;align-items:center}
.pl-setting-item .pl-setting-item{margin:0;gap:5px}
@@ -3385,20 +3240,16 @@
.swal2-container{z-index:100000}
body.swal2-height-auto{height:inherit}
[class^="swal2-"],[class*="pl-btn"]{transition:all.2s}
-
/* 适配(改)百度网盘会员青春版 */
a.downloadSubtitle, button.downloadSubtitle{transition:all.2s;background-color:${temp.color}}
a.downloadSubtitle:hover, button.downloadSubtitle:hover{background-color:${temp.color}D0}
a.downloadSubtitle:disabled, button.downloadSubtitle:disabled{background-color:${temp.color}D0}
-
/* 哪里都没用到的 RGB! */
@keyframes RGB{ 0%{filter:hue-rotate()} to{filter:hue-rotate(-360deg)} }
-
/* Webkit, Opera, IE9, Chrome*/
::selection, ::-webkit-selection, ::-moz-selection, ::-ms-selection{background-color:${temp.color}!important;background:${temp.color}!important;color:white!important}
`);
},
-
/**
* 初始化引导弹窗
* @author 油小猴
@@ -3420,7 +3271,7 @@
如果您喜欢这个脚本的话
- 请支持原作者 油小猴
+ 请支持原作者 油小猴
或给此改版点个 Star ?
@@ -3487,7 +3338,6 @@
};
}
},
-
/**
* 显示主对话框
* @author 油小猴
@@ -3502,7 +3352,7 @@
...temp.swalDefault,
title,
html,
- footer: `${footer}${config.base.dom.footer}`,
+ footer: `${footer}
${config.base.dom.footer}
`,
customClass: {
popup: 'pl-popup',
header: 'pl-header',
@@ -3544,34 +3394,26 @@
instanceCounter: 0
}
);
-
const targetDoc = iframeSelector
? $(iframeSelector).get(0)?.contentDocument
: document;
-
if (!targetDoc) return; // 无效文档直接返回
-
// 生成唯一控制键
controlKey = controlKey || `wkfe_${manager.instanceCounter++}`;
-
// 清理重复任务
const existingTask = manager.tasks.get(controlKey);
if (existingTask) {
existingTask.observer.disconnect();
manager.tasks.delete(controlKey);
}
-
// 创建MutationObserver回调
const processElements = () => {
const elements = $(selectorElem, targetDoc);
let foundActive = false;
-
elements.each((i, el) => {
const jEl = $(el);
const isProcessed = jEl.data(controlKey);
-
if (isProcessed) return true; // 跳过已处理元素
-
const cancelAction = actionFunction(jEl);
if (cancelAction) {
foundActive = true;
@@ -3579,17 +3421,14 @@
jEl.data(controlKey, true); // 标记已处理
}
});
-
// 一次性任务且找到有效元素时清理
if (bWaitOnce && foundActive) {
observer.disconnect();
manager.tasks.delete(controlKey);
}
};
-
// 创建Observer实例
const observer = new MutationObserver(processElements);
-
// 配置并启动观察
observer.observe(targetDoc.documentElement, {
childList: true,
@@ -3597,13 +3436,11 @@
attributes: true,
characterData: true
});
-
// 注册任务
manager.tasks.set(controlKey, {
observer,
targetDoc
});
-
// 立即执行初始检查
processElements();
},
@@ -3629,7 +3466,6 @@
};
}
};
-
/**
* 百度网盘
* @author 油小猴
@@ -3640,19 +3476,15 @@
try {
$doc.find('.loading-popup .loading-title').html(`令牌获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取授权状态~
`);
-
// 获取授权状态
let authorize = await base.getFinalUrl(config.$baidu.api.getAccessToken, undefined, true);
let accessToken = "";
-
// 判断授权情况
if (authorize.includes('authorize')) {
$doc.find('.loading-popup .loading-title').html(`授权获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取授权页面~
`);
-
// 没授权,先获取授权的页面
let html = await base.get(config.$baidu.api.getAccessToken, undefined, 'text');
-
// 提取页面的发送确认授权的参数
let bdstoken = html.match(/name="bdstoken"\s+value="([^"]+)"/)?.[1];
let client_id = html.match(/name="client_id"\s+value="([^"]+)"/)?.[1];
@@ -3664,18 +3496,15 @@
display: "page",
grant_permissions: "basic,netdisk"
};
-
$doc.find('.loading-popup .swal2-html-container').html(`
正在自动确认授权~
`);
// 发送请求达到自动进行授权
await base.post(config.$baidu.api.getAccessToken, base.stringify(data), { "Content-Type": "application/x-www-form-urlencoded" });
-
// 再次获取授权状态
let res2 = await base.getFinalUrl(config.$baidu.api.getAccessToken, undefined, true);
accessToken = res2.match(/access_token=([^&]+)/)?.[1];
} else if (authorize.includes('access_token=')) {
accessToken = authorize.match(/access_token=([^&]+)/)?.[1];
}
-
// 统一处理令牌结果
$doc.find('.loading-popup .loading-title').html(`令牌获取中`);
if (!!accessToken) {
@@ -3687,16 +3516,7 @@
return "";
}
},
-
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:百度网盘');
- if (window[key]) return;
- window[key] = true;
-
$doc.on('mouseenter mouseleave click', '.pl-button.g-dropdown-button', function (e) {
if (e.type === 'mouseleave') {
$(e.currentTarget).removeClass('button-open');
@@ -3708,13 +3528,11 @@
$doc.on('mouseleave', '.pl-button.g-dropdown-button .pl-dropdown-menu', function (e) {
$(e.currentTarget).hide();
});
-
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
$baidu.getLink();
});
-
$doc.on('click', '.pl-button-save', async function (e) {
e.preventDefault();
let selectList = $baidu.getSelectedList();
@@ -3725,10 +3543,8 @@
await base.sleep(500);
document.querySelector('.tools-share-save-hb').click();
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -3736,18 +3552,14 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
base.get(o.link[0].dataset.link, { "User-Agent": config.$baidu.api.ua.downloadLink }, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async () => {
let prog = +temp.progress[index] || 0;
let isIDM = !!temp.idm[index];
-
if (isIDM) {
// IDM 捕获处理逻辑
o.tip.hide();
@@ -3758,26 +3570,22 @@
.text('链接已被IDM捕获~请查看IDM下载窗口哦!')
.animate({ opacity: '0.5' }, "slow")
.show();
-
clearInterval(temp.ins[index]);
await base.sleep(2000);
o.link.html(originalHtml).animate({ opacity: '1' }, "slow");
temp.idm[index] = false;
return;
}
-
let currentTime = Date.now();
let elapsedTime = currentTime - startTime;
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -3785,15 +3593,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -3807,74 +3612,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"), [`User-Agent:${config.$baidu.api.ua.downloadLink}`]);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"), { "user_agent": config.$baidu.api.ua.downloadLink });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), { "User-Agent": config.$baidu.api.ua.downloadLink });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
greenerPage() {
temp.pege = $baidu.detectPage();
base.waitForKeyElements(".wp-s-header-user__vip-center", function (tag) {
@@ -4074,11 +3863,9 @@
['#2974B6', temp.color],
['#0596e6', temp.color],
['#0596E6', temp.color],
-
['#C3EAFF', temp.color],
['#c0d9fe', `${temp.color}50`],
['#0098EA', `${temp.color}D0`],
-
['#38b9ff', `${temp.color}D0`],
['#38B9FF', `${temp.color}D0`],
['#42d8ff', `${temp.color}D0`],
@@ -4087,13 +3874,11 @@
['#A48DFF', `${temp.color}D0`],
['#6b79f2', `${temp.color}D0`],
['#6B79F2', `${temp.color}D0`],
-
['#9c86f2', `${temp.color}90`],
['#9C86F2', `${temp.color}90`],
['#83d3ff', `${temp.color}90`],
['#83D3FF', `${temp.color}90`],
['#C4D8F4', `${temp.color}90`],
-
['#fafafc', `${temp.color}20`],
['#FAFAFC', `${temp.color}20`],
['#f5fbff', `${temp.color}20`],
@@ -4103,10 +3888,8 @@
['#f0faff', `${temp.color}20`],
['#F0FAFF', `${temp.color}20`],
['#c4d8f4', `${temp.color}20`],
-
['#f1f3f8', `${temp.color}15`],
['#F1F3F8', `${temp.color}15`],
-
['#f2faff', `${temp.color}10`],
['#F2FAFF', `${temp.color}10`],
['#eef9fe', `${temp.color}10`],
@@ -4119,7 +3902,6 @@
['#B4E5FF', `${temp.color}10`],
['#e6f6ff', `${temp.color}10`],
['#E6F6FF', `${temp.color}10`],
-
['0,149,255', base.hexToRgba(temp.color)],
['30, 175, 255', base.hexToRgba(temp.color)],
['6, 167, 255, 0.1', base.hexToRgba(`${temp.color}1a`)],
@@ -4135,13 +3917,11 @@
};
base.addStyle(`${mount}-baidu`, 'style', `
#layoutMain,.DxdbeCb{border-radius:10px;border-bottom-left-radius:0;border-bottom-right-radius:0;background:#ffffffA0!important}
-
.KPDwCE,
.DxdbeCb .OFaPaO .tanwePYr,
.xGLMIab .fufHyA:hover,
.module-search-timeline .form-box
{background:#ffffffA0!important}
-
.KPDwCE .JDeHdxb,
.NHcGw .AuPKyz,
.xGLMIab .tvPMvPb,
@@ -4151,7 +3931,6 @@
.module-topToolBar,
.module-timeline-view .timeline-title-curday
{background:transparent!important;border-bottom:0}
-
.MdLxwM{background :#fff!important}
.aside-absolute-container{position:absolute!important}
.aside-absolute-container .QGOvsxb .remainingSpaceUi_span{background:#8af248!important;border-radius:10px 0 0 10px;border-right:#fff 1px solid;border-bottom:#fff 1px solid}
@@ -4200,11 +3979,9 @@
['#2974B6', temp.color],
['#0596e6', temp.color],
['#0596E6', temp.color],
-
['#C3EAFF', temp.color],
['#c0d9fe', `${temp.color}50`],
['#0098EA', `${temp.color}D0`],
-
['#38b9ff', `${temp.color}D0`],
['#38B9FF', `${temp.color}D0`],
['#42d8ff', `${temp.color}D0`],
@@ -4213,13 +3990,11 @@
['#A48DFF', `${temp.color}D0`],
['#6b79f2', `${temp.color}D0`],
['#6B79F2', `${temp.color}D0`],
-
['#9c86f2', `${temp.color}90`],
['#9C86F2', `${temp.color}90`],
['#83d3ff', `${temp.color}90`],
['#83D3FF', `${temp.color}90`],
['#C4D8F4', `${temp.color}90`],
-
['#fafafc', `${temp.color}20`],
['#FAFAFC', `${temp.color}20`],
['#f5fbff', `${temp.color}20`],
@@ -4229,10 +4004,8 @@
['#f0faff', `${temp.color}20`],
['#F0FAFF', `${temp.color}20`],
['#c4d8f4', `${temp.color}20`],
-
['#f1f3f8', `${temp.color}15`],
['#F1F3F8', `${temp.color}15`],
-
['#f2faff', `${temp.color}10`],
['#F2FAFF', `${temp.color}10`],
['#eef9fe', `${temp.color}10`],
@@ -4245,7 +4018,6 @@
['#B4E5FF', `${temp.color}10`],
['#e6f6ff', `${temp.color}10`],
['#E6F6FF', `${temp.color}10`],
-
['0,149,255', base.hexToRgba(temp.color)],
['30, 175, 255', base.hexToRgba(temp.color)],
['6, 167, 255, 0.1', base.hexToRgba(`${temp.color}1a`)],
@@ -4263,64 +4035,60 @@
base.waitForKeyElements(config.$baidu.mount.home, (element) => {
temp.pege = $baidu.detectPage();
if ($(".pl-button").length > 0 || !temp.pege || temp.pege !== 'home') return;
- let $button = $(`
-
-
下载助手
-
+ let $button = $(`
`);
element.prepend($button);
})
base.waitForKeyElements(config.$baidu.mount.main, (element) => {
temp.pege = $baidu.detectPage();
if ($(".pl-button").length > 0 || !temp.pege || temp.pege !== 'main') return;
- let $button = $(`
-
`);
+ let $button = $(`
`);
element.prepend($button);
})
base.waitForKeyElements(config.$baidu.mount.main, (element) => {
temp.pege = $baidu.detectPage();
if ($(".pl-button").length > 0 || !temp.pege || temp.pege !== 'youth') return;
- let $button = $(`
-
`);
+ let $button = $(`
`);
element.prepend($button);
})
base.waitForKeyElements(config.$baidu.mount.share, (element) => {
@@ -4341,7 +4109,6 @@
element.after($button);
})
},
-
addInitButton() {
base.waitForKeyElements(config.$baidu.mount.home, (element) => {
temp.pege = $baidu.detectPage();
@@ -4377,7 +4144,6 @@
element.after($button);
})
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -4403,7 +4169,6 @@
// 获取选择的文件列表
let selectList = this.getSelectedList();
let accessToken = (base.getValue('baidu_access_token') || await $baidu.getToken());
-
if (!accessToken) {
message.info('提示:
稍后请在新标签页中授权助手哦~');
base.delValue('baidu_access_token');
@@ -4423,28 +4188,21 @@
}, 1000);
return;
}
-
if (selectList.length === 0) return message.error('提示:
请勾选要下载的文件哦~');
-
if (temp.pege === 'home' || temp.pege === 'main') {
let cnt = 0;
let processed = selectList.filter(f => !f.isdir).length;
-
async function fetchFiles(dirs) {
let files = [];
-
for (let dir of dirs) {
$doc.find('.loading-popup .loading-title').html(`文件获取中`);
let url = `${config.$baidu.api.getFiles}&dir=${encodeURIComponent(dir.path)}&access_token=${accessToken}`;
let res = await base.get(url, { "User-Agent": config.$baidu.api.ua.downloadLink });
cnt++;
-
if (res?.list?.length && (res.errno === 0 || res.errmsg === "succ")) {
let subFiles = res.list.filter(f => !f.isdir);
-
processed += subFiles.length;
$doc.find('.loading-popup .swal2-html-container').html(`
已获取 ${processed} 个文件~
${dir.path}
`);
-
files = files.concat(subFiles);
if (res.list.some(f => f.isdir)) {
files = files.concat(await fetchFiles(res.list.filter(f => f.isdir)));
@@ -4458,30 +4216,24 @@
}
return files;
}
-
let files = selectList.filter(f => !f.isdir);
-
if (selectList.some(f => f.isdir)) {
files = files.concat(await fetchFiles(selectList.filter(f => f.isdir)));
}
if (!files.length) {
return message.error('提示:
文件夹是空的哦~');
}
-
$doc.find('.loading-popup .loading-title').html(`链接获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取文件对应的下载链接~
`);
-
let fidList = files.map(f => f.fs_id);
let batchSize = 100;
let linkList = [];
for (let i = 0; i < fidList.length; i += batchSize) {
let url = `${config.$baidu.api.getLink}&fsids=${encodeURIComponent(JSON.stringify(fidList.slice(i, i + batchSize)))}&access_token=${accessToken}`;
let res = await base.get(url, { "User-Agent": config.$baidu.api.ua.downloadLink });
-
if (res.list && res.list.length !== 0 && res.errno === 0) {
linkList = linkList.concat(res.list);
$doc.find('.loading-popup .swal2-html-container').html(`
已获取 ${linkList.length} / ${fidList.length} 个链接~
`);
-
} else {
if (res.errno) {
if (res.errno === 112) {
@@ -4491,17 +4243,14 @@
base.delValue('baidu_access_token');
return message.error('提示:
访问令牌已过期,刷新网页后再获取一次吧~
代码:' + res.errno);
}
-
base.delValue('baidu_access_token');
return message.error('提示:
获取下载链接失败,刷新网页后再试试吧~
代码:' + res.errno);
-
} else {
return message.error('提示:
获取下载链接失败,刷新网页后再试试吧~');
}
}
await base.sleep(1000);
}
-
if (linkList.length) {
temp.links = [linkList, {
isFolder: v => v.isdir === 1,
@@ -4513,7 +4262,7 @@
return url.href;
},
convert: {
- aria2: `--header "User-Agent:${config.$baidu.api.ua.downloadLink}""`,
+ aria2: `--header "User-Agent:${config.$baidu.api.ua.downloadLink}"`,
curl: `-A "${config.$baidu.api.ua.downloadLink}"`,
bitcomet: `user_agent=${encodeURIComponent(config.$baidu.api.ua.downloadLink)}`
},
@@ -4527,7 +4276,6 @@
return message.error('提示:
页面错误~');
}
},
-
getSelectedList() {
let List, selectList
try {
@@ -4550,7 +4298,6 @@
}
} catch (e) { }
},
-
detectPage() {
let path = location.pathname;
if (/^\/disk\/home/.test(path)) return 'home';
@@ -4559,7 +4306,6 @@
if (/^\/(s|share)\//.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -4570,7 +4316,6 @@
}
this.addPageListener();
},
-
async initAuthorize() {
base.registerMenuCommand();
Swal.fire({
@@ -4696,7 +4441,6 @@
}
}
};
-
/**
* 阿里云盘
* @author 油小猴
@@ -4704,14 +4448,6 @@
*/
let $aliyun = {
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:阿里云盘');
- if (window[key]) return;
- window[key] = true;
-
$doc.on('click', '.pl-button-save', async function (e) {
e.preventDefault();
let reactDomGrid = document.querySelector(config.$aliyun.mount.grid);
@@ -4740,7 +4476,6 @@
await base.sleep(500);
document.querySelector('[class*="btn-save--"]').click();
});
-
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
@@ -4764,10 +4499,8 @@
}
$aliyun.getLink();
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -4775,14 +4508,11 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
base.get(e.currentTarget.dataset.link, undefined, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async () => {
let prog = +temp.progress[index] || 0;
let currentTime = Date.now();
@@ -4790,13 +4520,11 @@
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -4804,15 +4532,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -4826,74 +4551,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"), [`Referer:https://${location.host}/`]);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"), { "referrer": `https://${location.host}/` });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), undefined);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
greenerPage() {
base.waitForKeyElements('[class*="share-list-banner"]', function (tag) {
tag.fadeOut();
@@ -4980,7 +4689,6 @@
element.prepend($button);
})
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -5010,18 +4718,15 @@
selectList = selectList.filter(item => item.type === 'file')
let batchSize = 15;
let processed = 0;
-
$doc.find('.loading-popup .loading-title').html(`链接获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取文件对应的下载链接~
`);
for (let i = 0; i < selectList.length; i += batchSize) {
// 当前批次文件
let batch = selectList.slice(i, i + batchSize);
-
// 过滤掉已有 URL 的文件
let noUrlSelectList = batch.filter(v => !Boolean(v.url));
let hasUrlSelectList = batch.filter(v => Boolean(v.url));
let queue = [];
-
// 为没有 URL 的文件生成请求队列
noUrlSelectList.forEach((item) => {
queue.push(this.getFileUrlByOnce(item.driveId, item.fileId)
@@ -5031,25 +4736,21 @@
return val;
}));
});
-
hasUrlSelectList.forEach((item) => {
processed++;
$doc.find('.loading-popup .swal2-html-container').html(`
已获取 ${processed} / ${selectList.length} 个链接~
`);
});
-
// 等待本批次的请求结果
let res = await Promise.all(queue);
res.forEach((val, index) => {
noUrlSelectList[index].url = val;
});
-
// 每次处理完一个批次后,等待 1 秒
await base.sleep(1000);
}
} else {
return message.error('提示:
页面错误~');
}
-
temp.links = [selectList, {
isFolder: v => v.type === 'folder',
getFileName: v => v.name,
@@ -5064,7 +4765,6 @@
}];
base.showMainDialog(config.base.dom.button[temp.mode].title, base.generateDom(temp.links), config.base.dom.button[temp.mode].footer);
},
-
async getFileUrlByOnce(d, f) {
let res = await base.post(config.$aliyun.api.getLink, { drive_id: d, file_id: f }, { "Authorization": `${base.getStorage('token').token_type} ${base.getStorage('token').access_token}`, "X-Canary": "client=windows,app=adrive,version=v6.0.0" });
if (res.code === 'AccessTokenInvalid') {
@@ -5075,7 +4775,6 @@
}
return "";
},
-
getSelectedList() {
try {
let selectedList = [];
@@ -5096,14 +4795,12 @@
return [];
}
},
-
detectPage() {
let path = location.pathname;
if (/^\/(drive)/.test(path)) return 'home';
if (/^\/(s|share)\//.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -5115,7 +4812,6 @@
this.addPageListener();
},
};
-
/**
* 中国移动云盘 / 和彩云
* @author 油小猴
@@ -5123,20 +4819,11 @@
*/
let $mcloud = {
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:移动云盘');
- if (window[key]) return;
- window[key] = true;
-
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
$mcloud.getLink();
});
-
$doc.on('click', '.pl-button-save', async function (e) {
e.preventDefault();
let selectList = $mcloud.getSelectedList();
@@ -5146,10 +4833,8 @@
await base.sleep(500);
document.querySelector('.btn-top.btn-top_dl').click();
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -5157,14 +4842,11 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
base.get(e.currentTarget.dataset.link, undefined, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async () => {
let prog = +temp.progress[index] || 0;
let currentTime = Date.now();
@@ -5172,13 +4854,11 @@
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -5186,15 +4866,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -5208,74 +4885,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"));
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"));
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), undefined);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
greenerPage() {
base.waitForKeyElements(".adv_swiper_menu", function (tag) {
tag.fadeOut();
@@ -5304,7 +4965,6 @@
});
}, true);
},
-
beautifyPage() {
base.adaptiveThemeOverride([
['#3181f9', temp.color],
@@ -5314,7 +4974,6 @@
['49,129,249,.08', base.hexToRgba(`${temp.color}20`)],
]);
},
-
addButton() {
base.waitForKeyElements(config.$mcloud.mount.home, (element) => {
temp.pege = $mcloud.detectPage();
@@ -5349,7 +5008,6 @@
element.prepend($button);
})
},
-
addInitButton() {
let $button = $(`
点我点亮
`);
$button.click(base.showInitDialog);
@@ -5366,7 +5024,6 @@
element.prepend($button);
})
},
-
getRandomString(len) {
len = len || 16;
let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
@@ -5377,7 +5034,6 @@
}
return pwd;
},
-
utob(str) {
let u = String.fromCharCode;
return str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, function (t) {
@@ -5389,7 +5045,6 @@
return u(240 | e >>> 18 & 7) + u(128 | e >>> 12 & 63) + u(128 | e >>> 6 & 63) + u(128 | 63 & e);
});
},
-
getSign(e, t, a, n) {
let r = "",
i = "";
@@ -5406,14 +5061,12 @@
let l = md5(a + ":" + n);
return md5(A + l).toUpperCase();
},
-
async getFileUrlByOnce(item, index) {
try {
if (item.downloadUrl) return {
index,
downloadUrl: item.downloadUrl
};
-
if (this.detectPage() === 'home') {
let body = {
fileId: item.contentID
@@ -5421,7 +5074,6 @@
let time = new Date(+new Date() + 8 * 3600 * 1000).toJSON().substr(0, 19).replace('T', ' ');
let key = this.getRandomString(16);
let sign = this.getSign(undefined, body, time, key);
-
let getCookie = (name) => {
let cname = name + "=";
let ca = document.cookie.split(';');
@@ -5466,7 +5118,6 @@
}
if (this.detectPage() === 'share') {
let vueDom = document.querySelector(".main_file_list").__vue__;
-
let res = await base.post(config.$mcloud.api.getShareLink, `linkId=${vueDom.linkID}&contentIds=${item.path}&catalogIds=`, { "Content-Type": "application/x-www-form-urlencoded" });
if (res.code === 0) {
return {
@@ -5487,7 +5138,6 @@
};
}
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -5513,7 +5163,6 @@
let selectList = this.getSelectedList();
if (selectList.length === 0) return message.error('提示:
请勾选要下载的文件哦~');
if (selectList.every(item => !item.contentID && !item.contentName)) return message.error('提示:
请打开文件夹后再勾选文件~');
-
if (temp.pege === 'home') {
selectList = selectList.filter(item => item.contentID && item.contentName && item.contentSuffix);
let batchSize = 15;
@@ -5523,7 +5172,6 @@
for (let i = 0; i < selectList.length; i += batchSize) {
let batch = selectList.slice(i, i + batchSize);
let queue = [];
-
batch.forEach((item, localIndex) => {
let globalIndex = i + localIndex;
queue.push(this.getFileUrlByOnce(item, globalIndex)
@@ -5533,18 +5181,15 @@
return val;
}));
});
-
let res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].downloadUrl = val.downloadUrl;
});
-
await base.sleep(1000);
}
} else {
return message.error('提示:
页面错误~');
}
-
temp.links = [selectList, {
isFolder: v => (v.dirEtag || v.caName),
getFileName: v => (v.contentName || v.coName),
@@ -5554,7 +5199,6 @@
}];
base.showMainDialog(config.base.dom.button[temp.mode].title, base.generateDom(temp.links), config.base.dom.button[temp.mode].footer);
},
-
getSelectedList() {
try {
return document.querySelector(".main_file_list").__vue__.selectList.map(val => val.item);
@@ -5573,14 +5217,12 @@
return [...selectFileList, ...selectDirList];
}
},
-
detectPage() {
let path = location.pathname;
if (/^\/w/.test(path)) return 'home';
if (/^\/link|shareweb/.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -5592,7 +5234,6 @@
this.addPageListener();
},
};
-
/**
* 天翼云盘
* @author 油小猴
@@ -5600,22 +5241,13 @@
*/
let $tcloud = {
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:天翼云盘');
- if (window[key]) return;
- window[key] = true;
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
$tcloud.getLink();
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -5623,14 +5255,11 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
base.get(e.currentTarget.dataset.link, undefined, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async function () {
let prog = +temp.progress[index] || 0;
let currentTime = Date.now();
@@ -5638,13 +5267,11 @@
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -5652,15 +5279,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -5674,74 +5298,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"));
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"));
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), undefined);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
greenerPage() {
base.waitForKeyElements(".advertising-mask", function (tag) {
tag.fadeOut();
@@ -5750,7 +5358,6 @@
tag.fadeOut();
}, true);
},
-
beautifyPage() {
base.adaptiveThemeOverride([
['#2b89ea', temp.color],
@@ -5766,7 +5373,6 @@
['#eaf5ff', `${temp.color}20`],
], "other");
},
-
addButton() {
let $button = $(`
下载助手
@@ -5801,7 +5407,6 @@
element.prepend($button);
})
},
-
addInitButton() {
let $button = $(`
点我点亮
`);
$button.click(base.showInitDialog);
@@ -5817,7 +5422,6 @@
element.prepend($button);
})
},
-
async getToken() {
$doc.find('.loading-popup .loading-title').html(`令牌获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取状态~
`);
@@ -5828,7 +5432,6 @@
$doc.find('.loading-popup .swal2-html-container').html(`
获取成功,令牌已缓存~
`);
return accessToken;
},
-
async getFileUrlByOnce(item, index, token) {
try {
if (item.downloadUrl) {
@@ -5875,7 +5478,6 @@
};
}
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -5910,7 +5512,6 @@
}
$doc.find('.loading-popup .loading-title').html(`令牌获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
获取缓存成功~
`);
-
let batchSize = 15;
let processed = 0;
$doc.find('.loading-popup .loading-title').html(`链接获取中`);
@@ -5918,7 +5519,6 @@
for (let i = 0; i < selectList.length; i += batchSize) {
let batch = selectList.slice(i, i + batchSize);
let queue = [];
-
batch.forEach((item, localIndex) => {
let globalIndex = i + localIndex;
queue.push(this.getFileUrlByOnce(item, globalIndex, token)
@@ -5928,15 +5528,12 @@
return val;
}));
});
-
let res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].downloadUrl = val.downloadUrl;
});
-
await base.sleep(1000);
}
-
temp.links = [selectList, {
isFolder: v => v.isFolder,
getFileName: v => v.fileName,
@@ -5946,7 +5543,6 @@
}];
base.showMainDialog(config.base.dom.button[temp.mode].title, base.generateDom(temp.links), config.base.dom.button[temp.mode].footer);
},
-
getSelectedList() {
try {
return document.querySelector(".c-file-list").__vue__.selectedList;
@@ -5954,14 +5550,12 @@
return [document.querySelector(".info-detail").__vue__.fileDetail];
}
},
-
detectPage() {
let path = location.pathname;
if (/^\/web\/main/.test(path)) return 'home';
if (/^\/web\/share/.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -5974,7 +5568,6 @@
this.getToken();
},
};
-
/**
* 迅雷云盘
* @author 油小猴
@@ -5982,13 +5575,6 @@
*/
let $xunlei = {
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:迅雷云盘');
- if (window[key]) return;
- window[key] = true;
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
@@ -6004,10 +5590,8 @@
await base.sleep(500);
document.querySelector('.saveToCloud').click();
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -6015,14 +5599,11 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
base.get(e.currentTarget.dataset.link, undefined, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async function () {
let prog = +temp.progress[index] || 0;
let currentTime = Date.now();
@@ -6030,13 +5611,11 @@
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -6044,15 +5623,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -6066,74 +5642,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"));
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"), { "mirror_url_list": base.getMirrorList(target.data("link"), config.$xunlei.api.mirror), "checkboxCustomHeadersForMirrors": "on" });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), undefined);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
beautifyPage() {
base.adaptiveThemeOverride([
['#3f85ff', temp.color],
@@ -6149,7 +5709,6 @@
], "other");
base.addStyle(`${mount}-xunlei`, 'style', `.web-header{background:linear-gradient(0deg,${temp.color}D0,${temp.color})}`);
},
-
addButton() {
base.waitForKeyElements(config.$xunlei.mount.home, (element) => {
temp.pege = $xunlei.detectPage();
@@ -6184,7 +5743,6 @@
element.prepend($button);
})
},
-
addInitButton() {
let $button = $(`
点我点亮
`);
$button.click(base.showInitDialog);
@@ -6200,7 +5758,6 @@
element.prepend($button);
})
},
-
getToken() {
$doc.find('.loading-popup .loading-title').html(`令牌获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取状态~
`);
@@ -6222,7 +5779,6 @@
};
return token;
},
-
async getFileUrlByOnce(item, index, token) {
try {
if (item.downloadUrl) return {
@@ -6245,7 +5801,6 @@
return message.error('提示:
请先登录网盘后再刷新页面呢~');
}
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -6280,7 +5835,6 @@
for (let i = 0; i < selectList.length; i += batchSize) {
let batch = selectList.slice(i, i + batchSize);
let queue = [];
-
batch.forEach((item, localIndex) => {
let globalIndex = i + localIndex;
queue.push(this.getFileUrlByOnce(item, globalIndex, token)
@@ -6290,12 +5844,10 @@
return val;
}));
});
-
let res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].downloadUrl = val.downloadUrl;
});
-
await base.sleep(1000);
}
} else {
@@ -6310,9 +5862,7 @@
tooltip: config.$xunlei.dom
}];
base.showMainDialog(config.base.dom.button[temp.mode].title, base.generateDom(temp.links), config.base.dom.button[temp.mode].footer);
-
},
-
getSelectedList() {
try {
let doms = document.querySelectorAll('.SourceListItem__item--XxpOC');
@@ -6328,14 +5878,12 @@
return [];
}
},
-
detectPage() {
let path = location.pathname;
if (/^\/$/.test(path)) return 'home';
if (/^\/(s|share)\//.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -6347,7 +5895,6 @@
this.addPageListener();
},
};
-
/**
* 夸克网盘
* @author 油小猴
@@ -6355,13 +5902,6 @@
*/
let $quark = {
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:夸克网盘');
- if (window[key]) return;
- window[key] = true;
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
@@ -6384,10 +5924,8 @@
return true;
}, true)
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -6395,14 +5933,11 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
base.get(e.currentTarget.dataset.link, { "User-Agent": config.$quark.api.ua.downloadLink }, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async function () {
let prog = +temp.progress[index] || 0;
let currentTime = Date.now();
@@ -6410,13 +5945,11 @@
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -6424,15 +5957,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -6446,74 +5976,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"), [`User-Agent:${config.$quark.api.ua.downloadLink}`, `Referer:https://${location.host}/`, `Cookie:${document.cookie}`]);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"), { "user_agent": config.$quark.api.ua.downloadLink, "referrer": `https://${location.host}/`, "cookie": document.cookie });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), { "User-Agent": config.$quark.api.ua.downloadLink, "Cookie": document.cookie });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
greenerPage() {
base.waitForKeyElements('[class*="Activity--video-toolbar-activity"]', function (tag) {
tag.fadeOut();
@@ -6605,7 +6119,6 @@
element.append($button);
})
},
-
addInitButton() {
base.waitForKeyElements(config.$quark.mount.home, (element) => {
temp.pege = $quark.detectPage();
@@ -6624,7 +6137,6 @@
element.append($button);
})
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -6655,34 +6167,27 @@
let batchSize = 15;
let processed = 0;
selectList = selectList.filter(item => item.file === true)
-
for (let i = 0; i < selectList.length; i += batchSize) {
// 获取当前批次文件
let batch = selectList.slice(i, i + batchSize);
let fids = batch.map(item => item.fid);
-
// 发起请求获取链接
let res = await base.post(config.$quark.api.getLink, { "fids": fids }, { "User-Agent": config.$quark.api.ua.downloadLink });
-
if (res?.code === 31001) {
return message.error('提示:
请先登录网盘~
代码:' + res.code);
}
if (res?.code !== 0) {
return message.error('提示:
获取链接失败了~
代码:' + res.code);
}
-
// 合并响应数据
if (res?.data) {
data.push(...res.data);
}
-
// 更新处理进度
processed += batch.length;
-
// 更新UI显示
$doc.find('.loading-popup .loading-title').html(`链接获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
已获取 ${processed} / ${selectList.length} 个链接~
`);
-
// 请求间隔节流
await base.sleep(1000);
}
@@ -6703,7 +6208,6 @@
return message.error('提示:
页面错误~');
}
},
-
getSelectedList() {
try {
let selectedList = [];
@@ -6724,14 +6228,12 @@
return [];
}
},
-
detectPage() {
let path = location.pathname;
if (/^\/(list)/.test(path)) return 'home';
if (/^\/(s|share)\//.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -6743,7 +6245,6 @@
this.addPageListener();
},
};
-
/**
* UC网盘
* @author 油小猴
@@ -6751,13 +6252,6 @@
*/
let $uc = {
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:UC网盘');
- if (window[key]) return;
- window[key] = true;
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
@@ -6773,10 +6267,8 @@
await base.sleep(500);
document.querySelector('.file-info_r').click();
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -6784,14 +6276,11 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
base.get(e.currentTarget.dataset.link, { "User-Agent": config.$uc.api.ua.downloadLink }, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async function () {
let prog = +temp.progress[index] || 0;
let currentTime = Date.now();
@@ -6799,13 +6288,11 @@
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -6813,15 +6300,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -6835,74 +6319,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"), [`User-Agent:${config.$uc.api.ua.downloadLink}`, `Referer:https://${location.host}/`, `Cookie:${document.cookie}`]);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"), { "user_agent": config.$uc.api.ua.downloadLink, "referrer": `https://${location.host}/`, "cookie": document.cookie });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), { "User-Agent": config.$uc.api.ua.downloadLink, "Cookie": document.cookie });
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
greenerPage() {
base.waitForKeyElements('[class*="VideoDetail--content-footer"]', function (tag) {
tag.children().each(function () {
@@ -6916,7 +6384,6 @@
tag.hide();
}, true);
},
-
beautifyPage() {
base.adaptiveThemeOverride([
['#12161a', temp.color],
@@ -6931,7 +6398,6 @@
]);
base.addStyle(`${mount}-uc`, 'style', `.file-list .hover-oper .hover-transparent-bg{background:transparent!important}`);
},
-
svg: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMiI+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNOSAxMmwyIDIgMi0yeiIvPjxwYXRoIGQ9Ik0xNCA4aDEuNTUzYy44NSAwIDEuMTYuMDkzIDEuNDcuMjY3LjMxMS4xNzQuNTU2LjQzLjcyMi43NTYuMTY2LjMyNi4yNTUuNjUuMjU1IDEuNTR2NC44NzNjMCAuODkyLS4wODkgMS4yMTUtLjI1NSAxLjU0LS4xNjYuMzI3LS40MS41ODMtLjcyMi43NTctLjMxLjE3NC0uNjIuMjY3LTEuNDcuMjY3SDYuNDQ3Yy0uODUgMC0xLjE2LS4wOTMtMS40Ny0uMjY3YTEuNzc4IDEuNzc4IDAgMDEtLjcyMi0uNzU2Yy0uMTY2LS4zMjYtLjI1NS0uNjUtLjI1NS0xLjU0di00Ljg3M2MwLS44OTIuMDg5LTEuMjE1LjI1NS0xLjU0LjE2Ni0uMzI3LjQxLS41ODMuNzIyLS43NTcuMzEtLjE3NC42Mi0uMjY3IDEuNDctLjI2N0gxMSIvPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTExIDN2MTAiLz48L2c+PC9zdmc+',
addButton() {
base.waitForKeyElements(config.$uc.mount.home, (element) => {
@@ -6963,7 +6429,6 @@
element.append($button);
})
},
-
addInitButton() {
let $button = $(`
`);
$button.click(base.showInitDialog);
@@ -6980,7 +6445,6 @@
element.append($button);
})
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -7011,34 +6475,27 @@
let batchSize = 15;
let processed = 0;
selectList = selectList.filter(item => item.file === true)
-
for (let i = 0; i < selectList.length; i += batchSize) {
// 获取当前批次文件
let batch = selectList.slice(i, i + batchSize);
let fids = batch.map(item => item.fid);
-
// 发起请求获取链接
let res = await base.post(config.$uc.api.getLink, { "fids": fids }, { "User-Agent": config.$uc.api.ua.downloadLink });
-
if (res?.code === 31001) {
return message.error('提示:
请先登录网盘~
代码:' + res.code);
}
if (res?.code !== 0) {
return message.error('提示:
获取链接失败了~
代码:' + res.code);
}
-
// 合并响应数据
if (res?.data) {
data.push(...res.data);
}
-
// 更新处理进度
processed += batch.length;
-
// 更新UI显示
$doc.find('.loading-popup .loading-title').html(`链接获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
已获取 ${processed} / ${selectList.length} 个链接~
`);
-
// 请求间隔节流
await base.sleep(1000);
}
@@ -7059,7 +6516,6 @@
return message.error('提示:
页面错误~');
}
},
-
getSelectedList() {
try {
let selectedList = [];
@@ -7080,14 +6536,12 @@
return [];
}
},
-
detectPage() {
let path = location.pathname;
if (/^\/(list)/.test(path)) return 'home';
if (/^\/(s|share)\//.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -7099,7 +6553,6 @@
this.addPageListener();
},
};
-
/**
* 123云盘
* @author 油小猴
@@ -7107,22 +6560,13 @@
*/
let $123pan = {
addPageListener() {
- /*
- 防止代码因其他原因被执行多次
- 这段代码出自 Via轻插件,作者谷花泰
- */
- let key = encodeURIComponent('LinkSwift:123云盘');
- if (window[key]) return;
- window[key] = true;
$doc.on('click', '.pl-button-mode', async function (e) {
temp.mode = e.currentTarget.dataset.mode;
if (!temp.mode) return;
$123pan.getLink();
});
-
$doc.on('click', '.listener-api-download.enhance', async function (e) {
e.preventDefault();
-
let o = base._EventFactory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
@@ -7130,15 +6574,12 @@
let index = o.link[0].dataset.index;
let size = Number(o.link[0].dataset.size) || 0;
let originalHtml = o.link.html();
-
base._resetData(index);
let token = $123pan.getToken();
base.get(e.currentTarget.dataset.link, undefined, 'blob', { filename, index });
-
let startTime = Date.now();
let prevLoaded = 0;
let prevTime = startTime;
-
temp.ins[index] = setInterval(async function () {
let prog = +temp.progress[index] || 0;
let currentTime = Date.now();
@@ -7146,13 +6587,11 @@
let loaded = prog * size / 100;
let timeDiff = Math.max(currentTime - prevTime, 1); // 避免除零
let speed = ((loaded - prevLoaded) / (timeDiff / 1000)) || 0;
-
// 计算剩余时间(保护除零)
let totalProgress = Math.max(prog / 100, 0.01);
let totalElapsedSeconds = elapsedTime / 1000;
let estTotalTime = totalElapsedSeconds / totalProgress;
let remainingTime = estTotalTime - totalElapsedSeconds;
-
// 更新界面状态
o.link.hide();
o.directLink.hide();
@@ -7160,15 +6599,12 @@
o.stop.show();
o.copy.hide();
o.progress.show();
-
// 更新进度条
$width.css('width', `${prog}%`);
$text.text(`${prog.toFixed(2)}% | 速度:${base.sizeFormat(speed)} | 剩余:${base.rtimeFormat(remainingTime)}`);
-
// 更新历史值
prevLoaded = loaded;
prevTime = currentTime;
-
// 下载完成
if (prog >= 100) {
await base.sleep(1000);
@@ -7182,74 +6618,58 @@
}
}, 500);
});
-
$doc.on('click', '.listener-aria2-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToAria2(target.data("link"), target.data("filename"));
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-bitcomet-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToBitcomet(target.data("link"), target.data("filename"));
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
-
$doc.on('click', '.listener-abdm-download', async function (e) {
let target = $(e.currentTarget);
-
if (target.attr('data-processing') === 'true') return;
target.attr('data-processing', 'true');
let originalHtml = target.html();
-
target.find(".pl-icon").remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
-
let res = await base.sendLinkToABDM(target.data("link"), target.data("filename"), undefined);
if (res === 'success') {
target.removeClass('pl-btn-danger').html('发送成功啦!快去看看吧~').animate({ opacity: '0.5' }, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,检查一下您的配置信息哦!').animate({ opacity: '0.5' }, "slow");
}
-
await base.sleep(3000);
target.removeClass('pl-btn-danger').removeAttr('data-processing').html(originalHtml).css('opacity', "");
});
},
-
greenerPage() {
base.waitForKeyElements(".cent > .cent-not-login > .ant-btn", (tag) => {
if (tag.hasClass("reg") || tag.hasClass("log")) return;
@@ -7265,12 +6685,10 @@
});
tag.after(button);
});
-
base.waitForKeyElements(".new-menu-item-image, .special-menu-item-container-migration--label, .sider-member-btn, .video-new-user-tips", (tag) => {
if (tag.is(":hidden")) return;
tag.hide();
}, true);
-
base.waitForKeyElements('.frontend-layout-header-right > span > [alt^="buttonMall"]', (tag) => {
if (tag.parent().is(":hidden")) return;
tag.parent().hide();
@@ -7278,14 +6696,12 @@
button.on("click", () => { tag.click() });
tag.parent().after(button);
}, true);
-
let disallowTexts = ["同步空间", "其他网盘数据转入", "下载客户端"];
base.waitForKeyElements('ul[role="menu"] li[role="menuitem"]', (tag) => {
let menuText = tag.text().trim();
if (tag.is(":hidden")) return;
if (disallowTexts.includes(menuText)) tag.hide();
}, true);
-
base.waitForKeyElements(`.rightInfo .register:not(.pl-button, .pl-button-init),
.homeClass > div > .ant-dropdown-trigger:not(.pl-button, .pl-button-init),
.homeClass > div > .sysbut`, function (tag) {
@@ -7309,7 +6725,6 @@
tag.hide();
}, true);
},
-
beautifyPage() {
base.adaptiveThemeOverride([
['#597dfc', temp.color],
@@ -7334,14 +6749,12 @@
['89, 125, 252', base.hexToRgba(temp.color)],
]);
},
-
getToken() {
$doc.find('.loading-popup .loading-title').html(`令牌获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取令牌~
`);
let token = base.getStorage("authorToken");
return token;
},
-
async getLink() {
Swal.fire({
...temp.swalDefault,
@@ -7375,7 +6788,6 @@
for (let i = 0; i < selectList.length; i += batchSize) {
let batch = selectList.slice(i, i + batchSize);
let queue = [];
-
$doc.find('.loading-popup .loading-title').html(`链接获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取文件对应的下载链接~
`);
batch.forEach((item, localIndex) => {
@@ -7387,12 +6799,10 @@
return val;
}));
});
-
let res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].DownloadUrl = val.downloadUrl;
});
-
await base.sleep(1000);
}
temp.links = [selectList, {
@@ -7413,7 +6823,6 @@
for (let i = 0; i < selectList.length; i += batchSize) {
let batch = selectList.slice(i, i + batchSize);
let queue = [];
-
$doc.find('.loading-popup .loading-title').html(`链接获取中`);
$doc.find('.loading-popup .swal2-html-container').html(`
正在获取文件对应的下载链接~
`);
batch.forEach((item, localIndex) => {
@@ -7425,12 +6834,10 @@
return val;
}));
});
-
let res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].DownloadUrl = val.downloadUrl;
});
-
await base.sleep(1000);
}
temp.links = [selectList, {
@@ -7445,13 +6852,12 @@
return message.error('提示:
页面错误~');
}
},
-
async getFileUrlByOnce(item, index, token, ShareKey) {
if (item.DownloadUrl || item.DownloadURL) {
let url = item.DownloadUrl ? item.DownloadUrl : item.DownloadURL;
let surl = new URL(url).searchParams.get("params");
if (surl) url = base.decodeBase(surl);
- url = await base.getFinalUrl(url);
+ // url = await base.getFinalUrl(url);
return {
index,
downloadUrl: url
@@ -7467,7 +6873,7 @@
let url = res.data.DownloadUrl ? res.data.DownloadUrl : res.data?.DownloadURL;
let surl = new URL(url).searchParams.get("params");
if (surl) url = base.decodeBase(surl);
- //url = await base.getFinalUrl(url);
+ // url = await base.getFinalUrl(url);
return {
index,
downloadUrl: url
@@ -7481,7 +6887,6 @@
};
}
},
-
getSelectedList() {
try {
let selectedList = [];
@@ -7501,7 +6906,6 @@
return [];
}
},
-
addButton() {
base.waitForKeyElements(config.$123pan.mount.home, (element) => {
temp.pege = $123pan.detectPage();
@@ -7543,7 +6947,6 @@
element.append($button);
})
},
-
addInitButton() {
base.waitForKeyElements(config.$123pan.mount.home, (element) => {
temp.pege = $123pan.detectPage();
@@ -7567,14 +6970,12 @@
element.append($button);
})
},
-
detectPage() {
let path = location.pathname;
if (/^\/$/.test(path)) return 'home';
if (/^\/s\//.test(path)) return 'share';
return "";
},
-
async initPanLinker() {
base.createTip();
base.registerMenuCommand();
@@ -7586,7 +6987,6 @@
this.addPageListener();
},
};
-
// 主代码
let main = {
async init() {
@@ -7645,7 +7045,6 @@
`);
return true;
}, true)
-
// 智能默认设置
base.initDefaultConfig();
// 加载美化样式
@@ -7654,7 +7053,6 @@
base.addPageListener();
// 创建下载用 iframe
base.createDownloadIframe();
-
/**
* 控制台输出
* @author 油小猴
@@ -7662,7 +7060,6 @@
* @description 来自【网盘智能识别助手】,有改动
*/
console.log(`%c %c LinkSwift\n一个基于 JavaScript 的网盘文件下载地址获取工具\n仓库:https://github.com/hmjz100/LinkSwift\n版本:${info.version}\n领域:${(window.self !== window.top ? "[iframe] " : "") + (document.title ? (document.title + " (" + location.origin + location.pathname + ")") : location.href)}`, `background:url(${info.icon}) center center no-repeat;background-size:12px;padding:3px`, `padding:2px`);
-
// 最后判断页面地址并加载对应的initPanLinker
if (/(pan|yun).baidu.com/.test(location.host)) {
base.getValue('setting_ui_theme').custom.$baidu === true && $baidu.beautifyPage();
@@ -7719,7 +7116,6 @@
}
};
main.init();
-
// 这是啥?我不到啊
function idontknow(input) {
let charArray = input.split("");