From f1ce34acaafc4dfd24501c61bc1c6a3dfafd02f7 Mon Sep 17 00:00:00 2001
From: Hmjz100 <98228280+hmjz100@users.noreply.github.com>
Date: Mon, 20 Apr 2026 16:53:44 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=80=82=E9=85=8D?=
=?UTF-8?q?=E5=85=89=E9=B8=AD=E4=BA=91=E7=9B=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
(改)网盘直链下载助手.user.js | 632 ++++++++++++++++++++++++++-------
1 file changed, 508 insertions(+), 124 deletions(-)
diff --git a/(改)网盘直链下载助手.user.js b/(改)网盘直链下载助手.user.js
index 1169a5d..50bc010 100644
--- a/(改)网盘直链下载助手.user.js
+++ b/(改)网盘直链下载助手.user.js
@@ -54,6 +54,7 @@
// @match *://caiyun.139.com/*
// @match *://cloud.189.cn/web/*
// @match *://pan.xunlei.com/*
+// @match *://www.guangyapan.com/*
// @match *://pan.quark.cn/*
// @match *://drive.uc.cn/*
// @match *://*.123pan.com/*
@@ -75,6 +76,8 @@
// @connect cmecloud.cn
// @connect 189.cn
// @connect xunlei.com
+// @connect guangyapan.com
+// @connect guangyacdn.com
// @connect quark.cn
// @connect uc.cn
// @connect 123pan.com
@@ -274,6 +277,7 @@
}
},
$baidu: {
+ // 当年大战的最后赢家,虽然限速,但哪怕抽丝剥茧,也能得到结果
api: {
ua: {
downloadLink: "pan.baidu.com"
@@ -297,6 +301,7 @@
}
},
$aliyun: {
+ // 和夸克差不多,不予置评
api: {
getLink: "https://api.aliyundrive.com/v2/file/get_download_url",
getShareLink: "https://api.aliyundrive.com/v2/file/get_share_link_download_url"
@@ -316,6 +321,7 @@
}
},
$mcloud: {
+ // 运营商中的精品,意外的不错,也没有啥限制,就是没资源
api: {
getLink: "https://personal-kd-njs.yun.139.com/hcy/file/getDownloadUrl"
},
@@ -329,6 +335,7 @@
}
},
$tcloud: {
+ // 运营商中的精品,意外的不错,也没有啥限制,就是没资源
api: {
getAccessToken: "https://api.cloud.189.cn/open/oauth2/ssoH5.action",
getLink: "https://api.cloud.189.cn/open/file/getFileDownloadUrl.action"
@@ -345,6 +352,7 @@
$xunlei: {
api: {
mirror: [
+ // 没想到这么难找,还有可能随时失效,真有你的呀
"vod0780-aliyun04-vip-lixian.xunlei.com", "vod0781-aliyun04-vip-lixian.xunlei.com", "vod3379-aliyun04-vip-lixian.xunlei.com", "vod3429-aliyun04-vip-lixian.xunlei.com", "vod3459-aliyun04-vip-lixian.xunlei.com", "vod3533-aliyun04-vip-lixian.xunlei.com", "vod4252-aliyun04-vip-lixian.xunlei.com", "vod4253-aliyun04-vip-lixian.xunlei.com", "vod4320-aliyun04-vip-lixian.xunlei.com", "vod4321-aliyun04-vip-lixian.xunlei.com", "vod0555-aliyun06-vip-lixian.xunlei.com", "vod0556-aliyun06-vip-lixian.xunlei.com", "vod1284-aliyun06-vip-lixian.xunlei.com", "vod1285-aliyun06-vip-lixian.xunlei.com", "vod1363-aliyun06-vip-lixian.xunlei.com", "vod1372-aliyun06-vip-lixian.xunlei.com", "vod1629-aliyun06-vip-lixian.xunlei.com", "vod1630-aliyun06-vip-lixian.xunlei.com", "vod1703-aliyun06-vip-lixian.xunlei.com", "vod1704-aliyun06-vip-lixian.xunlei.com", "vod1844-aliyun06-vip-lixian.xunlei.com", "vod0254-aliyun08-vip-lixian.xunlei.com", "vod0255-aliyun08-vip-lixian.xunlei.com", "vod0256-aliyun08-vip-lixian.xunlei.com", "vod0257-aliyun08-vip-lixian.xunlei.com", "vod0261-aliyun08-vip-lixian.xunlei.com", "vod0262-aliyun08-vip-lixian.xunlei.com", "vod0263-aliyun08-vip-lixian.xunlei.com", "vod0264-aliyun08-vip-lixian.xunlei.com", "vod0759-aliyun08-vip-lixian.xunlei.com", "vod0760-aliyun08-vip-lixian.xunlei.com", "vod9410-aliyun08-vip-lixian.xunlei.com", "vod9411-aliyun08-vip-lixian.xunlei.com", "vod9412-aliyun08-vip-lixian.xunlei.com", "vod0080-b02-vip-lixian.xunlei.com", "vod0432-b02-vip-lixian.xunlei.com", "vod0531-b02-vip-lixian.xunlei.com", "vod0532-b02-vip-lixian.xunlei.com", "vod0533-b02-vip-lixian.xunlei.com", "vod0534-b02-vip-lixian.xunlei.com", "vod0537-b02-vip-lixian.xunlei.com", "vod0563-b02-vip-lixian.xunlei.com", "vod0565-b02-vip-lixian.xunlei.com", "vod0566-b02-vip-lixian.xunlei.com", "vod0568-b02-vip-lixian.xunlei.com", "vod0571-b02-vip-lixian.xunlei.com", "vod0572-b02-vip-lixian.xunlei.com", "vod0573-b02-vip-lixian.xunlei.com", "vod0595-b02-vip-lixian.xunlei.com", "vod0596-b02-vip-lixian.xunlei.com", "vod0597-b02-vip-lixian.xunlei.com", "vod0598-b02-vip-lixian.xunlei.com", "vod0636-b02-vip-lixian.xunlei.com", "vod0637-b02-vip-lixian.xunlei.com", "vod0638-b02-vip-lixian.xunlei.com", "vod0639-b02-vip-lixian.xunlei.com", "vod0640-b02-vip-lixian.xunlei.com", "vod0641-b02-vip-lixian.xunlei.com", "vod0642-b02-vip-lixian.xunlei.com", "vod0643-b02-vip-lixian.xunlei.com", "vod0644-b02-vip-lixian.xunlei.com", "vod0645-b02-vip-lixian.xunlei.com", "vod0646-b02-vip-lixian.xunlei.com", "vod0647-b02-vip-lixian.xunlei.com", "vod0648-b02-vip-lixian.xunlei.com", "vod0649-b02-vip-lixian.xunlei.com", "vod0650-b02-vip-lixian.xunlei.com", "vod0651-b02-vip-lixian.xunlei.com", "vod0652-b02-vip-lixian.xunlei.com", "vod0653-b02-vip-lixian.xunlei.com", "vod0654-b02-vip-lixian.xunlei.com", "vod0725-b02-vip-lixian.xunlei.com", "vod0726-b02-vip-lixian.xunlei.com", "vod0727-b02-vip-lixian.xunlei.com", "vod0006-b05-vip-lixian.xunlei.com", "vod0009-b05-vip-lixian.xunlei.com", "vod0010-b05-vip-lixian.xunlei.com", "vod0011-b05-vip-lixian.xunlei.com", "vod0012-b05-vip-lixian.xunlei.com", "vod0013-b05-vip-lixian.xunlei.com", "vod0014-b05-vip-lixian.xunlei.com", "vod0043-b05-vip-lixian.xunlei.com", "vod0044-b05-vip-lixian.xunlei.com", "vod0045-b05-vip-lixian.xunlei.com", "vod0051-b05-vip-lixian.xunlei.com", "vod0053-b05-vip-lixian.xunlei.com", "vod0054-b05-vip-lixian.xunlei.com", "vod0055-b05-vip-lixian.xunlei.com", "vod0139-b05-vip-lixian.xunlei.com", "vod0140-b05-vip-lixian.xunlei.com", "vod0141-b05-vip-lixian.xunlei.com", "vod0142-b05-vip-lixian.xunlei.com", "vod0143-b05-vip-lixian.xunlei.com", "vod0349-b05-vip-lixian.xunlei.com", "vod0001-c01-vip-lixian.xunlei.com", "vod0002-c01-vip-lixian.xunlei.com", "vod0003-c01-vip-lixian.xunlei.com", "vod0004-c01-vip-lixian.xunlei.com", "vod0005-c01-vip-lixian.xunlei.com", "vod0070-h01-vip-lixian.xunlei.com", "vod0071-h01-vip-lixian.xunlei.com", "vod0074-h01-vip-lixian.xunlei.com", "vod0075-h01-vip-lixian.xunlei.com", "vod0131-h01-vip-lixian.xunlei.com", "vod0132-h01-vip-lixian.xunlei.com", "vod0153-h01-vip-lixian.xunlei.com", "vod0088-h04-vip-lixian.xunlei.com", "vod0089-h04-vip-lixian.xunlei.com", "vod0090-h04-vip-lixian.xunlei.com", "vod0091-h04-vip-lixian.xunlei.com", "vod0092-h04-vip-lixian.xunlei.com", "vod0093-h04-vip-lixian.xunlei.com", "vod0094-h04-vip-lixian.xunlei.com", "vod0097-h04-vip-lixian.xunlei.com", "vod0098-h04-vip-lixian.xunlei.com", "vod0099-h04-vip-lixian.xunlei.com", "vod0100-h04-vip-lixian.xunlei.com", "vod0101-h04-vip-lixian.xunlei.com", "vod0105-h04-vip-lixian.xunlei.com", "vod0128-h04-vip-lixian.xunlei.com", "vod0129-h04-vip-lixian.xunlei.com", "vod0143-h04-vip-lixian.xunlei.com", "vod0317-h04-vip-lixian.xunlei.com", "vod0318-h04-vip-lixian.xunlei.com", "vod0319-h04-vip-lixian.xunlei.com", "vod0320-h04-vip-lixian.xunlei.com", "vod0003-h05-vip-lixian.xunlei.com", "vod0004-h05-vip-lixian.xunlei.com", "vod0007-h05-vip-lixian.xunlei.com", "vod0008-h05-vip-lixian.xunlei.com", "vod0009-h05-vip-lixian.xunlei.com", "vod0010-h05-vip-lixian.xunlei.com", "vod0012-h05-vip-lixian.xunlei.com", "vod0013-h05-vip-lixian.xunlei.com", "vod0014-h05-vip-lixian.xunlei.com", "vod0017-h05-vip-lixian.xunlei.com", "vod0097-h05-vip-lixian.xunlei.com", "vod0098-h05-vip-lixian.xunlei.com", "vod0099-h05-vip-lixian.xunlei.com", "vod0116-h05-vip-lixian.xunlei.com", "vod0117-h05-vip-lixian.xunlei.com", "vod0121-h05-vip-lixian.xunlei.com", "vod0122-h05-vip-lixian.xunlei.com", "vod0131-h05-vip-lixian.xunlei.com", "vod0145-h05-vip-lixian.xunlei.com", "vod0146-h05-vip-lixian.xunlei.com", "vod0184-h05-vip-lixian.xunlei.com", "vod0185-h05-vip-lixian.xunlei.com", "vod0221-h05-vip-lixian.xunlei.com", "vod0222-h05-vip-lixian.xunlei.com", "vod0223-h05-vip-lixian.xunlei.com", "vod0224-h05-vip-lixian.xunlei.com", "vod0225-h05-vip-lixian.xunlei.com", "vod0227-h05-vip-lixian.xunlei.com", "vod0252-h05-vip-lixian.xunlei.com", "vod0253-h05-vip-lixian.xunlei.com", "vod0254-h05-vip-lixian.xunlei.com", "vod0001-m01-vip-lixian.xunlei.com", "vod0002-m01-vip-lixian.xunlei.com", "vod0003-m01-vip-lixian.xunlei.com", "vod0006-m01-vip-lixian.xunlei.com", "vod0007-m01-vip-lixian.xunlei.com", "vod0008-m01-vip-lixian.xunlei.com", "vod0010-m01-vip-lixian.xunlei.com", "vod0011-m01-vip-lixian.xunlei.com", "vod0012-m01-vip-lixian.xunlei.com", "vod0013-m01-vip-lixian.xunlei.com", "vod0014-m01-vip-lixian.xunlei.com", "vod0019-m01-vip-lixian.xunlei.com", "vod0020-m01-vip-lixian.xunlei.com", "vod0021-m01-vip-lixian.xunlei.com", "vod0022-m01-vip-lixian.xunlei.com", "vod0064-txyun08-vip-lixian.xunlei.com", "vod0065-txyun08-vip-lixian.xunlei.com", "vod0066-txyun08-vip-lixian.xunlei.com", "vod0067-txyun08-vip-lixian.xunlei.com", "vod0068-txyun08-vip-lixian.xunlei.com", "vod0069-txyun08-vip-lixian.xunlei.com", "vod0070-txyun08-vip-lixian.xunlei.com", "vod0340-txyun08-vip-lixian.xunlei.com", "vod0341-txyun08-vip-lixian.xunlei.com", "vod0032-z01-vip-lixian.xunlei.com", "vod0035-z01-vip-lixian.xunlei.com", "vod0036-z01-vip-lixian.xunlei.com", "vod0037-z01-vip-lixian.xunlei.com", "vod0038-z01-vip-lixian.xunlei.com", "vod0039-z01-vip-lixian.xunlei.com", "vod0040-z01-vip-lixian.xunlei.com", "vod0041-z01-vip-lixian.xunlei.com", "vod0042-z01-vip-lixian.xunlei.com", "vod0091-z01-vip-lixian.xunlei.com", "vod0093-z01-vip-lixian.xunlei.com", "vod0131-z01-vip-lixian.xunlei.com", "vod0135-z01-vip-lixian.xunlei.com", "vod0136-z01-vip-lixian.xunlei.com", "vod0146-z01-vip-lixian.xunlei.com", "vod0155-z01-vip-lixian.xunlei.com", "vod0156-z01-vip-lixian.xunlei.com", "vod0167-z01-vip-lixian.xunlei.com", "vod0195-z01-vip-lixian.xunlei.com", "vod0196-z01-vip-lixian.xunlei.com", "vod0281-z01-vip-lixian.xunlei.com"
],
getLink: "https://api-pan.xunlei.com/drive/v1/files/"
@@ -359,7 +367,24 @@
filename: `注:此服务不会向客户端回报文件名,下载时需要复制文件名。`
}
},
+ $guangya: {
+ // 不愧是吸血雷!现在又想学习吸二代的按流量计费方式!
+ api: {
+ getLink: "https://api.guangyapan.com/nd.bizuserres.s/v1/get_res_download_url",
+ getShareLink: "https://api.guangyapan.com/nd.bizuserres.s/v1/get_share_download_url",
+ getShareToken: "https://api.guangyapan.com/nd.bizuserres.s/v1/get_share_access_token"
+ },
+ mount: {
+ home: `#root #app div > div:has(> .ant-btn.ant-btn-primary.ant-btn-color-primary .ant-btn-icon > .swangpan-icon-upload):has(> .ant-btn.ant-btn-default.ant-btn-color-default .ant-btn-icon > .swangpan-icon-addfolder)`,
+ share: `#root #app div > div:has(> .ant-btn.ant-btn-lg .ant-btn-icon > .swangpan-icon-download)`
+ },
+ dom: {
+ enhance: `+
此方式可以自动设置文件名,然后下载。
此方式的下载请求不会被 IDM 捕获。`,
+ normal: `+
此方式的下载请求可能会被 IDM 捕获。`
+ }
+ },
$quark: {
+ // 没想到啊没想到,矮子里面挑高个,竟是还有些良心
api: {
ua: {
downloadLink: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/3.20.0 Chrome/112.0.5615.165 Electron/24.1.3.8 Safari/537.36 Channel/pckk_other_ch"
@@ -376,6 +401,7 @@
}
},
$uc: {
+ // 夸克团队做的,意见同上
api: {
ua: {
downloadLink: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) uc-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch"
@@ -392,6 +418,7 @@
}
},
$123pan: {
+ // BT吸血二代,开创性的采用了按流量计费;韭菜培养时间长达三年!
api: {
getLink: "https://www.123pan.com/api/file/download_info",
getShareLink: "https://www.123pan.com/api/share/download/info"
@@ -1046,7 +1073,7 @@
url, headers, data,
method: "POST", responseType: type,
onloadstart: () => {
- base.console.log("【LinkSwift】Post(start)\n请求地址:" + url + "\n请求数据:", _data, "\n请求头部:", headers);
+ base.console.info("【LinkSwift】Post(start)\n请求地址:" + url + "\n请求数据:", _data, "\n请求头部:", headers);
},
onload: (res) => {
// 转换 Headers 到 Object
@@ -1054,7 +1081,7 @@
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false);
if (type === "blob") {
- base.console.log("【LinkSwift】Post(load) Blob\n请求地址:" + url + "\n请求数据:", _data, "\n请求结果:", res);
+ base.console.info("【LinkSwift】Post(load) Blob\n请求地址:" + url + "\n请求数据:", _data, "\n请求结果:", res);
resolve(res);
return;
}
@@ -1070,7 +1097,7 @@
if (this.isType(res.response) === "object") res.responseDecode = res.response;
}
- base.console.log("【LinkSwift】Post(load)\n请求地址:" + url + "\n请求数据:", _data, "\n请求头部:", headers, "\n请求结果:", res);
+ base.console.info("【LinkSwift】Post(load)\n请求地址:" + url + "\n请求数据:", _data, "\n请求头部:", headers, "\n请求结果:", res);
resolve(res.responseDecode ?? res.response ?? res.responseText);
},
onerror: (error) => {
@@ -1107,7 +1134,7 @@
url, headers,
method: "GET", responseType: type,
onloadstart: () => {
- base.console.log("【LinkSwift】Get(start)\n请求地址:" + url + "\n请求头部:", headers);
+ base.console.info("【LinkSwift】Get(start)\n请求地址:" + url + "\n请求头部:", headers);
},
onload: (res) => {
// 转换 Headers 到 Object
@@ -1115,7 +1142,7 @@
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false);
if (type === "blob") {
- base.console.log("【LinkSwift】Get(load) Blob\n请求地址:" + url, "\n请求结果:", res);
+ base.console.info("【LinkSwift】Get(load) Blob\n请求地址:" + url, "\n请求结果:", res);
resolve(res);
return;
}
@@ -1128,7 +1155,7 @@
if (this.isType(res.response) === "object") res.responseDecode = res.response;
}
- base.console.log("【LinkSwift】Get(load)\n请求地址:" + url + "\n请求头部:", headers, "\n请求结果:", res);
+ base.console.info("【LinkSwift】Get(load)\n请求地址:" + url + "\n请求头部:", headers, "\n请求结果:", res);
resolve(res.responseDecode ?? res.response ?? res.responseText);
},
onerror: (error) => {
@@ -1164,7 +1191,7 @@
url,
headers,
onloadstart: () => {
- base.console.log(`【LinkSwift】Head${usingGET ? " Get" : ""}(start)\n请求地址:${url}\n请求头部:`, headers);
+ base.console.info(`【LinkSwift】Head${usingGET ? " Get" : ""}(start)\n请求地址:${url}\n请求头部:`, headers);
},
onload: function (res) {
if (!_aborted) {
@@ -1172,10 +1199,10 @@
const rawHeaders = res.responseHeaders || (request?.getAllResponseHeaders?.() || "") || "";
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false);
- base.console.log(`【LinkSwift】Head${usingGET ? " Get" : ""}(load)\n请求地址:${res.finalUrl}\n响应状态:${res.status}\n响应内容:`, res);
+ base.console.info(`【LinkSwift】Head${usingGET ? " Get" : ""}(load)\n请求地址:${res.finalUrl}\n响应状态:${res.status}\n响应内容:`, res);
// 如果:没用 GET & 没回 Range & 非成功返回 --> 用 HEADERS_RECEIVED 适配
- if (!usingGET && !res.responseHeaders.hasOwnProperty("Range") && !(res?.status >= 200 && res?.status < 400)) {
+ if (!usingGET && !res.responseHeaders.hasOwnProperty("Range") && !(res.status >= 200 && res.status < 400)) {
base.head(res.finalUrl, { ...headers, Range: "bytes=0-0" }, true).then(resolve).catch(reject);
return;
}
@@ -1192,9 +1219,9 @@
const rawHeaders = res.responseHeaders || (request?.getAllResponseHeaders?.() || "") || "";
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false);
- base.console.log(`【LinkSwift】Head${usingGET ? " Get" : ""}(load) RS2\n请求地址:${res.finalUrl}\n响应状态:${res.status}\n响应内容:`, res);
+ base.console.info(`【LinkSwift】Head${usingGET ? " Get" : ""}(load) RS2\n请求地址:${res.finalUrl}\n响应状态:${res.status}\n响应内容:`, res);
- if (!usingGET && !res.responseHeaders.hasOwnProperty("Range") && !(res?.status >= 200 && res?.status < 400)) {
+ if (!usingGET && !res.responseHeaders.hasOwnProperty("Range") && !(res.status >= 200 && res.status < 400)) {
base.head(res.finalUrl, { ...headers, Range: "bytes=0-0" }, true).then(resolve).catch(reject);
return;
}
@@ -1226,11 +1253,11 @@
getFinal(url, headers = {}, usingGET = false, returnURL = true) {
return this.head(url, headers, usingGET)
.then(res => {
- if (!res?.finalUrl) throw res;
- if (res?.status == 204 && res?.statusText === "IDM") throw res;
+ if (!res.finalUrl) throw res;
+ if (res.status == 204 && res.statusText === "IDM") throw res;
// 如果是重定向,递归调用
- if (res?.status >= 300 && res?.status < 400) {
+ if (res.status >= 300 && res.status < 400) {
return this.getFinal(res.finalUrl, headers, usingGET, returnURL);
}
@@ -1259,7 +1286,7 @@
this.download.taskCount = this.download.taskCount || 0; // 当前正在运行的 download 任务数
const global_maxThreads = 8; // 整个允许的最大并发数
- if (extra) base.console.log(`【LinkSwift】Download\n收到数据:`, extra);
+ if (extra) base.console.info(`【LinkSwift】Download\n收到数据:`, extra);
if (!extra || !extra.index || !extra.name || !extra.size) throw new Error("extra 缺少内容。");
const status = {
@@ -1292,7 +1319,7 @@
const supportRange = finalHead.status == 206 && (responseHeaders?.["Accept-Ranges"]?.includes("bytes") || responseHeaders?.["Content-Range"]?.includes("bytes"));
if (!!supportRange || size > 0) {
- base.console.log(`【LinkSwift】Download(Start)\n文件名称:${extra.name}\n断点续传:支持`);
+ base.console.info(`【LinkSwift】Download(Start)\n文件名称:${extra.name}\n断点续传:支持`);
const maxRetry = extra.retry || 10;
let index = 0;
@@ -1486,10 +1513,10 @@
method: "POST", url, headers: {}, data: JSON.stringify(rpcData),
responseType: "json",
onloadstart() {
- base.console.log("【LinkSwift】Post(start) Aria2Test\n请求地址:" + url + "\n请求内容:", rpcData);
+ base.console.info("【LinkSwift】Post(start) Aria2Test\n请求地址:" + url + "\n请求内容:", rpcData);
},
onload: function (res) {
- base.console.log("【LinkSwift】Post(load) Aria2Test\n请求地址:" + url + "\n请求结果:", res);
+ base.console.info("【LinkSwift】Post(load) Aria2Test\n请求地址:" + url + "\n请求结果:", res);
if (!res.response) return resolve("fail");
if (res.response?.error) {
resolve("fail");
@@ -1521,10 +1548,10 @@
method: "POST", url, headers: {}, data: new Date().getTime(),
responseType: "text",
onloadstart() {
- base.console.log("【LinkSwift】Post(start) ABDMTest\n请求地址:" + url + "\n请求内容:", new Date().getTime());
+ base.console.info("【LinkSwift】Post(start) ABDMTest\n请求地址:" + url + "\n请求内容:", new Date().getTime());
},
onload: function (res) {
- base.console.log("【LinkSwift】Post(load) ABDMTest\n请求地址:" + url + "\n请求结果:", res);
+ base.console.info("【LinkSwift】Post(load) ABDMTest\n请求地址:" + url + "\n请求结果:", res);
if (!res.response || res.response !== "pong") return resolve("fail");
resolve("success");
},
@@ -1604,7 +1631,7 @@
tag === "style" ? $style.html(css.trim().replace(/\t/g, "").replace(/\r\n|\n\r|\n|\r/g, "\n").replace(/\n+/g, "\n")) : $style.attr("href", css);
if ($styleDom.length) {
$styleDom.replaceWith($style);
- base.console.log($style[0])
+ base.console.info($style[0])
return true;
}
if (position === "before") {
@@ -1766,6 +1793,7 @@
* @param {"default"|"other"} type - 替换模式
*/
adaptiveThemeOverride(colorMap, type) {
+ if (!colorMap || colorMap.length === 0) return;
base.waitForKeyElements(`[${mount}^="${mount}-ColorUI-"], [id^="${mount}-ColorUI-"]`, function (tag) {
if (tag.html() === base.adaptiveStyleOverride(tag.text(), "", type, colorMap)) return;
const cssText = base.adaptiveStyleOverride(tag.text(), "", type, colorMap);
@@ -3188,7 +3216,7 @@
// 内容渲染
const renderContent = (target) => {
const { title, } = target.dataset;
- let html;
+ let html, dual = false;
if (title) {
html = `${title}`;
@@ -3200,6 +3228,7 @@
html = `${name}`;
if (sizeText) {
+ dual = true;
html += `${sizeText}`;
}
}
@@ -3213,6 +3242,12 @@
temp.mount[0].appendChild(tooltip);
}
+ if (dual) {
+ tooltip.classList.add("dual");
+ } else {
+ tooltip.classList.remove("dual");
+ }
+
tooltip.innerHTML = html;
tooltip.style.display = "flex";
};
@@ -3288,8 +3323,6 @@
* @description 详见代码
*/
generateDOM(configs) {
-
-
if (base.isType(configs) !== "array" && configs.length !== 2) return message.error("提示:
配置解析失败~");
const list = (Array.isArray(configs[0]) ? configs[0] : []);
if (!list.length) return message.error("提示:
获取下载链接失败,刷新网页后再试试吧~");
@@ -3713,7 +3746,7 @@
});
$doc.on("click", ".pl-button-mode", async function (e) {
temp.mode = e.currentTarget.dataset.mode;
- console.log(e, temp, base.isType(temp.main?.getLink));
+ console.info(e, temp, base.isType(temp.main?.getLink));
if (!temp.mode) return;
if (!base.isType(temp.main?.getLink).includes("function")) return;
Swal.fire({
@@ -3754,7 +3787,7 @@
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", `
html:has(.swal2-container), html.swal2-shown {font-size: unset!important}
-.swal2-container *{vertical-align:baseline}
+.swal2-container *{vertical-align:baseline;line-height:normal}
.swal2-styled{transition:all.2s}
.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:${temp.color} transparent }
.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}
@@ -3877,6 +3910,8 @@ body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) ::-webkit-scrollbar
}
.pl-icon {
+ display: inline;
+ align-self: center;
width: 15px;
height: 15px;
font-size: 18px;
@@ -3898,6 +3933,7 @@ body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) ::-webkit-scrollbar
}
.pl-a {
+ display: inline;
position: relative;
overflow: hidden;
vertical-align: baseline;
@@ -4453,6 +4489,15 @@ header[style="display:none;"]~.pl-button {
background: var(--pl-c-b0)
}
+.guangya-button {
+ color: #fff;
+ background-color: var(--pl-c);
+}
+
+.guangya-button:hover {
+ background: var(--pl-c-b0)
+}
+
.quark-button,
.uc-button {
padding: 0 14px;
@@ -4528,13 +4573,13 @@ header[style="display:none;"]~.pl-button {
padding: 5px 10px
}
-.pl-tooltip>*:first-child {
+.pl-tooltip.dual>*:first-child {
border: 1px solid;
border-color: #333 transparent #333 #333;
border-radius: 5px 0 0 5px
}
-.pl-tooltip>*:last-child {
+.pl-tooltip.dual>*:last-child {
border: 1px solid;
border-color: #333 #333 #333 transparent;
border-radius: 0 5px 5px 0
@@ -5705,7 +5750,7 @@ button.downloadSubtitle:disabled {
base.delValue("baidu_access_token");
return message.error("提示:
访问令牌已过期,再获取一次吧~
代码:" + res.errno);
}
- if (res.errno || res?.errmsg) {
+ if (res.errno || res.errmsg) {
batch.forEach(item => item.dlink = `获取下载地址失败,${(res.errno || res.errmsg) ? "服务器说:" + (res.errno && res.errmsg ? res.errno + " - " + res.errmsg : (res.errmsg || res.errno)) + "。" : "刷新后再试试吧~"}`);
} else {
return message.error("提示:
获取下载链接失败,刷新网页后再试试吧~");
@@ -5774,7 +5819,7 @@ button.downloadSubtitle:disabled {
base.delValue("baidu_access_token");
return message.error("提示:
访问令牌已过期,再获取一次吧~
代码:" + res.errno);
}
- if (res.errno || res?.errmsg) {
+ if (res.errno || res.errmsg) {
item.dlink = `获取下载地址失败,${(res.errno || res.errmsg) ? "服务器说:" + (res.errno && res.errmsg ? res.errno + " - " + res.errmsg : (res.errmsg || res.errno)) + "。" : "刷新后再试试吧~"}`;
} else {
return message.error("提示:
获取下载链接失败,刷新网页后再试试吧~");
@@ -5802,7 +5847,7 @@ button.downloadSubtitle:disabled {
const url = `${config.$baidu.api.getFiles}&dir=${encodeURIComponent(dir.path)}&access_token=${accessToken}`;
const res = await base.get(url, { "User-Agent": config.$baidu.api.ua.downloadLink });
cnt++;
- if (res?.list?.length && (res.errno === 0 || res.errmsg === "succ")) {
+ if (res.list?.length && (res.errno === 0 || res.errmsg === "succ")) {
const subFiles = res.list.filter(f => !f.isdir);
proc += subFiles.length;
$doc.find(".loading-popup .swal2-html-container").html(`