// ==UserScript==
// @name LinkSwift小增强版
// @namespace github.com/hmjz100
// @version 1.1.5
// @author Hmjz100、油小猴
// @icon data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij48cGF0aCBkPSJNMTAzLjYgMTA3LjRjMy41LTIuMiA4LjktNi4xIDEzLjgtMTIuNXM3LjMtMTIuNSA4LjUtMTYuNWMuNS0xLjcgMi4yLTcuNSAyLjItMTQuNyAwLTEwLjEtMy4zLTI1LjEtMTUuNC0zNi44LTE0LjUtMTQtMzIuMS0xNC4zLTM1LjctMTQuMy04IDAtMTUuNyAxLjktMjIuNiA1LjJDNDQgMjMgMzUuNyAzMS40IDMwLjggNDEuN2MtMS4zIDIuOC00IDQuNy03LjEgNS00IC4zLTcuNSA0LjQtOC45IDkuNi0uNSAxLjktMS42IDMuNS0zLjEgNC43QzQuNCA2Ni44IDAgNzUuNyAwIDg1YzAgNi44IDIuMyAxMy4xIDYuMSAxOC4yIDUuNSA3LjQgMTQuMiAxMi4yIDI0IDEyLjJoNDcuMWM0LjQgMCAxMS0uNSAxOC4zLTMuNSAzLjItMS40IDUuOS0zIDguMS00LjV6IiBmaWxsPSIjQTA5OUYwIi8+PHBhdGggZD0iTTExOS44IDY0LjNjLjEtMTcuMS0xMC40LTI4LTEyLjUtMzAuMUM5NSAyMi4xIDc5LjkgMjEuOCA3Ni45IDIxLjhjLTE3LjYgMC0zMy4zIDEwLjUtMzkuOSAyNi43LS42IDEuMy0xLjggMi4zLTMuNCAyLjNoLS40Yy01LjggMC0xMC42IDQuOC0xMC42IDEwLjd2LjVjMCAxLjQtLjggMi42LTEuOSAzLjNDMTMuNCA2OSA4LjggNzYuOCA4LjggODVjMCAxMi4yIDkuOSAyMi4zIDIyLjIgMjIuM2g0NS4yYzMuNi0uMSAxNy42LS45IDI5LjYtMTIgMi45LTIuOCAxMy45LTEzLjcgMTQtMzF6IiBmaWxsPSIjNTc0QUI4Ii8+PHBhdGggZD0iTTExMC44IDU3LjRsLjIgMy4zYzAgMS4zLTEuMSAyLjQtMi4zIDIuNC0xLjMgMC0yLjMtMS4xLTIuMy0yLjRsLS4xLTIuOHYtLjNjMC0xLjIuOS0yLjIgMi4xLTIuM2guM2MuNyAwIDEuMy4zIDEuNy43LS4yLjEuMy41LjQgMS40em0tMy4zLTEwLjNjMCAxLjItMSAyLjMtMi4yIDIuM2gtLjFjLS44IDAtMS42LS41LTItMS4yLTQuNi04LjMtMTMuMy0xMy41LTIyLjgtMTMuNS0xLjIgMC0yLjMtMS0yLjMtMi4ydi0uMWMwLTEuMiAxLTIuMyAyLjItMi4zaC4xYTMwLjM3IDMwLjM3IDAgMCAxIDE1LjggNC40YzQuNiAyLjggOC40IDYuOCAxMS4xIDExLjUuMS4zLjIuNy4yIDEuMXpNODguMyA3My44TDczLjUgOTMuMmMtMS41IDEuOS0zLjUgMy4xLTUuNyAzLjVoLS4yYy0uNC4xLS44LjEtMS4yLjEtLjYgMC0xLjEtLjEtMS42LS4yLTIuMi0uNC00LjItMS43LTUuNi0zLjVMNDQuMyA3My45Yy0yLTIuNi0yLjUtNS40LTEuNC03LjcuMS0uMS4xLS4yLjItLjIgMS4yLTIgMy41LTMuMiA2LjQtMy4yaDYuNnYtNS43YzAtNi44IDQuNy0xMiAxMC45LTEyIDQuOCAwIDguNSAyLjYgMTAuMyA3LjIuNSAxLjMtLjIgMi43LTEuNSAzLjJzLTIuOC0uMS0zLjMtMS40Yy0xLjEtMi43LTIuOS00LTUuNS00LTMuNSAwLTYgMy02IDd2OC4xYzAgLjUtLjIgMS0uNiAxLjQtLjYuNy0xLjcgMS4xLTIuNiAxLjFoLTguNGMtMS4zIDAtMiAuNC0yLjEuNy0uMi40IDAgMS4zLjkgMi40TDYzLjEgOTBjLjkgMS4yIDIuMSAxLjggMy4zIDEuOHMyLjMtLjYgMy4xLTEuN2wxNC44LTE5LjNjLjktMS4xIDEuMS0yIC45LTIuNC0uMi0uMy0uOS0uNy0yLjEtLjdoLTcuNmMtLjkgMC0xLjctLjUtMi4xLTEuMi0uMy0uNC0uNC0uOC0uNC0xLjMgMC0xLjQgMS4xLTIuNSAyLjUtMi41aDcuNmMzLjEgMCA1LjUgMS4zIDYuNiAzLjVsLjMuN2MuNyAyLjEuMSA0LjYtMS43IDYuOXoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=
// @description (。>ᴗ•)✧《也许同类型中最好用?》系列 - 一个基于 JavaScript 的网盘文件下载地址获取工具✨,基于【网盘直链下载助手】修改 | 支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 / 光鸭云盘 / 夸克网盘 / UC网盘 / 123云盘 九大网盘 | 开源・自用・去广 | 改界面・添功能・修Bug | 既超越原版,亦是同类中最好用版本!👋
// @description:zh-CN (。>ᴗ•)✧《也许同类型中最好用?》系列 - 一个基于 JavaScript 的网盘文件下载地址获取工具✨,基于【网盘直链下载助手】修改 | 支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 / 光鸭云盘 / 夸克网盘 / UC网盘 / 123云盘 九大网盘 | 开源・自用・去广 | 改界面・添功能・修Bug | 既超越原版,亦是同类中最好用版本!👋
// @description:zh-TW (。>ᴗ•)✧《也許同類型中最好用?》系列 - 一個基於 JavaScript 的網盤檔案下載地址獲取工具✨,基於【網盤直鏈下載助手】改編 | 支援 百度網盤 / 阿里雲盤 / 中國移動雲盤 / 天翼雲盤 / 迅雷雲盤 / 光鴨雲盤 / 夸克網盤 / UC網盤 / 123雲盤 九大平台 | 開源・自用・除廣 | 改介面・擴功能・修Bug | 既超越原版,亦是同類中最好用版本!👋
// @description:zh-HK (。>ᴗ•)✧《也許同類型中最好用?》系列 - 一個基於 JavaScript 的網盤檔案下載地址獲取工具✨,基於【網盤直鏈下載助手】改編 | 支援 百度網盤 / 阿里雲盤 / 中國移動雲盤 / 天翼雲盤 / 迅雷雲盤 / 光鴨雲盤 / 夸克網盤 / UC網盤 / 123雲盤 九大平台 | 開源・自用・除廣 | 改介面・擴功能・修Bug | 既超越原版,亦是同類中最好用版本!👋
// @copyright © 2022 hmjz100
// @license AGPL-3.0-or-later
// @source https://github.com/hmjz100/LinkSwift/
// @website https://github.com/hmjz100/LinkSwift/
// @homepageURL https://github.com/hmjz100/LinkSwift/
// @homepage https://github.com/hmjz100/LinkSwift/
// @supportURL https://github.com/hmjz100/LinkSwift/issues
// @require https://unpkg.com/jquery@3.6.0/dist/jquery.min.js
// @require https://unpkg.com/sweetalert2@11.4.8/dist/sweetalert2.min.js
// @resource SwalLigt https://unpkg.com/sweetalert2@11.4.8/dist/sweetalert2.min.css
// @resource SwalDark https://unpkg.com/@sweetalert2/theme-dark@5.0.26/dark.min.css
// @require https://unpkg.com/js-md5@0.7.3/build/md5.min.js
// @run-at document-start
// @match *://pan.baidu.com/disk/home*
// @match *://yun.baidu.com/disk/home*
// @match *://pan.baidu.com/disk/timeline*
// @match *://yun.baidu.com/disk/timeline*
// @match *://pan.baidu.com/disk/main*
// @match *://yun.baidu.com/disk/main*
// @match *://pan.baidu.com/youth/pan/main*
// @match *://yun.baidu.com/youth/pan/main*
// @match *://pan.baidu.com/disk/base*
// @match *://yun.baidu.com/disk/base*
// @match *://pan.baidu.com/disk/timeline*
// @match *://yun.baidu.com/disk/timeline*
// @match *://pan.baidu.com/pfile/*
// @match *://yun.baidu.com/pfile/*
// @match *://pan.baidu.com/s/*
// @match *://pan.baidu.com/aipan/*
// @match *://yun.baidu.com/s/*
// @match *://yun.baidu.com/aipan/*
// @match *://pan.baidu.com/share/*
// @match *://yun.baidu.com/share/*
// @match *://pan.baidu.com/embed/*
// @match *://yun.baidu.com/embed/*
// @match *://openapi.baidu.com/*
// @match *://www.aliyundrive.com/s/*
// @match *://www.aliyundrive.com/drive*
// @match *://www.alipan.com/s/*
// @match *://www.alipan.com/drive*
// @match *://yun.139.com/*
// @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/*
// @match *://*.123pan.cn/*
// @match *://*.123684.com/*
// @match *://*.123865.com/*
// @match *://*.123952.com/*
// @match *://*.123912.com/*
// @connect *
// @connect localhost
// @connect baidu.com
// @connect baidupcs.com
// @connect aliyundrive.com
// @connect aliyundrive.net
// @connect alipan.com
// @connect alicloudccp.com
// @connect aliyundrive.cloud
// @connect 139.com
// @connect cmecloud.cn
// @connect 189.cn
// @connect xunlei.com
// @connect guangyapan.com
// @connect guangyacdn.com
// @connect quark.cn
// @connect uc.cn
// @connect 123pan.com
// @connect 123pan.cn
// @connect 123684.com
// @connect 123865.com
// @connect 123952.com
// @connect 123912.com
// @connect cjjd19.com
// @match *://*.lanzou.com/*
// @match *://*.lanzoux.com/*
// @match *://*.woozooo.com/*
// @match *://*.weiyun.com/*
// @match *://*.jianguoyun.com/*
// @match *://*.cowtransfer.com/*
// @match *://*.wenshushu.cn/*
// @match *://*.1drv.ms/*
// @match *://*.drive.google.com/file/*
// @connect lanzou.com
// @connect lanzoux.com
// @connect woozooo.com
// @connect weiyun.com
// @connect jianguoyun.com
// @connect cowtransfer.com
// @connect wenshushu.cn
// @connect onedrive.live.com
// @connect 1drv.ms
// @connect googleapis.com
// @connect googleusercontent.com
// @connect drive.google.com
// @grant unsafeWindow
// @grant window.close
// @grant GM_xmlhttpRequest
// @grant GM_setClipboard
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant GM_openInTab
// @grant GM_registerMenuCommand
// @grant GM_getResourceText
// @compatible Chrome
// @compatible Edge
// @compatible Firefox
// @compatible Safari
// @compatible Opera
// @early-start
// ==/UserScript==
/**
* @name LinkSwift
* @template (改)网盘直链下载助手
* @author 油小猴
* @author hmjz100
* @namespace github.com/hmjz100
* @description 一个基于 JavaScript 盘的文件下载地址获取工具 支持 百度网盘/阿里云盘/中国移动云盘/天翼云盘/迅雷云盘/夸克网盘/UC网盘/123云盘 九大网盘 代码改自 “网盘直链下载助手”,作者油小猴
* @version 1.1.5
* @license AGPL-3.0-or-later
* @see {@link https://github.com/hmjz100/LinkSwift/ Github 仓库}
*/
(function linkSwift($) {
// 严格模式,确保代码安全执行,不越界
"use strict";
// unsafeWindow 检测,适用于 Via 这类无 unsafeWindow 的浏览器
if (typeof (unsafeWindow) === "undefined") window.unsafeWindow = window;
// 重复执行检测,适用于部分浏览器;出自 “Via 轻插件”,作者谷花泰
const key = encodeURIComponent("LinkSwift:主代码"); if (window[key]) return; window[key] = true;
// 全局参数
const mount = idontknow("LinkSwift");
const info = {
author: GM_info.script?.author,
name: GM_info.script?.name,
version: (GM_info.script?.version || "1.1.5"),
icon: (GM_info.script?.icon || "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImdvbGRHcmFkaWVudCIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPjxzdG9wIG9mZnNldD0iMCUiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkY1OUQ7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRDcwMDtzdG9wLW9wYWNpdHk6MSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3R5bGU9InN0b3AtY29sb3I6I0ZCQzAyRDtzdG9wLW9wYWNpdHk6MSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNCwgLTIpIHNjYWxlKDAuOSkiPjxwYXRoIGQ9Ik0xMDMuNiAxMDcuNGMzLjUtMi4yIDguOS02LjEgMTMuOC0xMi41czcuMy0xMi41IDguNS0xNi41Yy41LTEuNyAyLjItNy41IDIuMi0xNC43IDAtMTAuMS0zLjMtMjUuMS0xNS40LTM2LjgtMTQuNS0xNC0zMi4xLTE0LjMtMzUuNy0xNC4zLTggMC0xNS43IDEuOS0yMi42IDUuMkM0NCAyMyAzNS43IDMxLjQgMzAuOCA0MS43Yy0xLjMgMi44LTQgNC43LTcuMSA1LTQgLjMtNy41IDQuNC04LjkgOS42LS41IDEuOS0xLjYgMy41LTMuMSA0LjdDNC40IDY2LjggMCA3NS43IDAgODVjMCA2LjggMi4zIDEzLjEgNi4xIDE4LjIgNS41IDcuNCAxNC4yIDEyLjIgMjQgMTIuMmg0Ny4xYzQuNCAwIDExLS41IDE4LjMtMy41IDMuMi0xLjQgNS45LTMgOC4xLTQuNXoiIGZpbGw9IiNBMDk5RjAiLz48cGF0aCBkPSJNMTE5LjggNjQuM2MuMS0xNy4xLTEwLjQtMjgtMTIuNS0zMC4xQzk1IDIyLjEgNzkuOSAyMS44IDc2LjkgMjEuOGMtMTcuNiAwLTMzLjMgMTAuNS0zOS45IDI2LjctLjYgMS4zLTEuOCAyLjMtMy40IDIuM2gtLjRjLTUuOCAwLTEwLjYgNC44LTEwLjYgMTAuN3YuNWMwIDEuNC0uOCAyLjYtMS45IDMuM0MxMy40IDY5IDguOCA3Ni44IDguOCA4NWMwIDEyLjIgOS45IDIyLjMgMjIuMiAyMi4zaDQ1LjJjMy42LS4xIDE3LjYtLjkgMjkuNi0xMiAyLjktMi44IDEzLjktMTMuNyAxNC0zMXoiIGZpbGw9IiM1NzRBQjgiLz48cGF0aCBkPSJNMTEwLjggNTcuNGwuMiAzLjNjMCAxLjMtMS4xIDIuNC0yLjMgMi40LTEuMyAwLTIuMy0xLjEtMi4zLTIuNGwtLjEtMi44di0uM2MwLTEuMi45LTIuMiAyLjEtMi4zaC4zYy43IDAgMS4zLjMgMS43LjctLjIuMS4zLjUuNCAxLjR6bS0zLjMtMTAuM2MwIDEuMi0xIDIuMy0yLjIgMi4zaC0uMWMtLjggMC0xLjYtLjUtMi0xLjItNC42LTguMy0xMy4zLTEzLjUtMjIuOC0xMy41LTEuMiAwLTIuMy0xLTIuMy0yLjJ2LS4xYzAtMS4yIDEtMi4zIDIuMi0yLjNoLjFhMzAuMzcgMzAuMzcgMCAwIDEgMTUuOCA0LjRjNC42IDIuOCA4LjQgNi44IDExLjEgMTEuNS4xLjMuMi43LjIgMS4xek04OC4zIDczLjhMNzMuNSA5My4yYy0xLjUgMS45LTMuNSAzLjEtNS43IDMuNWgtLjJjLS40LjEtLjguMS0xLjIuMS0uNiAwLTEuMS0uMS0xLjYtLjItMi4yLS40LTQuMi0xLjctNS42LTMuNUw0NC4zIDczLjljLTItMi42LTIuNS01LjQtMS40LTcuNy4xLS4xLjEtLjIuMi0uMiAxLjItMiAzLjUtMy4yIDYuNC0zLjJoNi42di01LjdjMC02LjggNC43LTEyIDEwLjktMTIgNC44IDAgOC41IDIuNiAxMC4zIDcuMi41IDEuMy0uMiAyLjctMS41IDMuMnMtMi44LS4xLTMuMy0xLjRjLTEuMS0yLjctMi45LTQtNS41LTQtMy41IDAtNiAzLTYgN3Y4LjFjMCAuNS0uMiAxLS42IDEuNC0uNi43LTEuNyAxLjEtMi42IDEuMWgtOC40Yy0xLjMgMC0yIC40LTIuMS43LS4yLjQgMCAxLjMuOSAyLjRMNjMuMSA5MGMuOSAxLjIgMi4xIDEuOCAzLjMgMS44czIuMy0uNiAzLjEtMS43bDE0LjgtMTkuM2MuOS0xLjEgMS4xLTIgLjktMi40LS4yLS4zLS45LS43LTIuMS0uN2gtNy42Yy0uOSAwLTEuNy0uNS0yLjEtMS4yLS4zLS40LS40LS44LS40LTEuMyAwLTEuNCAxLjEtMi41IDIuNS0yLjVoNy42YzMuMSAwIDUuNSAxLjMgNi42IDMuNWwuMy43Yy43IDIuMS4xIDQuNi0xLjcgNi45eiIgZmlsbD0iI2ZmZiIvPjwvZz48Zz48cGF0aCBkPSJNMCAxMDAgUTY0IDExNSAxMjggMTAwIEwxMjggMTI4IEwwIDEyOCBaIiBmaWxsPSIjRDMyRjJGIi8+PHBhdGggZD0iTTAgMTAwIFE2NCAxMTUgMTI4IDEwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ1cmwoI2dvbGRHcmFkaWVudCkiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjY0IiB5PSIxMjEiIGZvbnQtZmFtaWx5PSJzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWYiIGZvbnQtd2VpZ2h0PSI5MDAiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9InVybCgjZ29sZEdyYWRpZW50KSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9InRleHQtc2hhZG93OiAwcHggMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7Ij7liIYg5LiNIOi1t+OAgOe6ryDpnaAg54ixPC90ZXh0PjwvZz48L3N2Zz4="),
mhandler: GM_info.scriptHandler,
mversion: GM_info.version,
};
const $doc = $(document);
const temp = {
mount: $(`.${mount}`),
main: {},
page: "",
mode: [],
files: [],
glinks: [],
color: "",
request: {},
downing: {},
colored: false,
swalDefault: {
position: "center",
heightAuto: false,
scrollbarPadding: false,
confirmButtonText: ` 确认`,
denyButtonText: ` 拒绝`,
cancelButtonText: ` 取消`
},
terminalType: {
wc: "Microsoft Windows 命令提示符",
wp: "Microsoft Windows PowerShell",
lt: "Linux 终端",
ls: "Linux Shell",
mt: "Apple MacOS 终端"
}
};
/**
* SweetAlert2 的 Toast 指示框基础配置
* @author 油小猴
* @author hmjz100
* @description 创建一个全局通用的 Toast 指示框实例,支持自动关闭、鼠标悬停暂停、右上角弹出等特性。
*
* @type{Sweetalert2.Toast}
*/
const toast = Swal.mixin({
toast: true,
position: "top-end",
showConfirmButton: false,
timer: 5000,
timerProgressBar: true,
showCloseButton: true,
didOpen(toast) {
toast.addEventListener("mouseenter", () => {
Swal.stopTimer();
});
toast.addEventListener("mouseleave", () => {
Swal.resumeTimer();
});
}
});
/**
* 消息提示工具类
* @author 油小猴
* @description 提供统一的提示信息展示方法,基于 SweetAlert2 的 Toast 实现;
* 包含 success / error / warning / info / question 等类型。
*/
const message = {
success(text) {
toast.fire({ title: text, icon: "success" });
},
error(text) {
toast.fire({ title: text, icon: "error" });
},
warning(text) {
toast.fire({ title: text, icon: "warning" });
},
info(text) {
toast.fire({ title: text, icon: "info" });
},
question(text) {
toast.fire({ title: text, icon: "question" });
}
};
/**
* 基础配置集合
* @author 油小猴
* @author hmjz100
*/
const config = {
base: {
num: "865746",
license: "AGPL3",
service: {
account: "https://pic.rmb.bdstatic.com/bjh/8b9e14345b3cdf96aedac2f3971adcb02681.png"
},
dom: {
footer: `o(≧▽≦)o 十分感谢您的支持!来给此项目一个 Star 吧~`,
method: {
api: {
title: "API 下载",
footer: `
适用于 IDM,NDM 以及浏览器自带下载
`,
enhance: "通过脚本管理器的跨域请求功能下载文件多个分片,在内存聚合为 blob 地址后,下载文件。
此方法能够向服务器提供正确的请求头,可自动满足部分网盘的请求头要求,而无需手动设置;
支持多线程、智能多分片,可在当前页面显示预估剩余时间、下载进度、速度;
浏览器对此方法的下载线程与文件大小(2GB 内,可能更小)以及系统内存有限制!
下载超过限制的大文件时,进度可能不到 100% 就会导致浏览器卡顿!
因此,非必要情况(例如系统环境无法安装程序)下,不建议使用此功能!",
normal: "通过浏览器直接访问下载地址来下载文件。
此方法无法向服务器提供正确的请求头!所以在服务器对请求头有限制的情况下可能会失败!
点击后需等待浏览器弹出提示才可点击下个下载,否则只会下载后者。适用于支持 iframe 的浏览器",
idm: "通过从 IDM 扩展的捕获方法,将下载地址“捕获”给 IDM 使其弹框;
此方法能够向服务器提供正确的请求头,可自动满足部分网盘的请求头要求,而无需手动设置;
理论上仅适用于版本较新的 IDM,使用前请确保您已经配置好 IDM 服务参数。"
},
aria2: {
title: "Aria2 下载",
footer: `RPC 适用于 Motrix,Aria2 Tools,AriaNgGUI
命令行适用于 XDown 及 Linux Shell 命令行
`,
manager: {
youxiaohou: "访问原作者的 Aria2 管理页面以查看下载任务,功能较少",
ariang: "访问 AriaNg 的官方 Demo 以查看下载任务,功能较多"
}
},
curl: {
title: "cURL 下载",
footer: `适用于 Windows,Linux,MacOS 终端
`
},
bitcomet: {
title: "比特彗星下载",
footer: `适用于 比特彗星
`,
normal: "点击打开 BC 地址以手动调起比特彗星下载,右键可复制 BC 地址",
sendto: "除非 BC 地址无法调起比特彗星,否则不建议使用此方式
由于比特彗星内置的远程下载 Web API 服务代码存在缺陷,请求可能会随机出现“发送失败 - 服务器返回空请求”错误,实际上客户端已成功开始下载
由于脚本无法准确判断请求是否真正成功,即使出现错误,也会提示“成功”"
},
abdm: {
title: "ABDM 下载",
footer: `适用于 AB Download Manager
`
}
},
copy: {
name: "点击复制文件名",
link: "点击复制下载地址",
curl: "点击复制 cURL 命令行",
aria2: "Aria2 没启用 RPC?点击复制 Aria2 命令行",
bitcomet: "点击打开 BC 地址以手动调起比特彗星下载,右键可复制 BC 地址",
mirrors: "点击复制镜像地址",
all: {
link: "点击复制全部下载地址",
curl: "点击复制全部 cURL 命令行",
aria2: "Aria2 没启用 RPC?点击复制全部 Aria2 命令行",
bitcomet: "点击复制全部 BC 地址,可粘贴到比特彗星中下载"
}
},
themes: [
{ color: "#09AAFF", name: "度盘|经典蓝" },
{ color: "#2594ed", name: "哔哩|宝石蓝" },
{ color: "#3181f9", name: "移动|彩云蓝" },
{ color: "#0d53ff", name: "夸克|极简蓝" },
{ color: "#637dff", name: "度里叁|霞光紫" },
{ color: "#18a497", name: "OpenAI|经典青" },
{ color: "#32ccbc", name: "果核|碧波绿" },
{ color: "#8bc24a", name: "哔哩|早苗绿" },
{ color: "#518c17", name: "度盘|盎然绿" },
{ color: "#2271b1", name: "文派|默认蓝" },
{ color: "#ff679a", name: "哔哩|少女粉" },
{ color: "#f969a5", name: "度盘|幸会粉" },
{ color: "#574AB8", name: "度盘|星空紫" },
{ color: "#9c28b1", name: "哔哩|罗兰紫" },
{ color: "#b673ab", name: "度盘|物语紫" },
{ color: "#f44236", name: "哔哩|高能红" },
{ color: "#cc3235", name: "度盘|平安红" },
{ color: "#ff6800", name: "光鸭|默认橙" },
{ color: "#ed944b", name: "度盘|周年橙" },
{ color: "#fec107", name: "哔哩|咸蛋黄" },
{ color: "#f8d800", name: "果核|柠檬黄" },
{ color: "#0396ff", name: "果核|默认蓝" },
{ color: "#f6416c", name: "果核|玫瑰红" },
{ color: "#bca280", name: "度盘|午后棕" },
{ color: "#59524c", name: "文派|咖啡灰" }
]
},
icon: {
idm: "data:image/png;base64,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"
}
},
$baidu: {
api: {
ua: {
downloadLink: "pan.baidu.com"
},
getAccessToken: "https://openapi.baidu.com/oauth/2.0/authorize?response_type=token&scope=basic,netdisk&client_id=omiOnr2tYnN9vSyDErcVFWpPU2mZA7YO&redirect_uri=oob&confirm_login=0",
getLink: "https://pan.baidu.com/rest/2.0/xpan/multimedia?method=filemetas&dlink=1",
getFiles: "https://pan.baidu.com/rest/2.0/xpan/file?method=list&showempty=1",
getShareLink: "https://pan.baidu.com/api/sharedownload?channel=chunlei&clienttype=0&web=1&app_id=250528",
getShareSign: "https://pan.baidu.com/share/tplconfig?fields=sign,timestamp&channel=chunlei&web=1&app_id=250528&clienttype=0&view_mode=1"
// getShareFiles: "https://pan.baidu.com/rest/2.0/xpan/share?method=list&showempty=1"
},
mount: {
home: ".frame-main>div>div>div>div:has(.g-dropdown-button.g-new-create)",
main: ".wp-s-agile-tool-bar__header",
share: ".module-share-top-bar .x-button-box .g-dropdown-button.tools-more"
},
dom: {
enhance: `+
此方式可以自动设置用户代理(UA),然后下载。
此方式的下载请求可能会被旧版 IDM 捕获。`,
normal: `+
此方式无法下载超过 50MB 的文件,若超过点击会无反应(服务器 403)。
此方式的下载请求可能会被 IDM 捕获。`,
copy: `注:此服务直接访问超过 50MB 文件的直链会导致服务器回报 403 错误
如需访问,请修改用户代理(UA)为 "pan.baidu.com"`
}
},
$aliyun: {
api: {
getLink: `https://${location.host.replace("www", "api")}/v2/file/get_download_url`,
getShareLink: `https://${location.host.replace("www", "api")}/v2/file/get_share_link_download_url`
},
mount: {
home: `[class^="header--"]>[class^="actions--"]`,
share: `[class^="banner--"]>[class^="right--"]`,
list: `[class^="node-list-table-view--"]`,
grid: `[class^="node-list-grid-view--"]`,
switch: `[class^="switch-wrapper--"]`
},
dom: {
enhance: `+
此方式可以自动设置 Referer,然后下载。
此方式的下载请求不会被 IDM 捕获。`,
normal: `+
此方式的下载请求可能会被 IDM 捕获。`,
copy: `注:此服务直接访问直链会导致服务器回报 403 错误
如需访问,请修改 Referer 为 "https://${location.host}/"`,
filename: `注:此服务在下载高峰期时可能不会向客户端回报文件名,下载时需要复制文件名。`
}
},
$mcloud: {
api: {
getLink: "https://personal-kd-njs.yun.139.com/hcy/file/getDownloadUrl"
},
mount: {
home: ".top_button",
share: ".top-btns"
},
dom: {
enhance: `+
此方式的下载请求不会被 IDM 捕获。`,
normal: `+
此方式的下载请求可能会被 IDM 捕获。`
}
},
$tcloud: {
api: {
getAccessToken: "https://api.cloud.189.cn/open/oauth2/ssoH5.action",
getLink: "https://api.cloud.189.cn/open/file/getFileDownloadUrl.action"
},
mount: {
home: "[class*=\"FileHead_file-head-left\"]",
share: ".nav-opea"
},
dom: {
enhance: `+
此方式的下载请求不会被 IDM 捕获。`,
normal: `+
此方式的下载请求可能会被 IDM 捕获。`
}
},
$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/",
getCaptchaToken: "https://xluser-ssl.xunlei.com/v1/shield/captcha/init",
},
mount: {
home: `[class*="FileMenu__menus--"], [class*="FileMenu__menu--"]`,
share: `[class^="Share__batchActionBox--"]`
},
dom: {
enhance: `+
此方式可以自动设置文件名,然后下载。
此方式的下载请求不会被 IDM 捕获。`,
normal: `+
此服务不会向客户端回报文件名,选用此方式下载需手动重命名文件。
此方式的下载请求不会被 IDM 捕获。`,
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: {
main: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 QuarkPC/6.9.7.761 QuarkCloudDrivePC/6.9.7.761 quark-cloud-drive/2.5.40"
},
getLink: "https://drive-pc.quark.cn/1/clouddrive/file/download?pr=ucpro&fr=pc&sys=win32&ve=6.9.7.761",
getSocialToken: "https://drive-social-api.quark.cn/1/clouddrive/chat/conv/file/acquire_dl_token?pr=ucpro&fr=pc&sys=win32&ve=6.9.7.761&fr=win&la=zh-CN&ch=pckk%40product_guanwan"
},
mount: {
home: ".btn-operate .btn-main",
share: ".share-btns"
},
dom: {
enhance: `+
此方式可以自动设置用户代理(UA),然后下载。
此方式的下载请求不会被 IDM 捕获。`,
normal: `+
此方式的下载请求可能会被 IDM 捕获。`
}
},
$uc: {
api: {
ua: {
main: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) uc-cloud-drive/1.8.8 Chrome/100.0.4896.160 Electron/18.3.5.16-b62cf9c50d Safari/537.36 Channel/ucpan_other_ch",
secCh: `"Not=A?Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"`
},
getLink: "https://pc-api.uc.cn/1/clouddrive/file/download?pr=UCBrowser&fr=pc&sys=win32&ve=1.8.8"
},
mount: {
home: ".btn-operate .btn-main",
share: ".file-info-share-buttom"
},
dom: {
enhance: `+
此方式可以自动设置用户代理(UA),然后下载。
此方式的下载请求不会被 IDM 捕获。`,
normal: `+
此方式的下载请求可能会被 IDM 捕获。`
}
},
$123pan: {
api: {
ua: {
main: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 123pan/3.2.3 Chrome/108.0.5359.215 Electron/22.3.27 Safari/537.36 WebView/1.0",
os: "123pan/v323(Windows10.0.26200)",
version: "323",
secCh: `"Not?A_Brand";v="8", "Chromium";v="108"`
},
getLink: "https://api.123pan.cn/api/v2/file/download_info",
getShareLink: "https://api.123pan.cn/api/v2/share/download/info",
},
mount: {
home: ".home-operator .home-operator-button-group",
share: ".content .content-header-container-wrap .rightInfo, .single-file-sharing-container-content-file-operate"
},
dom: {
enhance: `+
此方式的下载请求不会被 IDM 捕获。`,
normal: `+
此方式的下载请求可能会被 IDM 捕获。`
}
}
}
/**
* 基础工具集合
* @author 油小猴
* @author hmjz100
*/
const base = {
/**
* 注册 GreaseMonkey-Compatible-Manager 扩展菜单命令
* @author 油小猴
* @author hmjz100
* @description 包含 "设置"、"美化"、"更新" 和 "调试" 四个功能入口
*/
registerMenuCommand() {
GM_registerMenuCommand("⚙️ 设置", () => {
base.showSetting();
});
GM_registerMenuCommand("🍃️ 美化", () => {
base.showBeautify();
});
GM_registerMenuCommand("📃 更新", () => {
base.showUpdate();
});
GM_registerMenuCommand("🛠️ 调试", () => {
base.showDebug();
});
},
/**
* 判断 JavaScript 对象类型
* @author 油小猴
* @description 通过 Object.prototype.toString 精确识别对象类型
* @param {*} obj - 待检测对象
* @returns {String} 类型名称(全小写),如:array/number/null/date 等
* @example
* isType([]) // => "array"
* isType(null) // => "null"
*/
isType(obj) {
return Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, "$1").toLowerCase();
},
/**
* 获取 GreaseMonkey-Compatible-Manager 存储的值
* @author 油小猴
* @param {String} name - 存储键名
* @returns {*} 存储的值
*/
getValue(name) {
return GM_getValue(name);
},
/**
* 设置 GreaseMonkey-Compatible-Manager 存储的值
* @author 油小猴
* @param {String|Array} path - 存储键名或路径数组
* @param {*} value - 要存储的值
*/
setValue(path, value) {
if (base.isType(path) === "string") {
GM_setValue(path, value);
return;
}
const key = path[0];
const obj = this.getValue(key) || {};
let current = obj;
for (let i = 1; i < path.length - 1; i++) {
const keyPart = path[i];
if (!current[keyPart]) current[keyPart];
current = current[keyPart];
}
current[path[path.length - 1]] = value;
GM_setValue(key, obj);
},
/**
* 删除 GreaseMonkey-Compatible-Manager 存储的值
* @author 油小猴
* @param {String|Array} key - 单个键名
*/
delValue(key) {
return GM_deleteValue(key);
},
/**
* 从 localStorage 获取存储值
* @description 自动解析 JSON 格式内容
* @author 油小猴
* @param {String} key - 存储键名
* @returns {*} 存储的原始值或解析后的对象
*/
getStorage(key) {
try {
return JSON.parse(localStorage.getItem(key));
} catch {
return localStorage.getItem(key);
}
},
/**
* 设置 localStorage 存储值
* @author 油小猴
* @description 自动 `JSON.stringify` `对象` `数组` 类型的数据
* @param {String} key - 存储键名
* @param {*} value - 要存储的值
*/
setStorage(key, value) {
if (this.isType(value) === "object" || this.isType(value) === "array") {
return localStorage.setItem(key, JSON.stringify(value));
}
return localStorage.setItem(key, value);
},
/**
* 删除 localStorage 存储值
* @author 油小猴
* @description 没什么特别的
* @param {String} key - 存储键名
*/
delStorage(key) {
return localStorage.removeItem(key);
},
/**
* 剪贴板写入
* @author 油小猴
* @param {String} text - 要复制的文本内容
*/
async setClipboard(text) {
if (typeof text !== 'string') text = String(text);
// 尝试 GreaseMonkey-Compatible-Manager API,这种方式权限最高,通常能绕过浏览器对“必须由用户手势触发”的限制
if (typeof GM_setClipboard === 'function') {
try {
GM_setClipboard(text, "text");
return true;
} catch (e) {
base.console.error('无法复制内容到剪贴板:', e);
}
}
// 尝试异步的 GreaseMonkey-Compatible-Manager API
if (typeof GM !== 'undefined' && GM.setClipboard) {
try {
await GM.setClipboard(text, "text");
return true;
} catch (e) {
base.console.error('无法复制内容到剪贴板:', e);
}
}
// 尝试现代原生 Clipboard API
// 注意:此 API 通常要求在安全上下文 (HTTPS) 下运行
if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
try {
await navigator.clipboard.writeText(text);
return true;
} catch (e) {
base.console.error('无法复制内容到剪贴板:', e);
}
}
// 传统 execCommand('copy')
// 虽然被标记为废弃,但在旧浏览器或非 HTTPS 环境下依然是最稳妥的垫片
try {
const textArea = document.createElement("textarea");
textArea.value = text;
// 防止页面跳动
textArea.style.position = "fixed";
textArea.style.left = "-9999px";
textArea.style.top = "0";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
const successful = document.execCommand('copy');
document.body.removeChild(textArea);
if (successful) return true;
} catch (e) {
base.console.error('无法复制内容到剪贴板:', e);
}
return false;
},
/**
* Base64-URI 编码处理
* @author 油小猴
* @author hmjz100
* @description 自动执行 URI 兼容性编码转换
* @param {String} str - 待编码的字符串
* @returns {String} Base64 编码结果字符串
*/
encodeBase(str) {
try { str = encodeURIComponent(str) } catch { }
try { str = unescape(str) } catch { }
try { str = btoa(str) } catch { }
return str;
},
/**
* Base64-URI 解码处理
* @author 油小猴
* @author hmjz100
* @description 自动执行 URI 兼容性解码转换
* @param {String} str - Base64 编码字符串
* @returns {String} 解码后的原始字符串
*/
decodeBase(str) {
try { str = decodeURIComponent(str) } catch { }
try { str = atob(str) } catch { }
try { str = escape(str) } catch { }
try { str = decodeURIComponent(str) } catch { }
return str;
},
/**
* 数字补零格式化
* @author hmjz100
* @description 对 1-9 的数字自动补前导零
* @param {Number} i - 待格式化的数字
* @returns {String} 格式化后的字符串(如"05")
*/
timeFormat(i) {
if (i >= 0 && i <= 9) {
return "0" + i;
} else {
return i;
}
},
/**
* 获取文件扩展名并转为大写
* @author 油小猴
* @param {String} name - 完整文件名
* @returns {String} 大写的文件扩展名(如 `TXT`)
*/
getExtension(name) {
const reg = /(?!\.)\w+$/;
if (reg.test(name)) {
const match = name.match(reg);
return match[0].toUpperCase();
}
return "";
},
/**
* 文件大小格式化
* @author hmjz100
* @description 自动转换单位到最合适的存储单位(如 `1.2MB`),支持 1000/1024 进制切换
* @param {Number} value - 文件字节大小
* @returns {String} 可读格式的大小描述
*/
sizeFormat(value = 0) {
const sizeUnitBase = 1024
try { value = Number(value) } catch { }
if (typeof value === "number" && !isNaN(value) && value >= 0) {
const units = sizeUnitBase === 1024
? ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]
: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
const unitNames = ["字节", "千字节", "兆字节", "吉字节", "太字节", "拍字节", "艾字节", "泽字节", "尧字节"];
if (value === 0) return "0B(字节)";
// 计算单位层级(取整数部分)
const index = Math.min(
Math.floor(Math.log(value) / Math.log(sizeUnitBase)),
units.length - 1
);
const size = value / Math.pow(sizeUnitBase, index);
const formattedSize = size % 1 === 0 ? size.toFixed(0) : size.toFixed(2);
return `${formattedSize}${unitNames[index]}(${units[index]})`;
}
return "";
},
/**
* 将剩余时间(秒)格式化为可读的时间字符串
*
* @param {Number} remainingTimeSeconds 剩余总秒数(支持小数)
* @returns {String} 格式化后的时间字符串,包含以下可能格式:
* - "X天 HH时:MM分:SS秒"(超过1天)
* - "HH时:MM分:SS秒"(超过1小时)
* - "MM分:SS秒"(超过1分钟)
* - "SS秒"(1分钟内)
* - "计算中..."(无效输入时)
*
* @example
* formatRemainingTime(86400) // "1天 00时:00分:00秒"
* formatRemainingTime(3661.5) // "01时:01分:01秒"
* formatRemainingTime(0) // "即将完成"
* formatRemainingTime(-5) // "计算中..."
* formatRemainingTime(NaN) // "计算中..."
*/
rtimeFormat(remainingTimeSeconds) {
if (!Number.isFinite(remainingTimeSeconds) || remainingTimeSeconds < 0) {
return "计算中...";
}
const remainingDays = Math.floor(remainingTimeSeconds / (60 * 60 * 24));
remainingTimeSeconds %= (60 * 60 * 24);
const remainingHours = Math.floor(remainingTimeSeconds / (60 * 60));
remainingTimeSeconds %= (60 * 60);
const remainingMinutes = Math.floor(remainingTimeSeconds / 60);
const remainingSeconds = Math.floor(remainingTimeSeconds % 60);
if (remainingDays > 0) {
return `${remainingDays}天 ${base.timeFormat(remainingHours)}时:${base.timeFormat(remainingMinutes)}分:${base.timeFormat(remainingSeconds)}秒`;
} else if (remainingHours > 0) {
return `${base.timeFormat(remainingHours)}时:${base.timeFormat(remainingMinutes)}分:${base.timeFormat(remainingSeconds)}秒`;
} else if (remainingMinutes > 0) {
return `${base.timeFormat(remainingMinutes)}分:${base.timeFormat(remainingSeconds)}秒`;
} else if (remainingSeconds > 0) {
return `${remainingSeconds}秒`;
} else {
return "0秒";
}
},
/**
* 文件列表排序
* @author 油小猴
* @author hmjz100
* @description 按中文拼音顺序对文件数组进行排序
* @param {Array} arr - 包含文件对象的数组
* @param {String} arr[].filename - 文件名属性(兼容 server_filename)
*/
sortByName(arr) {
arr.sort(() => {
return (a, b) => {
const p1 = a.filename ? a.filename : a.server_filename;
const p2 = b.filename ? b.filename : b.server_filename;
return p1.localeCompare(p2, "zh-CN");
};
});
},
/**
* 文件名安全处理
* @author 油小猴
* @description 替换非法字符为下划线
* @param {String} name - 原始文件名
* @returns {String} 修正后的安全文件名
*/
fixFilename(name) {
const replace = /[!?&|`"'*\/:<>\\]/g
return name.replace(replace, "_");
},
/**
* Cookie 标准化
* @author hmjz100
* @description 将 Cookie 或 Set-Cookie 解析为统一的键值对对象
* @param {String|Array} input - Cookie 字符串或数组
* @param {String} type - 头部键名(如 'cookie' 或 'set-cookie')
* @returns {Object} 解析后的键值对对象
*/
standCookies(input, type = 'cookie') {
if (!input) return {};
const cookies = {};
const lines = Array.isArray(input) ? input : [input];
const isSetCookie = type.includes('set-cookie');
// 拆分可能被逗号合并的多个 Cookie 块
const blocks = lines.flatMap(line => line.split(','));
blocks.forEach(block => {
const parts = block.split(';');
if (isSetCookie) {
// Set-Cookie,第一项永远是真实的 Cookie 名值对
const mainPair = parts[0].trim();
if (!mainPair.includes('=')) return;
const [key, ...valueParts] = mainPair.split('=');
const trimmedKey = key.trim();
// 兜底,排除极少数非标准后端把控制属性写在开头的情况
if (/^(path|domain|expires|max-age|samesite|secure|httponly)$/i.test(trimmedKey)) return;
cookies[trimmedKey] = valueParts.join('=').trim();
} else {
// 普通 Cookie,每一个分号隔开的都是真实的键值对
parts.forEach(part => {
if (!part.includes('=')) return;
const [key, ...valueParts] = part.split('=');
cookies[key.trim()] = valueParts.join('=').trim();
});
}
});
return cookies;
},
/**
* 头标准化
* @author hmjz100
* @description 标准化头键名(大驼峰),同名键转数组,Cookie 类头部格式化为对象
* @param {String|Object} headers - 请求头文本或对象
* @param {Boolean} withServer - 是否添加默认头字段
* @param {Boolean} withOrigin - 是否添加来源头字段
* @param {Boolean} withCookie - 是否格式化 Cookie 字段
* @returns {Object} 标准化后的 Headers
*/
standHeaders(headers = {}, withServer = true, withOrigin = true, withCookie = false) {
if (!headers) return {};
// 统一数据源,转换为纯粹的键值数组 [ [key, value], [key, value] ]
const pairs = [];
if (typeof headers === 'string') {
headers.split(/[\r\n]+/).forEach(line => {
if (!line.includes(':')) return;
const [key, ...valParts] = line.split(':');
pairs.push([key, valParts.join(':')]);
});
} else {
for (const key in headers) {
const val = headers[key];
// 如果值是纯对象(非数组),转字符串
const value = (typeof val === 'object' && !Array.isArray(val)) ? JSON.stringify(val) : val;
pairs.push([key, value]);
}
}
const newHeaders = {};
// 处理大驼峰转换和同名键合并
pairs.forEach(([key, value]) => {
const normKey = key.trim().toLowerCase().split("-").map(w => w.charAt(0).toUpperCase() + w.slice(1)).join("-");
const valStr = typeof value === 'string' ? value.trim() : value;
if (newHeaders[normKey]) {
newHeaders[normKey] = [].concat(newHeaders[normKey], valStr);
} else {
newHeaders[normKey] = valStr;
}
});
// 格式化 Cookie 属性
if (withCookie) for (const key in newHeaders) if (key.toLowerCase().includes('cookie')) newHeaders[key] = this.standCookies(newHeaders[key], key.toLowerCase());
return withServer ? {
"Accept": "*/*",
"User-Agent": navigator.userAgent,
...(withOrigin ? { "Origin": location.origin, "Referer": `${location.origin}/` } : {}),
...newHeaders
} : newHeaders;
},
/**
* Blob 文件下载
* @author 油小猴
* @description 通过创建临时地址实现文件下载
* @param {Blob} blob - 要下载的 Blob 对象
* @param {String} filename - 下载时提示保存的文件名
*/
blobDownload(blob, filename) {
if (blob instanceof Blob) {
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = filename;
a.rel = "noopener"
a.click();
URL.revokeObjectURL(url);
}
},
/**
* 可跨域 xmlhttpRequest 请求
* @author hmjz100
* @description 封装 `GreaseMonkey-Compatible_xmlhttpRequest` 实现的跨域请求,与原始函数参数相同,支持回调和 await 两种用法
* @param {Object} option - 请求配置对象
* @returns {XMLHttpRequest|Promise} 请求对象实例或 Promise
*/
xmlHttpRequest(option) {
const xmlHttpRequest = (typeof GM_xmlhttpRequest === "function") ? GM_xmlhttpRequest : (typeof GM?.xmlHttpRequest === "function") ? GM.xmlHttpRequest : null;
if (!xmlHttpRequest || base.isType(xmlHttpRequest) !== "function") throw new Error("GreaseMonkey 兼容 XMLHttpRequest 不可用。");
return xmlHttpRequest({ withCredentials: true, ...option });
},
/**
* 发送 POST 请求
* @author 油小猴
* @author hmjz100
* @description 一般用于请求 API,支持智能格式化数据、智能编码请求数据
* @param {String} url - 请求地址
* @param {Object|String} data - 请求数据
* @param {Object} headers - 请求头配置
* @param {String} [type="json"] - 响应类型(支持 `json`, `blob` 等)
* @param {Boolean} [withOrigin=true] - 是否携带跨域信息
* @param {Boolean} [full=false] - 是否返回完整请求信息
* @returns {Promise} 包含响应数据的 `Promise` 对象
*/
async post(url, data, headers, type = "json", withOrigin = true, full = false) {
let _data = data;
if (this.isType(data) === "object" || this.isType(data) === "array") {
data = JSON.stringify(data);
} else if (this.isType(data) === "urlsearchparams") {
_data = Object.fromEntries(data);
}
headers = this.standHeaders(headers, true, withOrigin);
headers = { "Accept": "*/*,application/json;charset=utf-8", ...headers };
let request
const promise = new Promise((resolve, reject) => {
request = base.xmlHttpRequest({
method: "POST", url, headers, data, responseType: type, anonymous: false,
onloadstart: () => {
base.console.info("【LinkSwift】Post(start)\n请求地址:" + url + "\n请求数据:", _data, "\n请求头部:", base.standHeaders(headers, false, false, true));
},
onload: (res) => {
// 转换 Headers 到 Object
const rawHeaders = res.responseHeaders || (request?.getAllResponseHeaders?.() || "") || "";
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false, true);
if (type === "blob") {
base.console.info("【LinkSwift】Post(load) Blob\n请求地址:" + url + "\n请求数据:", _data, "\n请求结果:", res);
resolve(res);
return;
}
// 尝试解析响应
if (type === "json") {
res.responseDecode = res.responseText;
try { res.responseDecode = atob(res.responseDecode) } catch { }
try { res.responseDecode = escape(res.responseDecode) } catch { }
try { res.responseDecode = decodeURIComponent(res.responseDecode) } catch { }
try { res.responseDecode = JSON.parse(res.responseDecode) } catch { }
if (res.responseDecode === res.responseText) res.responseDecode = null;
if (this.isType(res.response) === "object") res.responseDecode = res.response;
}
base.console.info("【LinkSwift】Post(load)\n请求地址:" + url + "\n请求数据:", _data, "\n请求头部:", base.standHeaders(headers, false, false, true), "\n请求结果:", res);
resolve(full ? res : res.responseDecode ?? res.response ?? res.responseText);
},
onerror: (error) => {
let msg = "请求失败";
if (error && typeof error === "object") msg += ": " + JSON.stringify(error, null, 2);
base.console.error("【LinkSwift】Post(error)\n请求出现错误,可能是网络问题。", error);
reject(new Error(msg));
}
});
});
if (request) {
const methods = Object.getOwnPropertyNames(request).filter(key => typeof request[key] === 'function' && !promise.hasOwnProperty(key) && !['then', 'catch', 'finally'].includes(key)); // 自动收集 request 上的函数属性进行绑定,并能智能排除 Promise 原生方法
methods.forEach(method => { promise[method] = (...args) => request[method](...args); }); // 动态绑定到 Promise
}
return promise;
},
/**
* 发送 GET 请求
* @author 油小猴
* @author hmjz100
* @description 一般用于请求 API,支持智能格式化数据
* @param {String} url - 请求地址
* @param {Object} headers - 请求头配置
* @param {String} [type="json"] - 响应类型
* @param {Boolean} [withOrigin=true] - 是否携带跨域信息
* @returns {Promise} 包含响应数据的 `Promise` 对象
*/
async get(url, headers, type = "json", withOrigin = true) {
headers = this.standHeaders(headers, true, withOrigin);
let request
const promise = new Promise((resolve, reject) => {
request = base.xmlHttpRequest({
method: "GET", url, headers, responseType: type, anonymous: false,
onloadstart: () => {
base.console.info("【LinkSwift】Get(start)\n请求地址:" + url + "\n请求头部:", base.standHeaders(headers, false, false, true));
},
onload: (res) => {
// 转换 Headers 到 Object
const rawHeaders = res.responseHeaders || (request?.getAllResponseHeaders?.() || "") || "";
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false, true);
if (type === "blob") {
base.console.info("【LinkSwift】Get(load) Blob\n请求地址:" + url, "\n请求结果:", res);
resolve(res);
return;
}
// 尝试解析响应
if (type === "json") {
res.responseDecode = res.responseText;
try { res.responseDecode = JSON.parse(res.responseDecode) } catch { }
if (res.responseDecode === res.responseText) res.responseDecode = null;
if (this.isType(res.response) === "object") res.responseDecode = res.response;
}
base.console.info("【LinkSwift】Get(load)\n请求地址:" + url + "\n请求头部:", headers, "\n请求结果:", res);
resolve(res.responseDecode ?? res.response ?? res.responseText);
},
onerror: (error) => {
let msg = "请求失败";
if (error && typeof error === "object") msg += ": " + JSON.stringify(error, null, 2);
base.console.error("【LinkSwift】Get(error)\n请求出现错误,可能是网络问题。", error);
reject(new Error(msg));
}
});
});
if (request) {
const methods = Object.getOwnPropertyNames(request).filter(key => typeof request[key] === 'function' && !promise.hasOwnProperty(key) && !['then', 'catch', 'finally'].includes(key)); // 自动收集 request 上的函数属性进行绑定,并能智能排除 Promise 原生方法
methods.forEach(method => { promise[method] = (...args) => request[method](...args); }); // 动态绑定到 Promise
}
return promise;
},
/**
* 发送 HEAD 请求
* @author hmjz100
* @description 用于获取请求地址返回的请求头,支持智能降级为轻量 GET (`Range: bytes=0-0`、`HEADERS_RECEIVED`),返回结构化响应头
* @param {String} url - 请求地址
* @param {Object} headers - 请求头配置
* @param {Boolean} usingGET - 是否使用 GET
* @returns {Promise} 包含响应数据的 `Promise` 对象
*/
async head(url, headers, usingGET) {
headers = this.standHeaders(headers);
return new Promise((resolve, reject) => {
const method = usingGET ? "Get" : "Head";
let _aborted = false;
const request = base.xmlHttpRequest({
method: method.toUpperCase(), url, headers, anonymous: false,
onloadstart: () => {
base.console.info(`【LinkSwift】Head${usingGET ? " Get" : ""}(start)\n请求地址:${url}\n请求头部:`, base.standHeaders(headers, false, false, true));
},
onload(res) {
if (!_aborted) {
// 转换 Headers 到 Object
const rawHeaders = res.responseHeaders || (request?.getAllResponseHeaders?.() || "") || "";
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false, true);
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)) {
base.head(res.finalUrl, { ...headers, Range: "bytes=0-0" }, true).then(resolve).catch(reject);
return;
}
resolve(res);
}
},
onreadystatechange(res) {
if (res.readyState === 2) { // HEADERS_RECEIVED
_aborted = true;
if (request && request.abort) request.abort(); // 主动停止接收数据,适配某些不给用 HEAD 请求又不肯 range 头部的后端
// 转换 Headers 到 Object
const rawHeaders = res.responseHeaders || (request?.getAllResponseHeaders?.() || "") || "";
res.responseHeaders = base.standHeaders(typeof rawHeaders === 'string' ? rawHeaders.trim() : "", false, false, true);
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)) {
base.head(res.finalUrl, { ...headers, Range: "bytes=0-0" }, true).then(resolve).catch(reject);
return;
}
resolve(res);
}
},
onerror(error) {
if (!_aborted) {
base.console.error(`【LinkSwift】Head${usingGET ? " Get" : ""}(error)\n请求出现错误,可能是网络问题。`, error);
reject(error);
}
}
});
});
},
/**
* 获取最终重定向
* @author 油小猴
* @author hmjz100
* @description 使用 GET、Head,智能追踪 HTTP 30x 重定向,返回最终访问地址
* @param {String} url - 初始请求地址
* @param {Object} headers - 请求头配置
* @param {Boolean} usingGET - 是否使用 GET
* @param {Boolean} returnURL - 是否只返回地址而不是 res
* @returns {Promise} 最终地址
*/
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.status >= 300 && res.status < 400) {
return this.getFinal(res.finalUrl, headers, usingGET, returnURL);
}
// 返回最终结果
return returnURL ? res.finalUrl : res;
})
.catch(err => {
throw err;
});
},
/**
* 下载文件
* @author hmjz100
* @description 发送 GET 请求,一般用于文件下载,支持进度监控、自动重试、断点续传、非断回退
* @param {String} url - 请求地址
* @param {Object} headers - 请求头配置
* @param {Number} [size=0] - 响应类型
* @param {Object} [extra] - 附加参数(必须 `name`、`index`、`size` 属性;可选 `thread`、`retry` 属性)
* @returns {Promise} 包含响应数据的 `Promise` 对象
*/
async download(url, headers, extra) {
headers = this.standHeaders(headers);
// 初始化全局共享状态
this.download.active = this.download.active || 0; // 全局活跃线程数
this.download.taskCount = this.download.taskCount || 0; // 当前正在运行的 download 任务数
const global_maxThreads = 10; // 整个允许的最大并发数
if (extra) base.console.info(`【LinkSwift】Download\n收到数据:`, extra);
if (!extra || !extra.index || !extra.name || !extra.size) throw new Error("extra 缺少内容。");
const status = {
aborted: false,
requests: new Set(),
results: [],
active: 0,
maxSpeed: 0,
lastSampleTime: Date.now(),
lastSampleLoaded: 0,
currentSpeed: 0,
totalLoaded: 0
};
const promise = new Promise((resolve, reject) => {
(async () => {
this.download.taskCount++; // 任务进入
try {
const finalHead = await base.getFinal(url, headers, false, false).catch(reject);
if (!finalHead) return;
url = finalHead.finalUrl;
const responseHeaders = finalHead.responseHeaders;
let size = parseInt(extra.size || responseHeaders?.["Content-Length"] || 0, 10);
if (responseHeaders?.["Content-Range"]) {
size = parseInt((responseHeaders["Content-Range"]?.match(/\/(\d+)$/)?.[1] || size), 10);
}
if (!status.aborted && typeof extra?.onProgress === "function") extra.onProgress({
progress: 0,
loaded: 0,
total: size,
speed: 0,
speedText: `${base.sizeFormat(0)}/s`,
etaText: base.rtimeFormat(NaN)
});
if (!(finalHead.status >= 200 && finalHead.status < 400)) return reject(finalHead);
if (finalHead.status == 204 && finalHead.statusText === "IDM") return reject(finalHead);
const supportRange = finalHead.status == 206 && (responseHeaders?.["Accept-Ranges"]?.includes("bytes") || responseHeaders?.["Content-Range"]?.includes("bytes"));
if (!!supportRange || size > 0) {
base.console.info(`【LinkSwift】Download(Start)\n文件名称:${extra.name}\n断点续传:支持`);
const maxRetry = extra.retry || 10;
let index = 0;
let offset = 0;
const worker = async () => {
const minChunk = extra.minChunk || 128 * 1024; // 最小 128KB,避免过度碎片化
const absoluteMaxChunk = extra.maxChunk || 30 * 1024 * 1024; // 放宽最大限制到 30MB
// 初始探测块大小:从较小的基准开始(例如 256KB)
let chunk = Math.min(256 * 1024, absoluteMaxChunk);
while (offset < size && !status.aborted) {
// 如果全局线程满了,且当前任务已经抢到了 1 条以上的线程,则 “让路” 给后来的任务
const fairShare = Math.max(1, Math.floor(global_maxThreads / this.download.taskCount));
while (!status.aborted && this.download.active >= global_maxThreads && status.active >= fairShare) {
await new Promise(r => setTimeout(r, 200));
}
if (status.aborted || offset >= size) break;
const _index = index++;
const start = offset;
const end = Math.min(start + chunk - 1, size - 1);
const _size = end - start + 1;
offset += _size;
let attempt = 0;
let success = false;
let duration = 0.1; // 默认防除 0
let resData;
while (attempt <= maxRetry && !status.aborted && !success) {
status.active++;
this.download.active++;
try {
let startTime = Date.now();
let lastLoaded = 0;
resData = await new Promise((s, j) => {
const xhr = base.xmlHttpRequest({
method: "GET", url, headers: { ...headers, "Range": `bytes=${start}-${end}` }, responseType: "arraybuffer", anonymous: false,
onloadstart() {
startTime = Date.now(); // 拿到首字节开始为当前块计时
},
onprogress: (progress) => {
const delta = progress.loaded - lastLoaded;
status.totalLoaded += delta; // 累加到全局已存载
lastLoaded = progress.loaded;
const now = Date.now();
const sampleDuration = (now - status.lastSampleTime) / 1000;
// 采样频率控制
if (sampleDuration >= 0.5) {
const instantSpeed = (status.totalLoaded - status.lastSampleLoaded) / sampleDuration;
// 平滑处理速度 (EMA)
status.currentSpeed = status.currentSpeed === 0
? instantSpeed
: status.currentSpeed * 0.4 + instantSpeed * 0.6;
// 计算剩余时间 (ETA)
const remainSize = size - status.totalLoaded;
const etaSeconds = status.currentSpeed > 0 ? remainSize / status.currentSpeed : 0;
// 更新采样锚点
status.lastSampleTime = now;
status.lastSampleLoaded = status.totalLoaded;
// 回传给业务层
if (!status.aborted && typeof extra?.onProgress === "function") extra.onProgress({
progress: (status.totalLoaded * 100 / size),
loaded: status.totalLoaded,
total: size,
speed: status.currentSpeed,
speedText: `${base.sizeFormat(status.currentSpeed)}/s`,
etaText: base.rtimeFormat(etaSeconds)
});
}
},
onload: (load) => {
status.requests.delete(xhr);
if (load.status == 204 && load.statusText === "IDM") return j(load);
if (load.status >= 200 && load.status < 300) s(load.response);
else j(load);
},
onerror: (error) => {
status.requests.delete(xhr);
j(error);
}
});
status.requests.add(xhr);
});
duration = (Date.now() - startTime) / 1000 || 0.05;
status.results.push({ index: _index, data: resData });
success = true;
} catch (e) {
// 发生错误通常是断流,强制将下一次计算的 chunk 缩小一半,避免死磕
chunk = Math.max(minChunk, Math.floor(chunk * 0.5));
await new Promise(r => setTimeout(r, 1000 * attempt));
attempt++;
if (attempt > maxRetry) throw e;
} finally {
status.active--;
this.download.active--;
}
}
if (success) {
// 动态比例探测
const speed = _size / duration; // 当前块测算速度 (Bytes/s)
const targetDuration = extra.duration || 2.0; // 目标:希望每个块耗时 2 秒钟下载完
// 根据当前真实速度,推算如果要恰好耗时 2 秒,下一个块应该多大
let nextOptimalChunk = speed * targetDuration;
// 涨跌幅限制,防止网络突发波动导致 chunk 暴增或暴跌
// 一次最多涨 2 倍,最多跌至 1/3
nextOptimalChunk = Math.min(nextOptimalChunk, chunk * 2.0);
nextOptimalChunk = Math.max(nextOptimalChunk, chunk * 0.33);
// 平滑滤波:历史值占 40%,新预测占 60% (倾向于较快响应网络变化)
chunk = Math.floor(chunk * 0.4 + nextOptimalChunk * 0.6);
// 最终安全边界钳制
chunk = Math.max(minChunk, Math.min(absoluteMaxChunk, chunk));
// 记录最高速度
status.maxSpeed = Math.max(status.maxSpeed, speed);
}
}
};
// 启动当前任务的并发线程,单任务最高 3 个
const maxThreads = Math.min(extra.thread || 3, global_maxThreads);
await Promise.all(Array(maxThreads).fill(0).map(worker));
if (status.aborted) return;
if (!status.aborted && typeof extra?.onProgress === "function") extra.onProgress({
progress: 100,
loaded: size,
total: size,
speed: 0,
speedText: `${base.sizeFormat(0)}/s`,
etaText: base.rtimeFormat(0)
});
await new Promise(resolve => setTimeout(resolve, 0));
status.results.sort((a, b) => a.index - b.index);
// 分段提取数据
async function getBlobData(results) {
const dataList = [];
const batchSize = 100; // 每处理 100 个分块释放一次主线程
for (let i = 0; i < results.length; i++) {
dataList.push(results[i].data);
if (i % batchSize === 0) {
await new Promise(resolve => setTimeout(resolve, 0));
}
}
return dataList;
};
const finalData = await getBlobData(status.results);
status.results = null; // 释放内存引用
resolve({
status: 200,
statusText: "Ok!",
readyState: 4,
response: new Blob(finalData),
finalUrl: url
});
} else {
// 不支持 Range,回退
const xhr = base.xmlHttpRequest({
method: "GET", url, headers, responseType: "blob", anonymous: false,
onprogress: (progress) => {
if (status.aborted) return;
// 同步全局已存载量,单线程模式下 progress.loaded 就是已存载的总量
status.totalLoaded = progress.loaded;
// 频率控制
const now = Date.now();
const sampleDuration = (now - (status.lastSampleTime || now)) / 1000;
if (sampleDuration >= 0.5 || !status.lastSampleTime) {
// 计算瞬时速度
const instantSpeed = (status.totalLoaded - (status.lastSampleLoaded || 0)) / (sampleDuration || 1);
// 平滑处理速度 (EMA)
status.currentSpeed = !status.currentSpeed
? instantSpeed
: status.currentSpeed * 0.4 + instantSpeed * 0.6;
// 计算剩余时间 (ETA)
const total = progress.total || size; // 优先用服务器返回的 total
const remainSize = total - status.totalLoaded;
const etaSeconds = status.currentSpeed > 0 ? remainSize / status.currentSpeed : 0;
// 更新采样锚点
status.lastSampleTime = now;
status.lastSampleLoaded = status.totalLoaded;
// 回传给业务层
if (typeof extra?.onProgress === "function") {
extra.onProgress({
progress: (status.totalLoaded * 100 / total),
loaded: status.totalLoaded,
total: total,
speed: status.currentSpeed,
speedText: `${base.sizeFormat(status.currentSpeed)}/s`,
etaText: base.rtimeFormat(etaSeconds)
});
}
}
},
onload: (load) => {
if (status.aborted) return;
if (typeof extra?.onProgress === "function") extra.onProgress({
progress: 100,
loaded: size,
total: size,
speed: 0,
speedText: `${base.sizeFormat(0)}/s`,
etaText: base.rtimeFormat(0)
});
resolve(load);
},
onerror: (error) => reject(error)
});
status.requests.add(xhr);
}
} catch (e) {
status.aborted = true;
reject(e);
} finally {
this.download.taskCount--; // 无论成功失败,任务退出
}
})();
});
promise.abort = () => {
status.aborted = true;
status.requests.forEach(xhr => xhr?.abort?.());
status.requests.clear();
status.results = null;
};
if (extra.index) temp.request[extra.index] = promise;
return promise;
},
/**
* Aria2 RPC 服务测试
* @author hmjz100
* @description 验证 `JSON-RPC` 接口可用性
* @param {String} domain - 服务域名
* @param {String} port - 服务端口
* @param {String} path - RPC 路径
* @param {String} token - 认证令牌
* @returns {Promise<"success"|"fail">} 连接状态结果
*/
async testConnectToAria2(domain, port, path, token) {
return new Promise((resolve) => {
const rpc = { domain, port, path, token };
const url = `${rpc.domain}:${rpc.port}${rpc.path}`;
const rpcData = {
id: new Date().getTime(),
jsonrpc: "2.0",
method: "aria2.getVersion",
params: [`token:${rpc.token}`]
};
base.xmlHttpRequest({
method: "POST", url, headers: {}, data: JSON.stringify(rpcData), responseType: "json", anonymous: false,
onloadstart() {
base.console.info("【LinkSwift】Post(start) Aria2Test\n请求地址:" + url + "\n请求内容:", rpcData);
},
onload(res) {
base.console.info("【LinkSwift】Post(load) Aria2Test\n请求地址:" + url + "\n请求结果:", res);
if (!res.response) return resolve("fail");
if (res.response?.error) {
resolve("fail");
} else {
resolve("success");
}
},
onerror(error) {
base.console.error("【LinkSwift】Post(error) Aria2Test\n请求失败", error);
resolve("fail");
},
});
});
},
/**
* AB Download Manager RPC 服务测试
* @author hmjz100
* @description 验证 `JSON-RPC` 接口可用性
* @param {String} domain - 服务域名
* @param {String} port - 服务端口
* @returns {Promise<"success"|"fail">} 连接状态结果
*/
async testConnectToABDM(domain, port) {
return new Promise((resolve) => {
const rpc = { domain, port };
const url = `${rpc.domain}:${rpc.port}/ping`;
base.xmlHttpRequest({
method: "POST", url, headers: {}, data: new Date().getTime(), responseType: "text", anonymous: false,
onloadstart() {
base.console.info("【LinkSwift】Post(start) ABDMTest\n请求地址:" + url + "\n请求内容:", new Date().getTime());
},
onload(res) {
base.console.info("【LinkSwift】Post(load) ABDMTest\n请求地址:" + url + "\n请求结果:", res);
if (!res.response || res.response !== "pong") return resolve("fail");
resolve("success");
},
onerror(error) {
base.console.error("【LinkSwift】Post(error) ABDMTest\n请求失败", error);
resolve("fail");
},
});
});
},
/**
* 重置请求相关数据
* @author 油小猴
* @description 中止所有进行中的请求,清除进度记录和定时器
*/
_resetAllData(keepFiles = false) {
if (!keepFiles) temp.files = [];
if (Object.keys(temp.request).length > 0) Object.keys(temp.request).forEach(key => {
(temp.request[key]).abort();
});
temp.request = {};
temp.downing = {};
},
/**
* 重置请求相关数据
* @author 油小猴
* @description 中止指定的进行中的请求,清除进度记录和定时器
*/
_resetData(i) {
temp.request[i] && temp.request[i].abort();
delete temp.downing[i];
},
/**
* 将对象转换为 URL 编码字符串
* @author 油小猴
* @description 递归处理嵌套数组,自动进行 URI 编码
* @param {Object} obj - 待转换的键值对对象
* @returns {String} URL 编码格式字符串(如`key1=value1&key2=value2`)
*/
stringify(obj) {
let str;
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const value = obj[key];
if (Array.isArray(value)) {
for (let i = 0; i < value.length; i++) {
str += encodeURIComponent(key) + "=" + encodeURIComponent(value[i]) + "&";
}
} else {
str += encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&";
}
}
}
return str.slice(0, -1); // 去掉末尾的 "&"
},
/**
* 动态注入样式表
* @author 油小猴
* @author hmjz100
* @description 支持 `样式标签` `外链CSS` 注入,提供精准的 DOM 定位和插入位置控制
* @param {String} id - 样式元素 ID
* @param {"style"|"link"} tag - 标签类型(`style` 或 `link`)
* @param {String} css - CSS 内容或外链 URL
* @param {String} [_element=".{mount}"] - 定位基准元素选择器
* @param {"before"|"after"|"prepend"|"append"} [position="append"] - 插入位置
*/
addStyle(id, tag = "style", css, _element = `.${mount}`, position = "append") {
base.waitForKeyElements(_element, (element) => {
//const darkrender = $(".darkreader").length > 0 && this.isType(_element) === "string" && _element.includes(mount);
const $styleDom = $(`[${mount}="${id}"], #${id}`);
const $style = $(`<${tag}>`, {
rel: "stylesheet",
[mount]: id,
//...darkrender ? { class: "darkreader" } : {} // 根据页面是否有 Dark Reader 类名的元素来决定是否加入 Dark Reader 豁免类名
});
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);
} else {
switch (position) {
case "before": element.before($style); break;
case "after": element.after($style); break;
case "prepend": element.prepend($style); break;
case "append": default: element.append($style); break;
}
}
return true; // 始终返回 true 以让 bWaitOnce=true 的观察者在首次处理后断开,避免闭包/css 文本被永久持有导致内存泄漏
}, true);
},
/**
* 十六进制颜色转 RGBA
* @author hmjz100
* @description 支持 4 位和 8 位十六进制格式,自动解析透明度通道
* @param {String} hex - 十六进制颜色值(如 `#09f` 或 `#0099ffaa` )
* @returns {String} RGBA 格式字符串(如 `15, 170, 255, 0.67`)
*/
hexToRgba(hex) {
// 去掉 # 号
hex = hex.replace(/^#/, "");
// 如果是四位十六进制颜色值,转换为八位
if (hex.length === 4) {
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];
}
// 解析 RGB 分量
const r = parseInt(hex.substring(0, 2), 16);
const g = parseInt(hex.substring(2, 4), 16);
const b = parseInt(hex.substring(4, 6), 16);
let a = "";
// 如果是八位十六进制颜色值,解析 alpha 通道
if (hex.length === 8) {
a = parseInt(hex.substring(6, 8), 16) / 255; // 将 alpha 值转换为 0 到 1 之间的小数
a = "," + a
}
// 返回 rgba 格式字符串
return r + ", " + g + ", " + b + a;
},
/**
* RGBA 颜色转十六进制
* @author hmjz100
* @description 支持透明度转换,自动补全缩写格式
* @param {String} rgba - RGBA 格式颜色值(如 `rgba(15,170,255,0.67)`)
* @returns {String} 十六进制颜色值(如 `#09aaffaa`)
*/
rgbaToHex(rgba) {
// 去掉前缀 "rgba" 或 "rgb" 并移除空格
rgba = rgba.replace(/^(rgba?|RGBA?)\(/, "").replace(/\s+/g, "").replace(")", "");
// 将颜色值分割为数组
let [r, g, b, a] = rgba.split(",");
// 将 RGB 转换为十六进制
r = parseInt(r).toString(16).padStart(2, "0");
g = parseInt(g).toString(16).padStart(2, "0");
b = parseInt(b).toString(16).padStart(2, "0");
// 如果存在 alpha 通道,处理透明度值
if (a !== undefined) {
// 将 alpha 转换为 0 到 255 的十六进制
a = Math.round(parseFloat(a) * 255).toString(16).padStart(2, "0");
return `#${r}${g}${b}${a}`;
}
// 如果没有 alpha 通道,返回标准六位的十六进制颜色
return `#${r}${g}${b}`;
},
/**
* 自适应样式颜色替换器
* @author hmjz100
* @description 支持全局样式替换和资源路径修正,处理颜色渐变过渡效果等
* @param {String} cssText - 原始 CSS 内容
* @param {String} baseURI - 资源基础路径
* @param {"default"|"other"} type - 替换模式(默认模式包含过渡效果)
* @param {Array<[String, String]>} colorMap - 颜色映射表(旧颜色 → 新颜色)
* @returns {String} 处理后的 CSS 内容
*/
adaptiveStyleOverride(cssText, baseURI, type, colorMap) {
if (!cssText) return "";
if (baseURI) {
// 替换相对路径资源为绝对路径
cssText = cssText.replace(/url\s*\(\s*(['"]?)(.*?)\1\s*\)/g, (match, quote, url) => {
if (url && !/^(data:|https?:|\/\/)/i.test(url)) {
try {
const absoluteURL = new URL(url, baseURI).href;
return `url(${absoluteURL})`;
} catch {
return match;
}
}
return match;
});
}
// 处理默认颜色列表
config.base.dom.themes.forEach(item => {
const oldColor = item.color;
cssText = cssText.replace(new RegExp(base.hexToRgba(oldColor), "ig"), base.hexToRgba(temp.color));
cssText = cssText.replace(new RegExp(oldColor, "ig"), temp.color);
});
// 处理 colorMap
if (type === "other") {
colorMap.forEach(colorPair => {
const oldColor = colorPair[0];
const newColor = colorPair[1];
// 跳过旧色与新色相同的条目,否则 replace 会反复注入 transition 导致无限循环
if (!oldColor || oldColor.toLowerCase() === (newColor || "").toLowerCase()) return;
// 生成旧颜色的三种形式:原样、全大写、全小写
const variants = [
oldColor,
oldColor.toUpperCase(),
oldColor.toLowerCase()
];
// 使用 Set 去重
const uniqueVariants = [...new Set(variants)];
uniqueVariants.forEach(variant => {
const regex = new RegExp(variant, "g");
cssText = cssText.replace(regex, newColor);
});
});
return cssText;
}
if (colorMap) {
colorMap.forEach(colorPair => {
const oldColor = colorPair[0];
const newColor = colorPair[1];
// 跳过旧色与新色相同的条目,否则 regexWithBlock 会反复注入 transition:all.2s
// 导致 wkfe_generated_css → addStyle → 新 ColorUI 标签 → 再处理 → 无限循环与内存爆炸
if (!oldColor || oldColor.toLowerCase() === (newColor || "").toLowerCase()) return;
// 生成三种形式
const variants = [
oldColor,
oldColor.toUpperCase(),
oldColor.toLowerCase()
];
const uniqueVariants = [...new Set(variants)];
if (oldColor.includes("#")) {
// 替换带属性块的情况(添加 transition)
uniqueVariants.forEach(variant => {
const regexWithBlock = new RegExp(variant + "(.*?)}", "gi");
cssText = cssText.replace(regexWithBlock, newColor + "$1; transition:all.2s}");
});
// 最后再统一替换剩下的
uniqueVariants.forEach(variant => {
cssText = cssText.replace(new RegExp(variant, "gi"), newColor);
});
} else {
// 普通字符串替换
uniqueVariants.forEach(variant => {
cssText = cssText.replace(new RegExp(variant, "gi"), newColor);
});
}
});
}
return cssText;
},
/**
* 自适应全局主题颜色修改器
* @author hmjz100
* @description 自动遍历并替换 `页面所有样式表` `SVG 元素` 的颜色值
* @param {Array<[String, String]>} colorMap - 颜色映射表
* @param {"default"|"other"} type - 替换模式
*/
adaptiveThemeOverride(colorMap, type) {
if (!colorMap || colorMap.length === 0) return;
// 处理动态生成的 CSS
base.waitForKeyElements(`[${mount}^="${mount}-ColorUI-"], [id^="${mount}-ColorUI-"]`, (tag) => {
const text = tag.text();
const newCss = base.adaptiveStyleOverride(text, "", type, colorMap);
if (text !== newCss) base.addStyle(tag.attr(mount) || tag.attr("id"), "style", newCss, tag[0]);
return true;
}, true, null, "wkfe_generated_css");
// 普通元素行内样式
base.waitForKeyElements(`[style]:not([${mount}^="${mount}-"],[class*="listener-"])`, ($el) => {
const el = $el[0];
if ($el.parent(`[class*="pl-"]`).length || el.getAttribute("data-pl-colored") === temp.color) return false;
const style = el.getAttribute("style");
if (style && !style.includes("data:image/svg+xml")) {
const newStyle = base.adaptiveStyleOverride(style, "", type, colorMap);
if (style !== newStyle) el.setAttribute("style", newStyle);
el.setAttribute("data-pl-colored", temp.color);
}
return false;
}, false, null, "wkfe_inline_style");
// 外部样式处理
if (!temp.colored) {
let styleCount = 0;
// Link 标签
base.waitForKeyElements(`link[rel="stylesheet"]`, ($tag) => {
const href = $tag.attr("href");
if (!href) return;
// 若 fetch 期间主题色已变更,则放弃本次结果,避免写入过时色覆盖新主题
const expectedColor = temp.color;
fetch(new URL(href, location.href).href).then(r => r.text()).then(text => {
if (temp.color !== expectedColor) return;
const id = `${mount}-ColorUI-` + href.replace(/[^\w]/g, "_");
base.addStyle(id, "style", base.adaptiveStyleOverride(text, href, type, colorMap), $tag[0], "after");
});
return true;
}, true, null, "wkfe_link_once");
// Style 标签
base.waitForKeyElements(`style:not([${mount}^="${mount}-"],[id^="swal-pub"],[class^="darkreader"])`, ($tag) => {
const text = $tag.html();
// 同时检查 raw-css 与 raw-color,确保主题色变更后会重新处理该 style 标签
if ($tag.data("raw-css") === text && $tag.data("raw-color") === temp.color) return;
$tag.data("raw-css", text);
$tag.data("raw-color", temp.color);
const css = base.adaptiveStyleOverride(text, "", type, colorMap);
if (css !== text) {
// 清理此前在当前 style 标签上挂载的 ColorUI 样式,避免 SPA 重建后残留导致内存泄漏
const prevId = $tag.data("color-ui-id");
if (prevId) {
$($tag[0].parentNode).children(`[${mount}="${prevId}"]`).remove();
}
const id = $tag.attr(mount) || $tag.data("color-ui-id") || `${mount}-ColorUI-${styleCount++}`;
$tag.data("color-ui-id", id);
base.addStyle(id, "style", css, $tag[0], "after");
}
}, false, null, "wkfe_style_persistent");
temp.colored = true;
}
const utils = {
// 颜色替换
replace: (val) => (val && val !== "none" && !val.startsWith("url")) ? base.adaptiveStyleOverride(val, "", type, colorMap) : val,
// 统一处理 DataURL
processDataUrl: (dataUrl) => {
const isBase64 = dataUrl.includes(";base64,");
const parts = dataUrl.split(isBase64 ? ";base64," : ",");
if (parts.length < 2) return dataUrl;
const raw = isBase64 ? base.decodeBase(parts[1]) : decodeURIComponent(parts[1].replace(/\\/g, ""));
const newSvg = raw.replace(/(fill|stroke|stop-color)\s*=\s*["']([^"']+)["']/g, (m, attr, val) => {
const newVal = utils.replace(val);
return newVal !== val ? `${attr}="${newVal}"` : m;
});
return isBase64 ? `${parts[0]};base64,${base.encodeBase(newSvg)}` : `${parts[0]},${encodeURIComponent(newSvg)}`;
}
};
// 处理原生 SVG 标签
base.waitForKeyElements("svg:not(.pl-icon, [data-pl-colored])", ($svg) => {
const el = $svg[0];
if (el.getAttribute("data-pl-colored") === temp.color) return false;
const targets = "path, circle, rect, ellipse, line, polyline, polygon, stop, use";
const attrs = ["fill", "stroke", "stop-color"];
$svg.find(targets).each((_, sub) => {
attrs.forEach(attr => {
const val = sub.getAttribute(attr);
if (val) {
const newVal = utils.replace(val);
if (newVal !== val) sub.setAttribute(attr, newVal);
}
});
});
el.setAttribute("data-pl-colored", temp.color);
return false;
}, false, null, "wkfe_svg_dom");
// 处理 DataURL SVG
base.waitForKeyElements(`img[src*="data:image/svg+xml"], [style*="data:image/svg+xml"]`, ($el) => {
const el = $el[0];
if (el.getAttribute("data-pl-colored") === temp.color) return false;
try {
if (el.tagName === "IMG") {
const src = el.getAttribute("src");
const newSrc = utils.processDataUrl(src);
if (src !== newSrc) el.setAttribute("src", newSrc);
} else {
const style = el.getAttribute("style");
const newStyle = style.replace(/url\((['"]?)(data:image\/svg\+xml[^"']+)['"]?\)/g, (match, quote, data) => {
return `url(${quote}${utils.processDataUrl(data)}${quote})`;
});
if (style !== newStyle) el.setAttribute("style", newStyle);
}
el.setAttribute("data-pl-colored", temp.color);
} catch { }
return false;
}, false, null, "wkfe_svg_data");
},
/**
* 延时执行
* @author 油小猴
* @description 仅可于 `async` 函数中执行,否则无法倒计时。
* @param {Number} time - 等待时间(毫秒)
* @returns {Promise} 延时完成的 `Promise`
*/
sleep(time) {
return new Promise(resolve => setTimeout(resolve, time));
},
/**
* 判断版本号新旧
* @author hmjz100
* @description 该函数将版本号按 `.` 分割为数字数组,逐段比较大小。
* 若某段 a 的数字大于 b,则 a 更新;
* 若所有段均相等,则版本相等(返回 false)。
* @param {String} a - 待比较的版本号
* @param {String} b - 基准版本号(如 "1.0.9.7")
* @returns {Boolean} - 若 a 比 b 更新,返回 true;否则返回 false
*/
isNewerVersion(a, b) {
const partsA = a.split(".").map(Number);
const partsB = b.split(".").map(Number);
const maxLength = Math.max(partsA.length, partsB.length);
for (let i = 0; i < maxLength; i++) {
const numA = partsA[i] || 0;
const numB = partsB[i] || 0;
if (numA > numB) return true;
if (numA < numB) return false;
}
return false;
},
/**
* 提取版本号主版本
* @author 油小猴
* @param {String} version - 完整版本号(如 `1.2.3`)
* @returns {String|null} 主版本号(如 `1`)或 `null`(格式错误时)
*/
getMajorVersion(version) {
const [major] = (version || "").split(".");
return /^\d+$/.test(major) ? major : null;
},
/**
* 查找 React 组件实例
* @author 油小猴
* @description 支持 Fiber 架构遍历,可指定向上查找层级
* @param {HTMLElement} dom - 起始 DOM 元素
* @param {Number} [traverseUp=0] - 向上遍历层级
* @returns {Object|null} React 组件实例或 `null`
*/
findReact(dom, traverseUp = 0) {
const key = Object.keys(dom).find(key => {
return key.startsWith("__reactFiber$")
|| key.startsWith("__reactInternalInstance$");
});
const domFiber = dom[key];
if (domFiber == null) return null;
if (domFiber._currentElement) {
let compFiber = domFiber._currentElement._owner;
for (let i = 0; i < traverseUp; i++) {
compFiber = compFiber._currentElement._owner;
}
return compFiber._instance;
}
const GetCompFiber = fiber => {
let parentFiber = fiber.return;
while (base.isType(parentFiber.type) == "string") {
parentFiber = parentFiber.return;
}
return parentFiber;
};
let compFiber = GetCompFiber(domFiber);
for (let i = 0; i < traverseUp; i++) {
compFiber = GetCompFiber(compFiber);
}
return compFiber.stateNode || compFiber;
},
/**
* 深拷贝
* @author hmjz100
* @description 完全复制某个东西
*/
clone(value) {
try {
if (this.isType(structuredClone) === "function") return structuredClone(value);
} catch {
if (value === null || value === undefined) return value;
if (typeof value !== 'object') return value;
if (value instanceof Date) return new Date(value);
if (value instanceof RegExp) return new RegExp(value);
if (Array.isArray(value)) return value.map(item => base.clone(item));
const result = {};
for (const key in value) {
if (Object.prototype.hasOwnProperty.call(value, key)) result[key] = base.clone(value[key]);
}
return result;
}
},
/**
* 迁移旧版本配置
* @author hmjz100
* @description 将项目的旧版配置迁移到新版配置
*/
initConfigMigration(latest) {
try {
const setDeep = (obj, path, value) => {
let current = obj;
for (let i = 0; i < path.length - 1; i++) {
const key = path[i];
const nextKey = path[i + 1];
if (!(key in current) || current[key] === null || typeof current[key] !== 'object') {
// 根据下一个键是否为数字或数字字符串决定创建数组还是对象
const isNextArrayIndex = typeof nextKey === "number" || /^\d+$/.test(nextKey);
current[key] = isNextArrayIndex ? [] : {};
}
current = current[key];
}
current[path[path.length - 1]] = value;
}
if (latest === 1) {
const mapping = {
"setting_rpc_domain": ["setting_aria2_rpc", 0, "domain"],
"setting_rpc_port": ["setting_aria2_rpc", 0, "port"],
"setting_rpc_path": ["setting_aria2_rpc", 0, "path"],
"setting_rpc_token": ["setting_aria2_rpc", 0, "token"],
"setting_rpc_dir": ["setting_aria2_rpc", 0, "dir"],
"setting_terminal_type": ["setting_curl_terminal"],
"setting_init_code": ["setting_init", "code"],
"setting_init_license": ["setting_init", "license"],
"setting_init_version": ["setting_init", "version"],
"setting_theme_color": ["setting_ui_theme", "color"],
"setting_theme_baidu": ["setting_ui_theme", "custom", "$baidu"],
"setting_theme_ali": ["setting_ui_theme", "custom", "$aliyun"],
"setting_theme_mcloud": ["setting_ui_theme", "custom", "$mcloud"],
"setting_theme_tcloud": ["setting_ui_theme", "custom", "$tcloud"],
"setting_theme_xunlei": ["setting_ui_theme", "custom", "$xunlei"],
"setting_theme_quark": ["setting_ui_theme", "custom", "$quark"],
"setting_theme_uc": ["setting_ui_theme", "custom", "$uc"],
"setting_theme_123": ["setting_ui_theme", "custom", "$123pan"]
};
// 用于缓存顶层对象的修改,减少 base.setValue 调用频率
const cache = {};
for (const oldKey in mapping) {
let val = base.getValue(oldKey);
if (val === undefined || val === null) continue;
// 规范化布尔值
if (val === "no") val = false;
else if (val === "yes") val = true;
const path = mapping[oldKey];
const rootKey = path[0];
// 初始化缓存中的根对象
if (!cache[rootKey]) {
cache[rootKey] = base.getValue(rootKey) || (typeof path[1] === 'number' || /^\d+$/.test(path[1]) ? [] : {});
}
if (path.length === 1) {
cache[rootKey] = val;
} else {
// 使用优化后的路径设置工具
setDeep(cache, path, val);
}
base.delValue(oldKey);
}
// 批量保存修改后的新配置项
for (const rootKey in cache) {
base.setValue(rootKey, cache[rootKey]);
}
}
} catch (e) {
base.console.error("【LinkSwift】配置迁移失败:", e);
}
},
_idmHotUpdate() {
const rawValue = base.getValue("setting_idm_rpc");
const valueType = this.isType(rawValue);
if (valueType === "array") {
const defaultItem = rawValue.find(item => item.default === true);
if (defaultItem) base.setValue("setting_idm_rpc", defaultItem.id);
} else if (valueType === "text" && typeof rawValue === "string" && rawValue.trim().startsWith("[")) {
try {
const parsed = JSON.parse(rawValue);
if (Array.isArray(parsed)) {
const defaultItem = parsed.find(item => item.default === true);
if (defaultItem) base.setValue("setting_idm_rpc", defaultItem.id);
}
} catch { }
}
},
/**
* 初始化默认配置
* @author 油小猴
* @author hmjz100
* @description 创建基础配置、主题设置等存储项(仅当不存在时)
*/
initDefaultConfig() {
if (base.getValue("setting_config_version") !== "1") this.initConfigMigration(1);
this._idmHotUpdate();
// 默认值
const defaults = [
{
name: "setting_idm_rpc",
value: "1"
},
{
name: "setting_aria2_rpc",
value: [
{
domain: "http://localhost",
port: "16800",
path: "/jsonrpc",
token: "",
dir: "",
default: true
}
]
},
{
name: "setting_bitcomet_rpc",
value: [
{
domain: "http://localhost",
port: "8080",
path: "/panel/task_add_httpftp_result",
authName: "",
authPass: "",
dir: "",
default: true
}
]
},
{
name: "setting_abdm_rpc",
value: [
{
domain: "http://localhost",
port: "15151",
dir: "",
default: true
}
]
},
{
name: "setting_curl_terminal",
value: "wc"
},
{
name: "setting_init",
value: { code: "", license: "", version: "" }
},
{
name: "setting_ui_theme",
value: {
color: "#574AB8",
custom: {
$baidu: true,
$aliyun: true,
$mcloud: true,
$tcloud: true,
$xunlei: true,
$guangya: true,
$quark: true,
$uc: true,
$123pan: true
}
}
},
{
name: "setting_config_version",
value: "1"
}
];
/**
* 递归补充缺失字段
* @param {any} target 当前用户配置
* @param {any} source 默认配置模板
*/
const mergeDefaults = (target, source) => {
// 类型不一致或 target 不存在,直接取默认值
if (target === null || target === undefined || typeof target !== typeof source) {
return this.clone(source);
}
// 处理数组:LinkSwift 的 RPC 配置多为对象数组
if (Array.isArray(source)) {
if (!Array.isArray(target)) return this.clone(source);
const template = source[0];
const result = target.map(item => mergeDefaults(item, template));
// 补齐数组至少有一个默认激活项的逻辑
if (template && 'default' in template && !result.some(i => i.default === true) && result.length > 0) {
result[0].default = true;
}
return result;
}
// 处理对象
if (typeof source === 'object' && source !== null) {
const result = { ...target };
for (const key in source) {
// 跳过业务上不需要自动覆盖的敏感/私有字段
const skipKeys = ["token", "dir", "authName", "authPass"];
if (skipKeys.includes(key) && target[key] !== undefined) continue;
// 特殊逻辑:不强制覆盖 default 字段(除非 target 没有)
if (key === "default" && target[key] !== undefined) continue;
result[key] = mergeDefaults(target[key], source[key]);
}
return result;
}
return target; // 基本类型直接返回原值
};
defaults.forEach(({ name, value }) => {
const current = base.getValue(name);
const isInvalid = current === null || current === undefined || (Array.isArray(current) && current.length === 0);
const finalConfig = isInvalid ? this.clone(value) : mergeDefaults(current, value);
base.setValue(name, finalConfig);
});
},
/**
* 显示设置界面
* @author 油小猴
* @author hmjz100
* @description 构建包含 RPC 配置、终端类型等设置项的交互界面
* @see {@link https://www.youxiaohou.com/zh-cn/motrix.html#使用指南 RPC 配置说明}、 {@link https://www.youxiaohou.com/zh-cn/curl.html cURL 使用教程}
*/
showSetting(target) {
const setting = $(`
`);
Swal.fire({
...temp.swalDefault,
title: "(。•ᴗ•。) 助手设置",
html: setting.html(),
icon: "info",
iconHtml: "⚙︎",
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
footer: `LinkSwift 由 hmjz100 制作
${config.base.dom.footer}
`,
didOpen: (toast) => {
const element = $(toast);
if (target?.data?.().some(key => key.startsWith("backTo"))) element.find(".swal2-close").addClass(`${mount} tip`).attr("data-title", "返回上页").css({ "left": "10px", "right": "auto" }).text("◃");
if (target?.data?.("back-to-downloads")) element.find(".aria2, .bitcomet, .abdm, .other").hide();
},
willClose: () => {
if (target?.data?.("back-to-downloads")) base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(true), config.base.dom.method[temp.mode].footer);
},
});
},
/**
* 显示 IDM 服务设置界面
* @author hmjz100
* @description 包含 RPC 配置的交互界面
*/
showIDMSetting(target) {
const IDMValue = base.getValue("setting_idm_rpc");
const IDMSetting = `适用于 IDM 推送下载
提示:Client ID(即客户端标识)是 IDM 客户端用于标识不同浏览器 IDM 捕获扩展的唯一 ID。
如果您有多个浏览器,每个浏览器都需要配置不同的客户端标识。
如果填写了错误的客户端标识,将会导致 “推送到 IDM” 功能无法正常推送。
Chromium 类浏览器标识请使用以下方法获取:
- 确保已打开扩展管理页面的 “开发人员模式”;
- 确保已安装好 IDM 以及 IDM 浏览器扩展;
- 右键 IDM 扩展图标,进入 “管理扩展”;
- 在打开的浏览器的管理页面,滚动到下方;
- 选择 “检查视图” 右侧的任意一个选项进入;
- 在打开的 “DevTools” 窗口中,点击 “应用程序(Application)” 标签;
- 在左侧栏中找到 “扩展存储(Extension Storage)”,展开;
- 在展开的子项中选择 “本地(Local)”;
- 在右侧主视图中显示的表格中找到 “client” 对应数字值;
- 复制数字值,粘贴到上方的 “客户标识” 里;
- 去试着获取地址,选择发送到 IDM 看看吧!
Firefox 类浏览器标识请使用以下方法获取:
- 确保已安装好 IDM 以及 IDM 浏览器扩展;
- 右键 IDM 扩展图标,进入 “管理扩展”;
- 在打开的浏览器的管理页面,找到并点击 (小齿轮),选择 “调试附加组件”;
- 在打开的 “调试/运行时” 页面中,找到 “IDM Integration Module”,然后点击右侧的 “检查”;
- 在打开的 “DevTools” 窗口中,点击 “存储(Storage)” 标签;
- 在左侧栏中找到 “扩展存储(Extension Storage)”,展开;
- 在展开的子项中选择 “moz-extension://” 开头的项目;
- 在右侧主视图中显示的表格中找到 “client” 对应数字值;
- 复制数字值,粘贴到上方的 “客户标识” 里;
- 去试着获取地址,选择发送到 IDM 看看吧!
知识拓展:配置捕获的文件扩展名
- 在 IDM 的 “设置” > “文件类型” > “接管下载文件扩展名” 里添加您需要捕获的文件扩展名;
- 例如:.mp4, .avi, .mkv 等
`;
Swal.fire({
...temp.swalDefault,
title: "IDM 服务设置",
html: IDMSetting,
icon: "success",
iconHtml: `
`,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
footer: `LinkSwift 由 hmjz100 制作
${config.base.dom.footer}
`,
didOpen: (toast) => {
const element = $(toast);
if (Object.keys(target.data()).some(key => key.startsWith("backTo"))) element.find(".swal2-close").addClass(`${mount} tip`).attr("data-title", "返回上页").css({ "left": "10px", "right": "auto" }).text("◃");
if (IDMValue) element.find(`[data-type="idm.id"]`).val(IDMValue);
element.find(`[data-type="idm.id"]`).on("input", (e) => {
e.preventDefault();
base.setValue("setting_idm_rpc", String($(e.currentTarget).val()));
});
},
willClose: () => {
if (target?.data?.("back-to-setting")) base.showSetting();
if (target?.data?.("back-to-downloads")) base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(true), config.base.dom.method[temp.mode].footer);
},
});
},
/**
* 显示 Aria2 服务设置界面
* @author hmjz100
* @description 包含 RPC 配置的交互界面
* @see {@link https://www.youxiaohou.com/zh-cn/motrix.html#使用指南 RPC 配置说明}
*/
showAria2Setting(target) {
const AriaList = base.getValue("setting_aria2_rpc");
const AriaOptions = AriaList.map((item, index) => {
return ``;
}).join("");
let AriaSelected = AriaList.find(i => i.default);
const Aria2Setting = `
`;
Swal.fire({
...temp.swalDefault,
title: "Aria2 服务设置",
html: Aria2Setting,
icon: "info",
iconHtml: "⚙︎",
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
footer: `LinkSwift 由 hmjz100 制作
${config.base.dom.footer}
`,
didOpen: (toast) => {
const element = $(toast);
if (Object.keys(target.data()).some(key => key.startsWith("backTo"))) element.find(".swal2-close").addClass(`${mount} tip`).attr("data-title", "返回上页").css({ "left": "10px", "right": "auto" }).text("◃");
if (AriaSelected) {
element.find(".listener-rpc-input").each((_, input) => {
const type = $(input).data("type").split(".")[1];
$(input).val(AriaSelected[type] || "");
});
} else {
AriaList[0].default = true;
base.setValue("setting_aria2_rpc", AriaList);
AriaSelected = AriaList[0];
}
},
willClose: () => {
if (target?.data?.("back-to-setting")) base.showSetting();
if (target?.data?.("back-to-downloads")) base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(true), config.base.dom.method[temp.mode].footer);
},
});
},
/**
* 显示比特彗星服务设置界面
* @author hmjz100
* @description 包含 RPC 配置的交互界面
*/
showBitcometSetting(target) {
const BCList = base.getValue("setting_bitcomet_rpc");
const BCOptions = BCList.map((item, index) => {
return ``;
}).join("");
let BCSelected = BCList.find(i => i.default);
const BitcometSetting = `适用于比特彗星推送下载
`;
Swal.fire({
...temp.swalDefault,
title: "比特彗星服务设置",
html: BitcometSetting,
icon: "info",
iconHtml: "⚙︎",
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
footer: `LinkSwift 由 hmjz100 制作
${config.base.dom.footer}
`,
didOpen: (toast) => {
const element = $(toast);
if (Object.keys(target.data()).some(key => key.startsWith("backTo"))) element.find(".swal2-close").addClass(`${mount} tip`).attr("data-title", "返回上页").css({ "left": "10px", "right": "auto" }).text("◃");
if (BCSelected) {
element.find(".listener-rpc-input").each((_, input) => {
const type = $(input).data("type").split(".")[1];
$(input).val(BCSelected[type] || "");
});
} else {
BCSelected[0].default = true;
base.setValue("setting_bitcomet_rpc", BCSelected);
BCSelected = BCList[0];
}
},
willClose: () => {
if (target?.data?.("back-to-setting")) base.showSetting();
if (target?.data?.("back-to-downloads")) base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(true), config.base.dom.method[temp.mode].footer);
},
});
},
/**
* 显示 AB Download Manager 服务设置界面
* @author hmjz100
* @description 包含 RPC 配置的交互界面
*/
showABDMSetting(target) {
const ABList = base.getValue("setting_abdm_rpc");
const ABOptions = ABList.map((item, index) => {
return ``;
}).join("");
let ABSelected = ABList.find(i => i.default);
const ABSetting = `适用于 AB Download Manager 推送下载
`;
Swal.fire({
...temp.swalDefault,
title: "ABDM 服务设置",
html: ABSetting,
icon: "info",
iconHtml: "⚙︎",
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
footer: `LinkSwift 由 hmjz100 制作
${config.base.dom.footer}
`,
didOpen: (toast) => {
const element = $(toast);
if (Object.keys(target.data()).some(key => key.startsWith("backTo"))) element.find(".swal2-close").addClass(`${mount} tip`).attr("data-title", "返回上页").css({ "left": "10px", "right": "auto" }).text("◃");
if (ABSelected) {
element.find(".listener-rpc-input").each((_, input) => {
const type = $(input).data("type").split(".")[1];
$(input).val(ABSelected[type] || "");
});
} else {
ABSelected[0].default = true;
base.setValue("setting_abdm_rpc", ABSelected);
ABSelected = ABList[0];
}
},
willClose: () => {
if (target?.data?.("back-to-setting")) base.showSetting();
if (target?.data?.("back-to-downloads")) base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(true), config.base.dom.method[temp.mode].footer);
},
});
},
/**
* 显示美化设置界面
* @author hmjz100
* @description 提供主题颜色选择器和各网盘界面美化配置
* @fires .listener-color - 主题色选择事件
* @fires .listener-theme - 网盘主题配置变更事件
*/
showBeautify() {
function changeColor() {
temp.color = base.getValue("setting_ui_theme").color;
return config.base.dom.themes.map(item => {
return `
${item.name.split("|").map(part => `
${part}
`).join("")}
${item.color === temp.color ? `
` : ""}
`;
}).join("")
}
function changeTheme() {
const themeList = [
{ name: "百度网盘", key: "$baidu" },
{ name: "阿里云盘", key: "$aliyun" },
{ name: "移动云盘", key: "$mcloud" },
{ name: "天翼云盘", key: "$tcloud" },
{ name: "迅雷云盘", key: "$xunlei" },
{ name: "光鸭云盘", key: "$guangya" },
{ name: "夸克网盘", key: "$quark" },
{ name: "UC 网盘", key: "$uc" },
{ name: "123 云盘", key: "$123pan" }
];
return themeList.map(item => {
return ``;
}).join("");
}
const beautify = $(`
替换界面配色为主题颜色
*将在网页刷新后生效
${changeTheme()}
`)
Swal.fire({
...temp.swalDefault,
title: "(✿ᴗ‿ᴗ) 助手美化",
html: beautify.html(),
icon: "success",
iconHtml: "🍃︎",
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
footer: `LinkSwift 由 hmjz100 制作
${config.base.dom.footer}
`,
});
},
/**
* 显示调试信息面板
* @description 展示脚本运行时环境、版本信息及依赖状态
* @author hmjz100
* @property{String} manageHandler - 外部管理器名称
* @property{String} manageVersion - 外部管理器版本
*/
showDebug() {
let debugInfo;
debugInfo += `以下内容均为脚本自检信息
本页面仅作为调试使用`;
debugInfo += ``;
debugInfo += ``;
debugInfo += ``;
debugInfo += ``;
debugInfo += ``;
debugInfo += ``;
debugInfo += ``;
debugInfo += ``;
debugInfo = "" + debugInfo + "
";
Swal.fire({
...temp.swalDefault,
icon: "info",
title: "调试信息",
html: debugInfo,
allowOutsideClick: false,
showCloseButton: true,
footer: `LinkSwift 由 hmjz100 制作
${config.base.dom.footer}
`,
});
},
/**
* 显示版本更新日志
* @author hmjz100
* @description 按时间倒序展示所有历史版本更新内容
*/
async showUpdate() {
await Swal.fire({
...temp.swalDefault,
title: "更新日志",
imageUrl: `data:image/jpeg;base64,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`,
imageAlt: `喜马拉雅山脉,珠穆朗玛峰`,
customClass: {
image: 'swal2-banner',
container: `${mount}-about`
},
html: `
风雨送春归,飞雪迎春到。已是悬崖百丈冰,犹有花枝俏。
俏也不争春,只把春来报。待到山花烂漫时,她在丛中笑。
(o゜▽゜)o☆ 觉得好用?来一同完善本项目吧~ 欢迎提交
拉取请求为本项目做贡献~
v1.1.5 (测试版,非最终品质)
秋风起兮白云飞,草木黄落兮雁南归。🍁
本次为「抽屉化更新日志」与「多网盘扩展」专项版本:
🧭 更新日志改版(抽屉收纳)
1、重构 - 更新日志改为「抽屉(手风琴)」结构,一个版本一个版本独立收纳;
2、交互 - 默认只展开最新一个版本,其余全部收起,点击版本号即可展开/收起;
3、体验 - 新增「最新」徽标与展开箭头,长历史不再一屏铺满。
☁️ 适配更多网盘(通用外链嗅探 + 域名扩展)
4、新增 - 通用外链/直链嗅探兜底适配器,自动识别页面中的真实下载直链;
5、适配 - 新增蓝奏云、坚果云、腾讯微云、奶牛快传、文叔叔、OneDrive / Google Drive 分享页等主流网盘域名;
6、适配 - 脚本现可运行于市面上绝大多数网盘分享页,未内置专属适配的网盘将自动走嗅探兜底。
🐛 BUG 修复
7、修复 - 当前域名未匹配任何网盘时 temp.main 为空导致初始化报错(增加容错);
8、修复 - 重复执行检测在未挂载点时的误判,避免多 iframe 场景重复注入;
9、修复 - 更新弹窗在极长更新日志下的滚动与样式溢出问题。
v1.1.4 (测试版,非最终品质)
残暑未消风先快,一叶轻舟过万重。🍂🥮
告别了繁杂与沉闷,LinkSwift 带来以下更新:
1、新增 - 支持光鸭云盘;
2、适配 - 变来变去的 123 云盘;
3、优化 - 网络请求头标准化;
4、优化 - 调样式,改类名,优逻辑;
5、优化 - 使用 eslint 处理与检查脚本代码问题;
6、优化 - 夸克网盘 Cookie 传递;
(感谢 kwkvh 提供的想法)
7、修复 - 迅雷云盘样式调整导致脚本弹窗异常变大;
8、修复 - 推送到 ABDM 下载器实际成功却显示失败。
v1.1.3
爆竹声中一岁除,春风送暖入屠苏。🧨🎆
开发者在此祝您新春快乐!LinkSwift 迎来功能更新:
1、新增 - IDM 客户端设置;
2、优化 - 链接缓存、浮动提示框;
3、适配 - 百度网盘分享页。
v1.1.2.1
1、新增 - API 下载的推送到 IDM 功能;
(感谢 Night Stars 的帮助)
2、修复 - 复制 Aria2、cURL 命令行错误。
v1.1.2
1、适配 - 123 云盘新策略;
2、适配 - 夸克、UC 网盘分享页;
3、新增 - 增强下载的多块多线程支持;
4、优化 - 页面绿化的部分匹配规则;
5、优化 - 增强下载进度条样式。
v1.1.1.9
v1.1.1.8
v1.1.1.7
1、修复 - 缺失声明 @connect 导致的问题。
v1.1.1.6
1、废弃 - 百度网盘 BDUSS Cookie 相关代码,转向使用更安全的 AccessToken;
2、废弃 - 百度网盘分享页面下载相关代码;
3、优化 - 下载窗口可在设置改变后动态修改界面。
v1.1.1.5
1、新增 - AB Download Manager 下载方式;
2、优化 - 支持从设置页面一键返回下载窗口,无需重复获取链接。
v1.1.1.4
v1.1.1.3
1、修复夸克网盘无法获取下载地址的 Bug;
2、修复 API 下载无法复制全部链接。
v1.1.1.2
v1.1.1.1
1、修复推送至 Aria2 时推送成功但报错的 Bug。
v1.1.1
1、配置文件格式更新,支持添加、删除、切换多个服务配置;
2、支持比特彗星推送下载,原 RPC 已并入 Aria2 下载;
3、界面增加 Font Awesome 图标!更好看啦;
4、优化脚本代码、界面,运行更轻快;
5、修复上个版本遗存的问题。
v1.1.0.1
v1.1.0
1、支持 UC 网盘、123 云盘;
2、改进了网盘主题的注入方式;
3、聚合并重构了部分重复函数,对整体脚本逻辑进行了梳理和精简;
4、将脚本执行阶段从 document-body 适配为 document-start。
v1.0.9.7
1、修复移动云盘下载错误;
2、优化代码,更好的错误识别;
3、去除了油小猴云服务。
v1.0.9.6
1、支持在百度网盘中选择文件夹下载;
2、优化部分提示。
v1.0.9.5
v1.0.9.4
1、修复因百度网盘 AccessToken 过期导致无法获取链接的 Bug。
v1.0.9.3
1、若网盘不支持在分享中下载,将仅显示保存网盘按钮;
2、优化下载界面,支持选择 Iframe 或 Blob 的方式来下载文件,增加按钮的提示文本;
3、优化 CSS 样式,统一了 SweetAlert2 按钮样式,同时适配了 Dark Reader 插件,界面更协调;
4、支持修改油小猴网站主题色;
5、原有主题相关设置现已移动至助手美化页面中。
v1.0.9.2
1、修复使用API 下载时有可能会导致IDM无限弹窗的Bug。
v1.0.9.1
1、修复在百度网盘旧版下脚本无法删除元素的Bug。
v1.0.9
1、跟进官方V6.2.7,修复因无法进行百度授权而导致获取直链报错 9019 的 Bug。
v1.0.8.9
1、跟进官方V6.2.3,优化保存到网盘提示,修复阿里云盘、移动云盘失效的问题;
2、优化修改网盘主题的代码,减少对页面的破坏。
v1.0.8.8
v1.0.8.7
1、修复在阿里云盘分享页面下点击“未点亮”按钮时没有任何反应的Bug;
2、更新并优化网盘界面精简规则;
3、支持更换 百度网盘、阿里云盘、迅雷云盘、夸克网盘、移动云盘 界面的主题颜色。
v1.0.8.6
1、新增移动云盘会员中心页面,可在网盘中点击“会员中心”按钮查看(但无法使用第三方支付)。
v1.0.8.5
1、跟进官方V6.1.6,修复迅雷网盘分享页面无法选中文件,修复移动云盘无法判断页面。
v1.0.8.4
1、修复因重复绑定按钮而导致命令重复执行的Bug;
2、优化调试信息界面排版;
3、移除对百度网盘手机网页版的支持。
v1.0.8.3
v1.0.8.2
v1.0.8.1
1、修复因重复绑定按钮而导致 RPC 下载会发送多条下载请求的Bug;
2、选择不使用油小猴服务器时,“用ghproxy连接Github仓库”更换为“用jsdelivr连接Github仓库”;
3、跟进官方V6.1.4版本,修复移动网盘无法获取链接,支持阿里云盘新域名alipan.com。
v1.0.8
v1.0.7.9
1、更新精简网盘元素匹配规则,防止因通知横条而导致不能点到“API 下载”以下的按钮。
v1.0.7.8
1、跟进官方V6.1.2,加入V2接口。
2、修复百度网盘下载时因为获取不到accessToken而一直转圈。
v1.0.7.7
1、修复百度网盘的按钮会因为主题不同而被改变颜色的Bug;
2、更新夸克网盘按钮与界面。
v1.0.7.6
1、修复“注入”功能;
2、黑暗模式支持随设置热切换。
v1.0.7.5
1、修复阿里云盘下载逻辑;
2、精简代码;
3、支持深色模式;
4、修改部分提示文本;
5、修改部分CSS;
6、设置可测试RPC连接。
v1.0.7.4
1、优化下载逻辑;
2、修复阿里云盘无法使用API 下载。
v1.0.7.3
1、如果出现网络请求错误时支持自动重新请求;
2、可选择是否使用油小猴服务器。
v1.0.7.2
1、修复使用 RPC 下载时会重复发送链接的Bug。
v1.0.7.1
[实验功能,不影响正常使用]支持百度网盘手机网页版,勾选文件后可在顶栏找到“下载助手”按钮。
v1.0.7
v1.0.6.9
v1.0.6.8
v1.0.6.7
1、将百度网盘界面修改为主题色,可在设置选择是否修改;
2、增加主题色名称,更改部分内容颜色;
3、移动云盘API 下载支持批量复制;
4、优化控制台输出结果;
5、百度网盘API 下载不使用IDM时可以显示剩余时间;
6、“取消点亮按钮”按钮的位置现已移动到设置页面。
7、homo特有的彩蛋又回来力(喜)。
v1.0.6.6
v1.0.6.5
1、修复即使输入正确暗号也不能成功点亮按钮的服务器错误。
v1.0.6.4
1、跟进官方V6.1.1版本,修复阿里云盘获取下载地址时的问题。
v1.0.6.3
1、照顾小屏幕用户,将始终显示复制全部链接的按钮;
2、增加取消下载时的动画。
v1.0.6.2
1、修复部分界面错位,实现CSS内置;
2、百度网盘界面将变得更加简洁。
v1.0.6.1
1、新增百度云盘API 下载支持复制链接;
2、为了照顾手机浏览器用户,增大项目之间间隙,新增隐藏IDM提示选项,可在助手设置中启用;
3、修改CSS,界面会出现更多的主题色;
4、支持在油小猴官网查看暗号;
5、修复部分语法错误。
v1.0.6
1、修复了打开阿里云盘分享连接时因下载移动端广告导致只能点击 API 下载;
2、跟进官方6.0.4版本,修复夸克网盘获取下载地址失效、支持移动云盘。
v1.0.5.5
1、感谢Night Stars的帮助,修复因为原作者服务器导致的初始化暗号识别错误;
2、修改一些文本以及提供给服务器的信息。
v1.0.5.4
1、小修小改css,让主题色出现在更多地方;
2、修改下载地址获取失败的提示;
3、增加更多的主题色,可在助手设置查看;
4、homo彩蛋被删去力(悲)。
v1.0.5.3
v1.0.5.2
1、增加脚本信息菜单(没有用);
2、优化阿里云盘显示svg图片;
3、修改弹窗按钮颜色。
v1.0.5.1
1、修复在切换按钮主题后夸克网盘不能正常显示按钮。
v1.0.5
1、跟进官方V5.0.4版本;
2、小改动,照着官方版本更正文件名称检测;
3、保留彩蛋,但必须舍弃官方暗号。
v1.0.4
大改!
1、修复了原作者留下的夸克网盘切换文件夹就多一个“下载助手”按钮的大BUG;
2、终于来了,在下载菜单增加“助手设置”“更新日志”按钮;
【再也不用点进油猴管理再进设置了(保留油猴管理内设置)】
3、修改阿里云盘和夸克网盘下载助手按钮样式;
4、增加“取消点亮按钮”油猴菜单;
5、修改部分css,使其与选择的主题更贴切。
v1.0.3
1、增加一个小彩蛋; 提示:
homo(需在未点亮按钮状态触发)
【需要重新恢复按钮为未点亮状态请进入 已安装脚本->编辑->开发者->重置到出厂->确定】
2、修改/增加默认主题色。
v1.0.2
1、修改并加宽界面,调整部分css,使Sweetalert2界面更美观,更与原版相近;
2、修改部分提示文字,使文字更容易复制。
v1.0.1
1、去除更新提示;
2、更新Sweetalert2至11版本;
3、部分CDN节点更换为jsdelivr。
v1.0.0
1、增加“注入”功能(bushi);
2、去除广告。
`,
allowOutsideClick: false,
showCloseButton: true,
confirmButtonText: ` 我已阅`,
});
},
/**
* 创建浮动指示框
* @description 一个究极好用的指示框,支持监听元素悬停事件动态改变位置,亦能显示文件名与大小
* @author 油小猴
* @author hmjz100
* @fires .${mount}.tip - 鼠标移动事件触发指示框定位
* @see {@link temp.color} 使用全局主题色渲染文件大小信息
*/
createTip() {
let tooltip = document.querySelector(`.${mount}.tooltip`);
let ticking = false; // 用于 rAF 节流
let currentTarget = null;
// 更新位置
const updatePosition = (x, y) => {
if (!tooltip) return;
let X = x + 10;
let Y = y + 20;
const clientWidth = document.documentElement.clientWidth;
const clientHeight = document.documentElement.clientHeight;
const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (X + tooltip.offsetWidth > clientWidth + scrollLeft) {
X = clientWidth + scrollLeft - tooltip.offsetWidth;
}
if (X < scrollLeft) {
X = scrollLeft;
}
if (Y + tooltip.offsetHeight > clientHeight + scrollTop) {
Y = clientHeight + scrollTop - tooltip.offsetHeight;
}
if (Y < scrollTop) {
Y = scrollTop;
}
// 使用 translate3d 的性能远高于 top/left,它不触发布局计算,还拥有 GPU 加速
tooltip.style.transform = `translate3d(${X}px, ${Y}px, 0)`;
};
// 内容渲染
const renderContent = (target) => {
const { title, } = target.dataset;
let html, dual = false;
if (title) {
html = `${title}`;
} else {
const nameEl = target.querySelector(".name");
const sizeEl = target.querySelector(".size");
const name = nameEl ? nameEl.textContent : "";
const sizeText = sizeEl ? sizeEl.textContent : "";
html = `${name}`;
if (sizeText) {
dual = true;
html += `${sizeText}`;
}
}
if (!tooltip) {
tooltip = document.createElement("div");
tooltip.className = "pl-tooltip";
tooltip.style.position = "absolute";
tooltip.style.willChange = "transform"; // 告知浏览器提前准备层合成
tooltip.style.pointerEvents = "none"; // 防止指示框挡住鼠标导致抖动
temp.mount[0].appendChild(tooltip);
}
if (dual) {
tooltip.classList.add("dual");
} else {
tooltip.classList.remove("dual");
}
tooltip.innerHTML = html;
tooltip.style.display = "flex";
};
// 事件处理
const handleMove = (e) => {
if (!currentTarget) return;
// 获取坐标,PointerEvent 统一了 clientX/Y
const x = e.pageX;
const y = e.pageY;
if (!ticking) {
// 使用 requestAnimationFrame 节流,确保每帧只更新一次位置
requestAnimationFrame(() => {
updatePosition(x, y);
ticking = false;
});
ticking = true;
}
};
const handleOver = (e) => {
const target = e.target.closest(`.${mount}.tip`);
if (!target) return;
currentTarget = target;
renderContent(target);
updatePosition(e.pageX, e.pageY);
};
const handleOut = (e) => {
// 只有离开到非 tooltip/${mount}.tip 区域才隐藏
const related = e.relatedTarget;
if (!related || !related.closest(`.${mount}.tip, .${mount}.tooltip`)) {
currentTarget = null;
if (tooltip) tooltip.style.display = "none";
}
};
// 事件监听
document.addEventListener("pointerover", handleOver);
document.addEventListener("pointermove", handleMove, { passive: true }); // 使用 passive: true 提升滚动性能
document.addEventListener("pointerout", handleOut);
},
/**
* 创建加载状态弹窗
* @author 油小猴
* @description 生成包含旋转动画的加载容器
*/
createLoading() {
return $(``);
},
/**
* 获取镜像列表
* @author 油小猴
* @description 根据原始地址和镜像域名列表生成多个镜像地址,支持多线程下载。
* 每个镜像地址会根据 thread 参数生成多个重复地址(通过添加 `&` 符号区分)。
* @param {String} link - 原始下载地址
* @param {Array} mirror - 镜像域名数组
* @param {Number} [thread=2] - 每个镜像生成的线程数(地址重复次数),默认为 2
* @returns {String} 所有镜像地址组成的字符串,每行一个地址
*
* @example
* getMirrorList("https://example.com/file.zip", ["mirror1.com", "mirror2.com"], 2)
* // 返回:
* // https://mirror1.com/file.zip
* // https://mirror1.com/file.zip&
* // https://mirror2.com/file.zip
* // https://mirror2.com/file.zip&
*/
getMirrorList(link, mirror, thread = 2) {
try {
const host = new URL(link).host;
const mirrors = [];
for (let i = 0; i < mirror.length; i++) {
for (let j = 0; j < thread; j++) {
const item = link.replace(host, mirror[i]) + "&".repeat(j);
mirrors.push(item);
}
}
return mirrors.join("\n");
} catch {
return undefined
}
},
/**
* 添加页面元素监听
* @author 油小猴
* @author hmjz100
* @description 详见代码
*/
addPageListener() {
$doc.on("click", `.${mount}[action="settings"][type]`, async (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const type = target.attr("type");
if (!type) base.showSetting(target);
switch (type) {
case "idm": base.showIDMSetting(target); break;
case "curl": base.showSetting(target); break;
case "aria2": base.showAria2Setting(target); break;
case "bitcomet": base.showBitcometSetting(target); break;
case "abdm": base.showABDMSetting(target); break;
default: break;
}
});
$doc.on("change", ".listener-rpc-select", async (e) => {
const target = $(e.currentTarget);
const selectedIndex = target.val();
const type = target.data("type");
const list = base.getValue(`setting_${type}_rpc`);
if (selectedIndex === "new") {
return $(".listener-rpc-input").val("");
} else if (list[selectedIndex]) {
list.forEach(item => {
if (item.default) delete item.default;
});
list[selectedIndex].default = true;
base.setValue(`setting_${type}_rpc`, list);
$(".listener-rpc-input").each((_, input) => {
const type = $(input).data("type").split(".")[1];
$(input).val(list[selectedIndex][type] || "");
});
}
});
$doc.on("input", ".listener-rpc-input", async (e) => {
const target = $(e.currentTarget);
let type = target.data("type");
if (!type) return;
type = type.split(".")
const list = base.getValue(`setting_${type[0]}_rpc`);
const value = target.val();
let selectedIndex = $(".listener-rpc-select option:selected").val();
if (selectedIndex === "new") {
list.forEach((item) => {
if (item.default) delete item.default;
});
list.push({
domain: "",
port: "",
path: "",
default: true
});
base.setValue(`setting_${type[0]}_rpc`, list);
selectedIndex = list.length - 1
}
list[selectedIndex][type[1]] = value;
base.setValue(`setting_${type[0]}_rpc`, list)
const select = $(".listener-rpc-select");
let options;
if (type[0] === "idm") {
options = list.map((item, index) => {
return ``;
}).join("")
} else {
options = list.map((item, index) => {
return ``;
}).join("")
};
select.html(`${options}`);
});
$doc.on("click", ".listener-rpc-delete", async (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const type = target.data("type");
let list = base.getValue(`setting_${type}_rpc`);
const selectedIndex = parseInt($(".listener-rpc-select option:selected").val(), 10);
if (selectedIndex === "new" || !confirm("您确定要删除此项目吗?")) return;
list = list.filter((_, i) => i !== selectedIndex);
if (list.length === 0) return alert("至少保留一个配置");
const newDefaultIndex = selectedIndex === 0 ? 0 : selectedIndex - 1;
list[newDefaultIndex].default = true;
base.setValue(`setting_${type}_rpc`, list);
const select = $(".listener-rpc-select");
const options = list.map((item, index) => {
return ``;
}).join("");
select.html(`${options}`);
$(".listener-rpc-input").each((_, input) => {
const key = $(input).data("type").split(".")[1];
$(input).val(list[newDefaultIndex][key] || "");
});
});
$doc.on("click", ".listener-rpc-test", async (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const type = target.data("type");
const selectedIndex = $(".listener-rpc-select option:selected").val();
const list = base.getValue(`setting_${type}_rpc`);
const text = target.find("span");
const originalHtml = text.html();
if (selectedIndex === "new" || target.data("testing") === "true") return;
if (list[selectedIndex]) {
target.data("testing", "true");
text.html("等待");
target.css({ "opacity": "0.9" });
const selected = list.find(i => i.default);
let result = "fail"
if (type === "aria2") {
const domain = selected.domain,
port = selected.port,
path = selected.path,
token = selected.token;
result = await base.testConnectToAria2(domain, port, path, token);
} else if (type === "abdm") {
const domain = selected.domain,
port = selected.port;
result = await base.testConnectToABDM(domain, port);
}
if (result === "success") {
text.html("成功");
target.css({ "background-color": "#52c41a" });
} else {
text.html("失败");
target.css({ "background-color": "#cb1616" });
}
target.css({ "opacity": "" });
await base.sleep(3000);
target.data("testing", "false");
text.html(originalHtml);
target.css({ "background-color": "" });
}
});
$doc.on("click", ".listener-open-setting", (e) => {
base.showSetting(e);
});
$doc.on("click", ".listener-open-idm-setting", (e) => {
base.showIDMSetting(e);
});
$doc.on("click", ".listener-open-aria2-setting", (e) => {
base.showAria2Setting(e);
});
$doc.on("click", ".listener-open-bitcomet-setting", (e) => {
base.showBitcometSetting(e);
});
$doc.on("click", ".listener-open-abdm-setting", (e) => {
base.showABDMSetting(e);
});
$doc.on("click", ".listener-open-updatelog", () => {
base.showUpdate();
});
$doc.on("click", ".listener-open-beautify", () => {
base.showBeautify();
});
$doc.on("click", ".listener-unregister", async (e) => {
e.preventDefault();
message.warning("正在“注入”设置项目...");
const list = base.getValue("setting_init");
delete list.code;
delete list.license;
base.setValue("setting_init", list);
base.delValue("baidu_access_token");
base.delValue("quark_social_token");
location.reload();
});
$doc.on("change", ".listener-terminal", async (e) => {
base.setValue("setting_curl_terminal", e.currentTarget.value);
});
$doc.on("click", ".listener-color", async (e) => {
const target = $(e.currentTarget).closest(".listener-color").length > 0 ? $(e.currentTarget).closest(".listener-color") : $(e.currentTarget);
const parent = target.closest(".pl-color");
const mask = target.find(".mask");
const color = target.data("color");
if (color && parent.length > 0 && mask.length > 0) {
parent.find(".this").remove();
mask.append(``);
const list = base.getValue("setting_ui_theme")
list.color = color;
base.setValue("setting_ui_theme", list);
base.addPanLinkerStyle();
}
});
$doc.on("change", ".listener-theme", async (e) => {
const list = base.getValue("setting_ui_theme");
list.custom[e.currentTarget.dataset.type] = e.currentTarget.checked;
base.setValue("setting_ui_theme", list);
});
$doc.on("click", ".pl-button-mode", async (e) => {
temp.mode = e.currentTarget.dataset.mode;
console.info(e, temp, base.isType(temp.main?.getLink));
if (!temp.mode) return;
if (!base.isType(temp.main?.getLink).includes("function")) return;
Swal.fire({
...temp.swalDefault,
showConfirmButton: false,
allowOutsideClick: false,
allowEscapeKey: false,
allowEnterKey: false,
title: "获取中",
html: `...`,
footer: "如果选的文件较多,请耐心等待获取完成哦!",
customClass: {
popup: "loading-popup",
header: "loading-header",
title: "loading-title",
content: "loading-content",
input: "loading-input",
footer: "loading-footer"
},
willOpen: async () => {
Swal.showLoading();
await temp.main.getLink().catch(e => {
// 错误信息和堆栈
let msg = (e instanceof Error) ? e.message : String(e || "未知错误");
let displayMsg = msg;
// 如果已经包含格式化字符,则直接使用,否则补全格式
if (!msg.includes(":
")) {
msg = displayMsg = `非常规错误:
${msg}`;
displayMsg += `
请截图控制台的报错内容,向开发者反馈。`
};
message.error(displayMsg);
const consoleMsg = msg.replaceAll(":
", ":").replaceAll("
", " ");
const consoleStack = (e instanceof Error && e.stack) ? e.stack?.split?.('\n')?.slice?.(1)?.join?.('\n') : "无堆栈信息";
base.console.error(`【LinkSwift】Error\n${consoleMsg}\n堆栈:\n${consoleStack}`);
return;
});
},
});
});
},
/**
* 创建基础样式
* @author 油小猴
* @author hmjz100
* @description 为组件添加默认的公共样式,包括浅色和深色模式适配样式。
*/
addPanLinkerStyle() {
temp.color = base.getValue("setting_ui_theme").color;
// 主题色变更时,重置 colored 标志,以便 adaptiveThemeOverride 中的 link/style 观察者
// 能以新的 colorMap 重建,避免持有旧 colorMap 闭包与 temp.color 不一致导致的反馈循环与内存泄漏
temp.colored = false;
if ("beautifyPage" in temp.main) temp.main.beautifyPage();
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", `
.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}
.swal2-timer-progress-bar{width:100%;height:.25em;border:1px #ffffff33 solid;border-radius:50px;background:var(--pl-c) }
.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:var(--pl-c);color:#FFF;line-height:2em;text-align:center}
.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:var(--pl-c) }
.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:var(--pl-c)}
.swal2-html-container{padding:1em 1.6em 0.3em;margin:0}
.swal2-close,div:where(.swal2-container) button:where(.swal2-close){font-family:inherit;line-height:0;position:absolute;top:10px;right:10px;border-radius:50em;transition:all.2s}
.swal2-close:hover,div:where(.swal2-container) button:where(.swal2-close):hover{color:#fff;background-color:${temp.color};font-size:60px;}
.swal2-popup.swal2-toast .swal2-close,div:where(.swal2-container) .swal2-toast button:where(.swal2-close){background-color:transparent;font-size:2em}
.swal2-popup,div:where(.swal2-container) div:where(.swal2-popup){overflow:hidden}
@media (prefers-color-scheme:light){
.swal2-popup,div:where(.swal2-container) div:where(.swal2-popup){color:#1D1D1F;background:#F5F5F7}
.swal2-footer,div:where(.swal2-container) .swal2-footer{color:#0000008F}
}
@media (prefers-color-scheme:dark){
.swal2-popup,div:where(.swal2-container) div:where(.swal2-popup){color:#F5F5F7;background:#1D1D1F}
.swal2-footer,div:where(.swal2-container) .swal2-footer{color:#FFFFFFEB}
}
div:where(.swal2-container) img:where(.swal2-banner) {max-width:100%;width:100%;margin:0!important;cursor:initial}
div:where(.swal2-container) button,
div:where(.swal2-container) input,
div:where(.swal2-container) keygen,
div:where(.swal2-container) optgroup,
div:where(.swal2-container) select,
div:where(.swal2-container) textarea {
font-family: inherit;
line-height: normal;
}
.swal2-styled{display:flex;justify-content:center;align-items:center;gap:5px}
.swal2-styled[style*="inline-block"]{display:inline-flex!important}
.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,
div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm),
div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny),
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;width:auto;max-width:100%;word-break:break-all}
.swal2-popup.swal2-toast,div:where(.swal2-container) div:where(.swal2-toast){width:auto!important;grid-template-columns:1fr auto 1fr}
.swal2-popup,div:where(.swal2-container) div:where(.swal2-popup){padding-bottom:1em;border-radius:10px}
.swal2-title,div:where(.swal2-container) h2:where(.swal2-title){height:auto}
.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-footer p,div:where(.swal2-container) div:where(.swal2-footer) p{margin:0;padding:0}
.swal2-icon-content,div:where(.swal2-icon) .swal2-icon-content{font-family:unset;line-height:normal}
div:where(.swal2-icon) .swal2-icon-content {position:relative;top:-0.025em;font-variant-emoji:text!important}
.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,
div:where(.swal2-container) input:where(.swal2-input):focus-visible,
div:where(.swal2-container) input:where(.swal2-file):focus,
div:where(.swal2-container) input:where(.swal2-file):focus-visible,
div:where(.swal2-container) input:where(.swal2-select):focus,
div:where(.swal2-container) input:where(.swal2-select):focus-visible,
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}
div:where(.swal2-container){font:500 24px/normal -apple-system,"PingFang SC",Helvetica Neue,Helvetica,STHeiTi,'Source Han Sans SC','Noto Sans CJK SC','HanHei SC','方正兰亭黑_GB18030','方正兰亭黑_GBK',ui-sans-serif,sans-serif,system-ui,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji',emoji}
div:where(.swal2-container) button > span {position:relative;top:-0.025em}
html:has(.swal2-container), html.swal2-shown, body:has(.swal2-container), body.swal2-shown {font-size: unset!important}`);
base.addStyle(`${mount}-main-style`, "style", `
:root {
--pl-c: ${temp.color};
--pl-c: ${temp.color};
--pl-c-0d: ${temp.color}0d;
--pl-c-15: ${temp.color}15;
--pl-c-1f: ${temp.color}1f;
--pl-c-30: ${temp.color}30;
--pl-c-33: ${temp.color}33;
--pl-c-80: ${temp.color}80;
--pl-c-90: ${temp.color}90;
--pl-c-b0: ${temp.color}b0;
--pl-c-d0: ${temp.color}d0;
}
body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) ::-webkit-scrollbar {
width: .6em;
height: .6em
}
body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) ::-webkit-scrollbar-track {
background: #FFF !important;
border-radius: 10px
}
body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) ::-webkit-scrollbar-thumb {
background-color: var(--pl-c-90) !important;
border-radius: 10px !important;
transition: background-color .2s;
will-change: background-color
}
body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) ::-webkit-scrollbar-thumb:hover {
background-color: var(--pl-c-d0) !important
}
@media (prefers-color-scheme:dark) {
body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) ::-webkit-scrollbar-track {
background: #606266 !important
}
}
.pl-popup {
min-width: 70%;
max-width: 95%;
font-size: 12px
}
.pl-header {
display: flex;
align-items: flex-start;
margin: 0 0 10px;
padding: 0 0 5px;
border-bottom: 1px solid #eee
}
.pl-title {
font-size: 18px;
white-space: nowrap;
text-overflow: ellipsis
}
.pl-content {
padding: 0;
font-size: 12px
}
.pl-footer {
display: block;
text-align: center;
font-size: 15px
}
.pl-icon {
display: inline;
align-self: center;
align-items: center;
width: 15px;
height: 15px;
font-size: 18px;
vertical-align: 0;
flex-shrink: 0;
fill: currentColor;
overflow: hidden
}
.pl-a .pl-icon {
display: inline-flex;
vertical-align: baseline;
}
.pl-a {
display: inline;
position: relative;
overflow: hidden;
vertical-align: baseline;
border-bottom: 2px solid var(--pl-c);
color: var(--pl-c);
text-decoration: none !important;
transition: color .3s, opacity .3s;
will-change: color, opacity
}
.pl-a::before {
content: "";
position: absolute;
z-index: -1;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
background-color: var(--pl-c);
transform: scaleY(0);
transform-origin: bottom center;
transition: transform .15s, opacity .3s;
will-change: transform
}
.pl-a:hover,
.pl-a:focus {
color: #FFF
}
.pl-a:hover::before,
.pl-a:focus::before {
transform: scaleY(1)
}
.pl-a:active {
opacity: 0.8;
color: #FFF
}
/* 独立组件 - 下载列表 */
.${mount}.main {
display: flex;
flex-direction: column;
gap: 8px;
min-height: 50px;
max-height: calc(100vh - 300px);
padding: 8px 6px;
overflow: auto;
background: var(--pl-c-15);
border-radius: 10px
}
.${mount}.main > .item {
width: max-content;
min-width: 100%;
flex-shrink: 0;
box-sizing: border-box;
display: flex;
align-items: center;
gap: 10px;
padding: 5px;
background: var(--pl-c-30);
border-radius: 8px
}
.${mount}.main > .item > .name {
flex: 0 0 150px;
min-width: 100px;
overflow: hidden;
text-align: left;
white-space: nowrap;
text-overflow: ellipsis;
cursor: default
}
.${mount}.main > .item > .name > * {
overflow: hidden;
text-align: left;
white-space: nowrap;
text-overflow: ellipsis
}
.${mount}.main > .item > .link {
flex: 1;
cursor: pointer
}
.${mount}.main > .item > a.link {
overflow: hidden;
text-align: left;
white-space: nowrap;
text-overflow: ellipsis;
color: var(--pl-c);
transition: color .15s;
will-change: color
}
.${mount}.main > .item > a.link:hover {
color: #FFF
}
.${mount}.main > .item > .message {
display: flex;
flex: 1;
justify-content: space-between
}
.${mount}.main > .item > .downing {
display: flex;
flex: 1;
min-width: 200px;
align-items: center;
gap: 10px
}
.${mount}.extra {
display: flex;
align-items: center;
gap: 10px;
overflow: auto;
background-color: var(--pl-c-15);
border-radius: 10px
}
.${mount}.extra:has(>*) {
margin-top: 1.25em;
padding: 8px 6px
}
.${mount}.extra>.${mount}.btn[action="all"]:not([type*="idm"],[type*="bitcomet"]),
.${mount}.extra>.${mount}.btn[action="copy"][type*="curl"],
.${mount}.extra>.${mount}.btn[action="copy"][type*="bitcomet"] {
flex: 1
}
.${mount}.extra:not(:has(>.${mount}.btn[action="all"], >.${mount}.btn[action="copy"][type*="curl"], >.${mount}.btn[action="copy"][type*="bitcomet"]))>* {
flex: 1
}
/* 独立组件 - 进度条 */
.${mount}.progress-bar {
display: flex;
flex: 1;
min-width: 120px;
position: relative;
height: 33px;
overflow: hidden;
border-radius: 50px;
background-color: #ebebeb;
color: #333
}
@media (prefers-color-scheme:dark) {
.${mount}.progress-bar {
background-color: #808080;
color: #FFF
}
}
.${mount}.progress-bar > .foreground,
.${mount}.progress-bar > .background {
display: flex;
position: absolute;
top: 0;
left: 0;
align-items: center;
justify-content: space-around;
height: 100%;
width: var(--width, 0);
transition: width .4s linear;
will-change: width
}
.${mount}.progress-bar > .foreground {
z-index: 2;
overflow: hidden;
border-radius: 50px;
background-color: var(--pl-c);
background-image: linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);
background-size: 3vh 3vh;
-webkit-animation: 1s linear reverse infinite progress-bar-stripes;
animation: 1s linear reverse infinite progress-bar-stripes;
color: #FFF
}
.${mount}.progress-bar > .background {
z-index: 1;
overflow: visible;
background-color: transparent
}
@-webkit-keyframes progress-bar-stripes {
from { background-position: 3vh 0 }
to { background-position: 0 0 }
}
@keyframes progress-bar-stripes {
from { background-position: 3vh 0 }
to { background-position: 0 0 }
}
.${mount}.progress-bar > .foreground > .text,
.${mount}.progress-bar > .background > .text {
padding: 0 13px;
font-size: 12px;
font-weight: 500;
line-height: 1;
white-space: nowrap
}
/* 独立组件 - 按钮 */
.${mount}.btn {
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
padding: 0.3125em 0.55em;
border: 0;
border-radius: 50px;
outline: none;
background: var(--pl-c);
color: #FFF !important;
font-size: 1.125em;
white-space: nowrap;
word-break: keep-all;
cursor: pointer;
transition: opacity .2s, box-shadow .2s;
will-change: opacity, box-shadow
}
.${mount}.btn.mini { font-size: 12px; padding: 0.625em 1.1em }
.${mount}.btn:hover { opacity: 0.8 }
.${mount}.btn:focus { box-shadow: 0 0 0 3px var(--pl-c-80) }
.${mount}.btn.success { background: #55af28 }
.${mount}.btn.success:focus { box-shadow: 0 0 0 3px #55af2880 }
.${mount}.btn.info { background: #606266 }
.${mount}.btn.info:focus { box-shadow: 0 0 0 3px #60626680 }
.${mount}.btn.warning { background: #da9328 }
.${mount}.btn.warning:focus { box-shadow: 0 0 0 3px #da932880 }
.${mount}.btn.danger { background: #cc3235 }
.${mount}.btn.danger:focus { box-shadow: 0 0 0 3px #cc323580 }
.${mount}.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 }
}
/* 独立组件 - 设置项目 */
.${mount}.setting-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-top: 1em
}
/* 左侧标题 */
.${mount}.setting-item > *:nth-child(1) {
flex-shrink: 0;
white-space: nowrap;
}
/* 右侧内容 */
.${mount}.setting-item>*:nth-child(2) {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
max-width: 80%;
box-sizing: border-box;
}
.${mount}.setting-item>.left:nth-child(2) {
justify-content: flex-start;
}
.${mount}.setting-item>.right:nth-child(2) {
justify-content: flex-end;
}
/* 当第二位是容器或输入框/选择框 */
.${mount}.setting-item > div:nth-child(2),
.${mount}.setting-item > input:nth-child(2):not([type="checkbox"]),
.${mount}.setting-item > select:nth-child(2) {
flex: 1;
width: 100%;
min-width: 0;
}
/* 当第二位是单个按钮、链接等操作元素 */
.${mount}.setting-item > button:nth-child(2),
.${mount}.setting-item > a:nth-child(2),
.${mount}.setting-item > .btn:nth-child(2) {
flex: 0 0 auto; /* 不放大、不缩小,保持原大小 */
width: fit-content; /* 适应自身宽度 */
white-space: nowrap; /* 防止文字折行 */
}
/* 当第二位是容器组合:内部有输入框/选择框 */
.${mount}.setting-item > div:nth-child(2) > select,
.${mount}.setting-item > div:nth-child(2) > input:not([type="checkbox"]) {
flex: 1;
min-width: 0; /* 允许缩小,触发 ellipsis 省略号 */
}
/* 当第二位是容器组合,内部有按钮 */
.${mount}.setting-item > div:nth-child(2) > button,
.${mount}.setting-item > div:nth-child(2) > a,
.${mount}.setting-item > div:nth-child(2) > .btn {
flex: 0 0 auto; /* 不放大、不缩小,保持原大小 */
white-space: nowrap; /* 防止文字折行 */
}
/* 嵌套子设置项防样式污染 */
.${mount}.setting-item .${mount}.setting-item {
margin: 0;
gap: 5px
}
/* ----------====================---------- */
.pl-button,
.pl-dropdown-menu {
transition: all .2s
}
.pl-button {
position: relative
}
.pl-button .pl-dropdown-menu {
opacity: 0;
transform: scaleY(0);
transform-origin: top;
pointer-events: none;
transition: opacity 0.2s cubic-bezier(0.755, 0.05, 0.855, 0.06), transform 0.2s cubic-bezier(0.755, 0.05, 0.855, 0.06); /* Ant Design */
will-change: transform, opacity;
}
.pl-button .pl-dropdown-menu.reverse {
opacity: 0;
transform: scaleY(0);
transform-origin: bottom;
pointer-events: none;
transition: opacity 0.2s cubic-bezier(0.755, 0.05, 0.855, 0.06), transform 0.2s cubic-bezier(0.755, 0.05, 0.855, 0.06); /* Ant Design */
will-change: transform, opacity;
}
.pl-button:hover .pl-dropdown-menu {
opacity: 1;
transform: scaleY(1);
pointer-events: auto;
transition: opacity 0.2s cubic-bezier(0.23, 1, 0.32, 1), transform 0.2s cubic-bezier(0.23, 1, 0.32, 1); /* Ant Design */
}
.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;
z-index: 999;
min-width: 110px;
padding: 5px 0;
border: none;
border-radius: 5px;
color: #1D1D1F;
background: #F5F5F7;
box-shadow: 0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px var(--pl-c-1f, rgba(0, 0, 0, 0.12)), 0 9px 28px 8px var(--pl-c-0d, rgba(0, 0, 0, 0.05)); /* Ant Design */
-webkit-box-shadow: 0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px var(--pl-c-1f, rgba(0, 0, 0, 0.12)), 0 9px 28px 8px var(--pl-c-0d, rgba(0, 0, 0, 0.05)); /* Ant Design */
text-align: center
}
@media (prefers-color-scheme:dark) {
.pl-dropdown-menu {
color: #F5F5F7;
background: #282829
}
}
.pl-button-mode {
display: flex!important;
align-items: center;
justify-content: flex-start;
gap: 5px;
height: 30px;
padding: 0 10px !important;
background-color: transparent;
color: inherit !important;
white-space: nowrap;
cursor: pointer;
font: 500 12px/normal -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans SC','Noto Sans',ui-sans-serif,sans-serif,system-ui,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji',emoji !important;
transition: background-color .2s;
will-change: background-color
}
@media (prefers-color-scheme:dark) {
.pl-dropdown-menu .pl-button-mode {
color: #F5F5F7 !important
}
}
.pl-button-mode:hover {
color: var(--pl-c) !important;
background-color: var(--pl-c-33) !important
}
@media (prefers-color-scheme:dark) {
.pl-button-mode:hover {
color: #F5F5F7 !important;
background-color: var(--pl-c) !important
}
}
header[style="display:none;"]~.pl-button {
display: inline-block;
position: fixed;
z-index: 99999;
top: 0.6em;
left: 65%
}
.color-button {
display: inline-flex;
border: 1px solid var(--pl-c) !important;
border-color: var(--pl-c) !important;
background: var(--pl-c) !important;
transition: background .2s, border-color .2s;
will-change: background, border-color
}
.color-button:hover {
border-color: var(--pl-c) !important;
background: var(--pl-c-b0) !important
}
.ali-button {
display: flex;
position: relative;
align-items: center;
justify-content: center;
height: 32px;
margin-left: 20px;
padding: 8px 16px;
border: 0 solid transparent;
border-radius: 100px;
background: var(--pl-c);
color: var(--basic_white);
font-size: 14px;
cursor: pointer;
transition: background .2s;
will-change: background
}
.ali-button:hover {
background: var(--pl-c-d0)
}
.ali-btn-icon {
vertical-align: -0.2em
}
.mcloud-button {
float: left;
position: relative;
margin: 20px 24px 20px 0;
width: 110px;
height: 36px;
background: var(--pl-c);
border-radius: 2px;
color: #FFF;
font-size: 14px;
line-height: 39px;
text-align: center;
cursor: pointer;
will-change: background
}
.mcloud-button:hover {
background: var(--pl-c-b0)
}
.mcloud-share-button {
display: inline-block;
position: relative;
height: 36px;
padding: 0 24px;
border: 1px solid var(--pl-c);
border-radius: 2px;
background: var(--pl-c);
color: #FFF;
font-size: 14px;
line-height: 36px;
text-align: center;
will-change: background
}
.mcloud-share-button:hover {
background: var(--pl-c-b0)
}
.mcloud-btn {
display: inline-block;
height: 20px;
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAGNQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////mkUNoAAAACF0Uk5TAAbHPP9AMRtr9PwrV8zqXfmNgDODHTLD4iJxhGJJ8Z269m0aDgAAAMZJREFUeJzd0ssOgyAQBVDUK74rWq0PFP3/ryxqTMdGqJtuvGHD5CTDTGDs3nFc17kEPcC7BH3At/Tjvk5AYbBU+NcrwghL4uQDk3gtRSF1KWCCQEpghkd+3jp/ICNQoDANU0AQCJQmWAJ3h8+q3mFdvSywQdttsGvRWGAPLReoHXrbG6WWAzBoJ+3DaCnWI39NLbcvszvLeuTB2fYoqbNBNo7sGjzk31BhMsEJitxmiKk8zSQwE8gFjBGcNuCzOmdqPrib5A2JRQ7qK9g+hQAAAABJRU5ErkJggg==") no-repeat;
background-size: 20px 20px;
text-indent: 25px;
line-height: 20px
}
.tcloud-button {
position: relative;
height: 30px;
margin-right: 12px;
padding: 0 12px;
border: 1px solid var(--pl-c);
background: var(--pl-c);
color: #FFF;
font-size: 12px;
line-height: 28px;
cursor: pointer;
will-change: background, border-color
}
.tcloud-button:hover {
border-color: var(--pl-c-b0);
background: var(--pl-c-b0)
}
.xunlei-button {
display: inline-flex;
position: relative;
align-items: center;
justify-content: center;
width: fit-content;
height: 36px;
margin-left: 12px;
padding: 0px 12px;
border: 0 solid transparent;
border-radius: 5px;
background: var(--pl-c);
box-shadow: 0 0 0 0 transparent;
color: #FFF;
font-size: 14px;
line-height: 1.5;
white-space: nowrap;
outline: 0;
cursor: pointer;
touch-action: manipulation;
transition: background .2s, color .2s, border .2s, box-shadow .2s;
will-change: background
}
.xunlei-button:hover {
background: var(--pl-c-b0)
}
.guangya-button {
color: #fff;
background-color: var(--pl-c);
}
.guangya-button:hover {
color: #fff !important;
background-color: var(--pl-c-b0) !important
}
.quark-button,
.uc-button {
padding: 0 14px;
background: var(--pl-c) !important;
background-color: var(--pl-c) !important;
will-change: background, background-color
}
.uc-btn-icon {
width: 20px;
height: 20px;
vertical-align: -0.3em
}
.uc-button {
padding: 10px 20px !important
}
.${mount}.input {
margin: 0;
padding: 8px 10px !important;
border: 1px solid #c2c2c2;
border-radius: 5px;
appearance: auto !important;
font-size: 14px !important
}
.center-input {
text-align: center;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif;
font-weight: 300
}
.pl-tooltip {
display: none;
position: absolute;
z-index: 110000;
align-items: center;
max-width: 600px;
border-radius: 5px;
background: #333;
color: #FFF;
font-size: 12px;
line-height: 1.3;
word-break: break-all;
will-change: display, top, left
}
.pl-tooltip>* {
padding: 5px 10px
}
.pl-tooltip.dual>*:first-child {
border: 1px solid;
border-color: #333 transparent #333 #333;
border-radius: 5px 0 0 5px
}
.pl-tooltip.dual>*:last-child {
border: 1px solid;
border-color: #333 #333 #333 transparent;
border-radius: 0 5px 5px 0
}
.pl-loading-box>div>div {
position: absolute;
border-radius: 50%
}
.pl-loading-box>div>div:nth-child(1) {
top: 9px;
left: 9px;
width: 82px;
height: 82px;
background: #FFF
}
@keyframes load {
0% {
transform: rotate(0deg)
}
100% {
transform: rotate(360deg)
}
}
.pl-loading-box>div>div:nth-child(2) {
top: 14px;
left: 38px;
width: 25px;
height: 25px;
background: var(--pl-c);
transform-origin: 12px 36px;
animation: load 1s linear infinite
}
.pl-loading {
display: inline-block;
width: 16px;
height: 16px;
overflow: hidden;
background: none
}
.pl-loading-box {
position: relative;
width: 100%;
height: 100%;
transform: translateZ(0) scale(0.16);
transform-origin: 0 0;
backface-visibility: hidden
}
.pl-loading-box div {
box-sizing: content-box
}
.pl-button-save {
background-color: var(--pl-c) !important;
color: #FFF !important
}
.pl-button-save:hover {
background-color: var(--pl-c-d0) !important;
color: #FFF !important
}
.swal2-container {
z-index: 100000
}
body.swal2-height-auto {
height: inherit
}
[class^="swal2-"],
.${mount}.btn {
transition: all .2s
}
::-webkit-selection {
background-color: var(--pl-c);
color: #FFF
}
::-moz-selection {
background-color: var(--pl-c);
color: #FFF
}
::selection {
background-color: var(--pl-c);
color: #FFF
}
input::-webkit-selection,textarea::-webkit-selection {
background-color: rgba(100,100,100,.4);
color: rgba(0,0,0,.87)
}
input::-moz-selection,textarea::-moz-selection {
background-color: rgba(100,100,100,.4);
color: rgba(0,0,0,.87)
}
input::-moz-selection,textarea::-moz-selection {
background-color: rgba(100,100,100,.4);
color: rgba(0,0,0,.87)
}
input::selection,textarea::selection {
background-color: rgba(100,100,100,.4);
color: rgba(0,0,0,.87)
}
/* 适配(改)百度网盘会员青春版 */
a.downloadSubtitle,
button.downloadSubtitle {
background-color: var(--pl-c);
transition: all .2s
}
a.downloadSubtitle:hover,
button.downloadSubtitle:hover {
background-color: var(--pl-c-d0)
}
a.downloadSubtitle:disabled,
button.downloadSubtitle:disabled {
background-color: var(--pl-c-d0)
}
/* 哪里都没用到的 RGB!
*:not(section,div) {animation: RGB 10s linear infinite}
@keyframes RGB {
0% {
filter: hue-rotate(0deg);
}
100% {
filter: hue-rotate(360deg);
}
} */
`);
},
/**
* 初始化引导弹窗
* @author 油小猴
* @author hmjz100
* @description 显示初始化对话框,引导用户进行配置或跳过流程。
* 支持输入特定数字触发彩蛋,并自动注入默认设置点亮功能。
* @returns {Promise} 弹窗关闭后返回空值,可能触发页面刷新
*/
async showInitDialog() {
const dialog = await Swal.fire({
...temp.swalDefault,
title: `(◍•ᴗ•◍)/ 你好呀`,
html: `
我就直说了吧…
你可以按下下方的 红色按钮 跳过这一有趣的流程
或者继续输入一些神秘的 “恶臭数字”
解锁隐藏(大嘘)彩蛋
如果您喜欢这个脚本的话
请支持原版作者 油小猴
并给此改版点个 Star?
脚本不仅能精简网盘界面
点亮后还能修改多个网盘的主题色哦!
`,
input: "text",
inputAttributes: {
autocapitalize: "off",
placeholder: "输入内容..."
},
customClass: {
input: "center-input"
},
showLoaderOnConfirm: true,
preConfirm: async (code) => {
try {
if (!code?.trim?.()) return Swal.showValidationMessage("错误:提取码不能为空");
code = code.trim();
if (["114514", "1919810", "1145141919810"].includes(code)) return "homo";
return Swal.showValidationMessage(`错误:错误的神秘数字`);
} catch (e) {
return Swal.showValidationMessage(`错误:${e}`);
}
},
showCloseButton: true,
showDenyButton: true,
denyButtonText: ` 懒得输入...我要直接点亮!`,
allowOutsideClick: false,
});
if (dialog.isDenied) {
message.warning("正在“注入”设置项目...");
await base.sleep(2500);
const list = base.getValue("setting_init");
list.code = config.base.num;
list.license = config.base.license;
base.setValue("setting_init", list);
message.success("“注入”成功啦!");
await base.sleep(1500);
location.reload();
};
if (dialog.isConfirmed && dialog.value === "homo") {
// https://pic1.zhimg.com/v2-1b97a088e156c015108dec663bba8b04.avis
await Swal.fire({
...temp.swalDefault,
icon: "error",
title: "1145141919810",
html: "homo特有的数字当然不行啦
哼哼哼啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊",
timer: 4000,
imageUrl: "data:image/png;base64,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",
allowOutsideClick: false,
timerProgressBar: true,
showConfirmButton: false,
showDenyButton: true,
denyButtonText: "哼哼哼啊啊啊啊啊啊啊啊啊啊",
});
message.info("成就:你触发了一个homo特有的彩蛋!");
await base.sleep(4000)
// https://lh1.hetaousercontent.com/img/7d4c1c0b4adb0e95.jpg
Swal.fire({
...temp.swalDefault,
title: "1145141919810",
text: "homo特有的数字当然不行啦...吗?",
icon: "question",
imageUrl: "data:image/jpeg;base64,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",
showConfirmButton: false,
allowOutsideClick: false,
});
await base.sleep(3000)
const list = base.getValue("setting_init");
list.code = config.base.num;
list.license = config.base.license;
base.setValue("setting_init", list);
message.success("成就:哼哼哼啊啊啊啊啊啊啊啊地注入成功(喜)");
await base.sleep(1500)
location.reload();
}
},
/**
* 显示主对话框
* @author 油小猴
* @author hmjz100
* @description 使用 SweetAlert2 显示一个自定义样式的对话框,用于展示信息或操作提示。
* @param {String} title - 对话框标题
* @param {String} html - 对话框内容的 HTML 字符串
* @param {String} footer - 对话框底部说明文字
*/
showMainDialog(title, html, footer) {
Swal.fire({
...temp.swalDefault,
title,
html,
footer: `${footer}${config.base.dom.footer}
`,
customClass: {
popup: "pl-popup",
header: "pl-header",
title: "pl-title",
closeButton: "pl-close",
content: "pl-content",
input: `${mount} input`,
footer: "pl-footer"
},
confirmButtonText: ` 关闭`,
showCloseButton: true,
allowOutsideClick: false,
allowEscapeKey: false,
allowEnterKey: false,
willClose: () => {
base._resetAllData();
},
});
},
/**
* 等待指定元素加载完成并执行回调
* @author hmjz100
* @description 监听 DOM 元素是否出现,若未出现则每隔一段时间重试,直到找到为止。
* 支持在 iframe 内部查找元素,适用于异步加载场景。
* @param {String} selectorElem - 要等待的目标元素选择器
* @param {Function} actionFunction - 找到元素后执行的回调函数,接收 jQuery 元素作为参数,返回 true 可以不再继续寻找
* @param {Boolean} [bWaitOnce=false] - 是否只执行一次回调,默认为 false,如果不设置为 true 的话需要自行判断是否对元素进行操作
* @param {String} [iframeSelector] - 若目标元素位于 iframe 中,传入 iframe 的选择器
* @param {String} [controlKey] - 控制唯一性的键名,用于避免重复处理
*/
waitForKeyElements(selectorElem, actionFunction, bWaitOnce, iframeSelector, controlKey) {
// 初始化管理器
const manager = this.waitForKeyElements.manager || (
this.waitForKeyElements.manager = {
observers: new WeakMap(),
tasks: new Map(),
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((_, el) => {
const jEl = $(el);
const isproc = jEl.data(controlKey);
if (isproc) return true; // 跳过已处理元素
const cancelAction = actionFunction(jEl);
if (cancelAction) {
foundActive = true;
} else if (bWaitOnce) {
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,
subtree: true,
attributes: true,
characterData: true
});
// 注册任务
manager.tasks.set(controlKey, {
observer,
targetDoc
});
// 立即执行初始检查
processElements();
},
};
// 下载函数
const download = {
state(index) {
index = Number(index);
const configs = temp.files;
if (isNaN(index) || base.isType(configs) !== "array" || configs?.length !== 2) return false;
const files = (Array.isArray(configs[0]) ? configs[0] : []);
if (!files.length || !files?.[index]) return false;
return base.isType(configs[1]) === "object" ? { files, ...configs[1] } : {};
},
async copy(target, content) {
const originalHtml = target.html();
if (content) {
await base.setClipboard(content);
target.html(`复制成功`).animate({ opacity: "0.5" }, "slow");
await base.sleep(2000);
target.css("opacity", "");
target.html(originalHtml);
}
},
/**
* 添加页面元素监听
* @author 油小猴
* @author hmjz100
* @description 详见代码
*/
addPageListener() {
$doc.on("click", `.${mount}.btn[action="download"]`, async (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const item = target.closest(".item");
const index = Number(item.data("index"));
const type = target.attr("type");
const downing = item.find(".downing");
switch (type) {
case "normal": {
// 直接下载:通过隐形 iframe 访问下载链接
if (target.data("state") === "processing") return;
target.data("state", "processing");
const state = download.state(index);
if (!state) { target.removeData("state"); return; }
const { files, get } = state;
const link = get.link(files[index]);
if (!link) { target.removeData("state"); return; }
// 在 ${mount}.${mount} 元素中追加隐形 iframe
const iframe = $("", { src: link, css: { display: "none" } });
temp.mount.append(iframe);
let cleaned = false;
const cleanup = () => { if (cleaned) return; cleaned = true; iframe.remove(); target.removeData("state"); };
iframe.on("load", cleanup);
setTimeout(cleanup, 5000);
break;
}
case "enhance": {
// 增强下载:带进度跟踪的分块下载
if (target.data("state") === "processing") return;
target.data("state", "processing");
const state = download.state(index);
if (!state) { target.removeData("state"); return; }
const { files, get, headers, dom } = state;
const file = files[index];
const link = get.link(file);
const name = get.name(file);
const size = get.size(file);
base._resetData(index);
const $downing = () => $(`.${mount}.main .item[data-index="${index}"] .downing`); // 通过 index 实时查找 downing 元素(兼容 DOM 重建后的异步回调)
temp.downing[index] = { status: "downloading", progress: 0, text: "正在加载..." }; // 记录下载状态,供 generateDOM 重建后恢复
// UI 初始化:隐藏按钮、显示进度条
item.find(`[action="download"][type="enhance"], [action="download"][type="normal"], [action="sendto"][type="idm"], [action="copy"]`).hide();
$downing().find('[type="stop"]').show();
$downing().show();
base.download(link, headers, {
index: String(index), name, size,
onProgress: (data) => {
const dprog = Math.min(data.progress, 100);
const text = `${dprog.toFixed(2)}% | 已载:${base.sizeFormat(data.loaded)} | 速度:${data.speedText} | 剩余:${data.etaText}`;
$downing().find(".progress-bar").css("--width", `${dprog}%`);
$downing().find(".text").text(text);
temp.downing[index] = { status: "downloading", progress: dprog, loaded: data.loaded, speedText: data.speedText, etaText: data.etaText, text };
}
}).then(async (res) => {
temp.downing[index] = { status: "done", text: `下载完成~ 浏览器下载框应该弹出来了哦~`, background: "#55af28" };
$downing().find(".foreground").css("background", "#55af28");
base.blobDownload(res.response, name);
await base.sleep(1000);
$downing().find('[type="stop"]').hide();
$downing().find('[type="back"]').show();
$downing().find(".text").html(`下载完成~ 浏览器下载框应该弹出来了哦~`);
}).catch(async (error) => {
base.console.error("【LinkSwift】Download(load)", error);
$downing().find('[type="stop"]').hide();
$downing().find('[type="back"]').show();
$downing().find(".progress-bar").css("--width", "100%");
$downing().find(".foreground").css("background", "#cc3235");
let estatus = `QAQ 下载出错~`;
if (dom?.download?.error) estatus += dom.download.error(error);
temp.downing[index] = { status: "error", text: estatus, background: "#cc3235", whiteSpace: "break-spaces" };
$downing().find(".text").html(estatus).css("white-space", "break-spaces");
});
break;
}
case "stop": {
// 取消下载
if (temp.request[index]) {
temp.request[index].abort();
downing.find(".text").text("正在取消...");
downing.find(".progress-bar").css("--width", "100%");
await base.sleep(1050);
downing.find('[type="back"]').click();
}
break;
}
case "back": {
// 返回:恢复 UI 至初始状态
delete temp.downing[index]; // 用户主动返回,清除状态记录
downing.find(".text").text("正在加载...").css("white-space", "");
downing.find(".foreground").css("background", "");
downing.find(".progress-bar").css("--width", "");
item.find(`[action="download"][type="enhance"], [action="download"][type="normal"]`).show().removeData("state");
downing.hide();
downing.find('[type="stop"], [type="back"]').hide();
item.find(`[action="sendto"][type="idm"], [action="copy"]`).show();
break;
}
default: break;
}
});
$doc.on("click", `.${mount}.btn[action="sendto"][type]`, async (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const item = target.closest(".item");
const index = Number(item.data("index"));
const type = target.attr("type");
const originalHtml = target.html();
const state = download.state(index);
if (!state || target.data("state") === "processing") return;
target.data("state", "processing");
target.find(".pl-icon").remove();
target.find(".pl-loading").remove();
target.prepend(base.createLoading());
const { files, get, headers } = state;
const file = files[index];
const link = get.link(file);
const name = get.name(file);
const size = get.size(file);
let res = "fail";
try {
switch (type) {
case "idm": res = await download.tools.sendTo.idm(link, name, size, headers); break;
case "aria2": res = await download.tools.sendTo.aria2(link, name, headers); break;
case "bitcomet": res = await download.tools.sendTo.bitcomet(link, name, headers); break;
case "abdm": res = await download.tools.sendTo.abdm(link, name, headers); break;
default: break;
}
} catch (e) {
// 错误信息和堆栈
const msg = (e instanceof Error) ? e.message : String(e || "未知错误");
const consoleStack = (e instanceof Error && e.stack) ? e.stack?.split?.('\n')?.slice?.(1)?.join?.('\n') : "无堆栈信息";
base.console.error(`【LinkSwift】Error\n${msg}\n堆栈:\n${consoleStack}`);
res = "fail";
}
if (res === "success") {
target.removeClass("danger success").addClass("success").html(` 发送成功啦~`).animate({ opacity: "0.5" }, "slow");
} else {
target.addClass("danger").text("发送失败!请检查网络及配置").animate({ opacity: "0.5" }, "slow");
}
await base.sleep(3000);
target.removeClass("danger success").removeData("state").html(originalHtml).css("opacity", "");
});
$doc.on("click", `.${mount}.btn[action="aria2"][type]`, (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const type = target.attr("type");
const server = base.getValue("setting_aria2_rpc").find(i => i.default);
const isHttps = server.domain.startsWith("https://");
switch (type) {
case "youxiaohou": {
const url = `${isHttps ? "https" : "http"}://d.youxiaohou.com/?rpc=${base.encodeBase(JSON.stringify({ domain: server.domain, port: server.port }))}#${server.token}`;
GM_openInTab(url, { active: true, insert: true, setParent: true });
break;
}
case "ariang": {
const url = `${isHttps ? "https" : "http"}://ariang.mayswind.net/latest/#!/settings/rpc/set?protocol=${isHttps ? "wss" : "ws"}&host=${server.domain.replace(/^(https?:\/\/)/, "")}&port=${server.port}&interface=${server.path.replace(/^\//, "")}&secret=${server.token}`;
GM_openInTab(url, { active: true, insert: true, setParent: true });
break;
}
default: break;
}
});
$doc.on("click", `.${mount}.btn[action="all"][type]`, async (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const originalHtml = target.html();
const _type = target.attr("type");
const action = _type.split(".")[0];
const type = _type.split(".")?.[1] || "";
if (target.data("state") === "processing") return;
target.data("state", "processing");
const targets = $(`[action="${action}"][type="${type}"]`);
if (targets.length) targets.each(async (index, element) => {
if ($(element).css("display") !== "none" && $(element).data("state") !== "processing") $(element).click();
if (index < targets.length - 1) await base.sleep(100);
});
target.html(` 开始执行,详情见上方哦~`).animate({ opacity: "0.5" }, "slow");
await base.sleep(2000);
target.removeData("state").css("opacity", "").html(originalHtml);
});
$doc.on("click", `.${mount}[action="copy"][type]`, async (e) => {
e.preventDefault();
const target = $(e.currentTarget);
const item = target.closest(".item");
const index = Number(item.data("index"));
const _type = target.attr("type");
const originalHtml = target.html();
// 仅处理以 "file" 或 "all.file" 开头的类型
const isAll = _type.startsWith("all.file");
if (!isAll && !_type.startsWith("file")) return;
const state = download.state(isAll ? 0 : index);
if (!state || target.data("state") === "processing") return;
target.data("state", "processing");
const { files, get, headers } = state;
// 解析子类型,确定待处理的文件索引列表(all 时为全部非目录文件)
const subType = isAll ? _type.replace(/^all\.file\./, "") : _type.replace(/^file\./, "");
const indices = isAll ? files.map((v, i) => i).filter(i => !get.dir(files[i])) : [index];
// 按子类型生成每行内容(每行一个)
const lines = [];
for (const i of indices) {
const file = files[i];
const link = get.link(file);
const name = get.name(file);
let line = "";
switch (subType) {
case "link": line = link; break;
case "name": line = name; break;
case "cmd.curl": line = download.tools.convertTo.curl(link, name, headers); break;
case "cmd.aria2": line = download.tools.convertTo.aira2(link, name, headers); break;
case "cmd.bitcomet": line = download.tools.convertTo.bitcomet(link, name, headers); break;
default: break;
}
if (line) lines.push(line);
}
if (lines.length) {
await base.setClipboard(lines.join("\r\n"));
target.html(` 复制成功`).animate({ opacity: "0.5" }, "slow");
await base.sleep(2000);
}
target.removeData("state").css("opacity", "").html(originalHtml);
});
},
/**
* 创建用于下载页面的 HTML
* @author 油小猴
* @author hmjz100
* @returns {String} 生成的 HTML 内容
* @description 详见代码
*/
generateDOM(keepDowning = false) {
const state = this.state(false);
if (!state) throw new Error("提示:
配置解析失败~");
const { files, get, headers, dom } = state;
if (!files.length) throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
if (!keepDowning) base._resetAllData(true);
const content = $(``);
let allLink = [];
files.forEach((v, i) => {
if (get.dir(v)) return;
const name = get.name(v);
const size = get.size(v);
const link = get.link(v);
const mirrors = base.isType(get.mirror) !== "undefined" ? get.mirror(get.link(v)) : undefined;
if (!link || !link.includes("http")) {
content.find(`.${mount}.main`).append(`
${name}
${base.sizeFormat(size)}
${link ? link : "获取下载地址失败,刷新网页后再试试吧~"}
`)
} else {
if (temp.mode === "api") {
allLink.push(link);
content.find(`.${mount}.main`).append(`
${name}
${base.sizeFormat(size)}
`);
}
if (temp.mode === "curl") {
const finalink = download.tools.convertTo.curl(link, name, headers);
allLink.push(finalink);
content.find(`.${mount}.main`).append(``);
}
if (temp.mode === "aria2") {
const finalink = download.tools.convertTo.aira2(link, name, headers);
allLink.push(finalink);
content.find(`.${mount}.main`).append(`
${name}
${base.sizeFormat(size)}
`);
}
if (temp.mode === "bitcomet") {
const finalink = download.tools.convertTo.bitcomet(link, name, headers);
allLink.push(finalink);
content.find(`.${mount}.main`).append(`
${name}
${base.sizeFormat(size)}
使用 BC 地址下载
${mirrors ? `
` : ""}
`);
}
if (temp.mode === "abdm") {
content.find(`.${mount}.main`).append(`
${name}
${base.sizeFormat(size)}
`);
}
}
});
allLink = (allLink ? allLink.join("\r\n") : "")
if (temp.mode === "api") {
const rpc = base.getValue("setting_idm_rpc");
if (files.length >= 2) content.find(`.${mount}.extra`).append(`
`);
content.find(`.${mount}.extra`).append(``);
if (files.length >= 2) content.find(`.${mount}.extra`).append(``);
} else if (temp.mode === "curl") {
content.find(`.${mount}.extra`).append(``);
if (files.length >= 2) content.find(`.${mount}.extra`).append(``);
} else if (temp.mode === "aria2") {
const rpc = base.getValue("setting_aria2_rpc").find(i => i.default);
content.find(`.${mount}.extra`).append(``);
content.find(`.${mount}.extra`).append(``);
content.find(`.${mount}.extra`).append(``);
if (files.length >= 2) content.find(`.${mount}.extra`).append(``);
if (files.length >= 2) content.find(`.${mount}.extra`).append(``);
} else if (temp.mode === "bitcomet") {
const rpc = base.getValue("setting_bitcomet_rpc").find(i => i.default);
content.find(`.${mount}.extra`).append(``);
if (files.length >= 2) content.find(`.${mount}.extra`).append(``);
if (files.length >= 2) content.find(`.${mount}.extra`).append(``);
} else if (temp.mode === "abdm") {
const rpc = base.getValue("setting_abdm_rpc").find(i => i.default);
content.find(`.${mount}.extra`).append(``);
if (files.length >= 2) content.find(`.${mount}.extra`).append(``);
}
function updateTooltip($element, value) {
if (!value) return;
$element.addClass(`${mount} tip`);
if (value.startsWith("+")) {
// 追加模式:去掉开头的 "+",然后拼接到现有 data-title
const newValue = value.substring(1);
const existingTitle = $element.attr("data-title") || "";
$element.attr("data-title", existingTitle + newValue);
} else {
// 替换模式
$element.attr("data-title", value);
}
}
if (dom?.tooltip?.enhance) updateTooltip(content.find(`[action="download"][type="enhance"]`), dom.tooltip.enhance);
if (dom?.tooltip?.normal) updateTooltip(content.find(`[action="download"][type="normal"]`), dom.tooltip.normal);
if (dom?.tooltip?.copy) updateTooltip(content.find(`[action="copy"]`), dom.tooltip.copy);
if (dom?.tooltip?.filename) updateTooltip(content.find(`[action="copy"][type="file.name"]`), dom.tooltip.filename);
// 恢复下载状态:遍历 temp.downing,对每个 index 重建 UI 状态
const restoreDowning = (idx, st) => {
const $item = content.find(`.item[data-index="${idx}"]`);
if (!$item.length) return;
$item.find(`[action="download"][type="enhance"], [action="download"][type="normal"], [action="sendto"][type="idm"], [action="copy"]`).hide();
$item.find(".downing").show();
if (st.status === "downloading") {
$item.find('[type="stop"]').show();
$item.find('[type="back"]').hide();
$item.find(".progress-bar").css("--width", `${st.progress}%`);
$item.find(".text").text(st.text);
} else if (st.status === "done") {
$item.find('[type="stop"]').hide();
$item.find('[type="back"]').show();
$item.find(".foreground").css("background", st.background);
$item.find(".text").html(st.text);
} else if (st.status === "error") {
$item.find('[type="stop"]').hide();
$item.find('[type="back"]').show();
$item.find(".progress-bar").css("--width", "100%");
$item.find(".foreground").css("background", st.background);
$item.find(".text").html(st.text).css("white-space", st.whiteSpace || "break-spaces");
}
};
Object.entries(temp.downing).forEach(([idx, st]) => restoreDowning(idx, st));
const html = content.html();
content.remove();
return html;
},
tools: {
convertTo: {
/**
* 生成 cURL 下载命令
* @author 油小猴
* @author hmjz100
* @description 根据终端类型生成对应 curl 命令,支持断点续传,自动处理文件名特殊字符
* @param {String} link - 下载地址
* @param {String} filename - 文件名
* @param {Object} [headers] - 请求头对象(可选)
* @returns {String} 编码后的 curl 命令字符串
*/
curl(link, filename, headers) {
const terminal = base.getValue("setting_curl_terminal");
filename = base.fixFilename(filename);
headers = base.standHeaders(headers, true, false);
let headerStr = "";
if (headers && base.isType(headers) === "object") {
const parts = [];
for (const [key, value] of Object.entries(headers)) {
// 转义双引号以防止命令行注入/语法错误
const safeValue = String(value).replace(/"/g, '\\"');
parts.push(`-H "${key}: ${safeValue}"`);
}
if (parts.length > 0) {
headerStr = " " + parts.join(" ");
}
}
return `${terminal !== "wp" ? "curl" : "curl.exe"} -L -C - "${link}" -o "${filename}"${headerStr}`;
},
/**
* 生成 Aria2 下载命令
* @author 油小猴
* @author hmjz100
* @description 将地址转换为 Aria2 格式命令,自动处理文件名特殊字符
* @param {String} link - 下载地址
* @param {String} filename - 文件名
* @param {Object} [headers] - 请求头对象(可选)
* @returns {String} 编码后的 aria2c 命令字符串
*/
aira2(link, filename, headers) {
filename = base.fixFilename(filename);
headers = base.standHeaders(headers, true, false);
let headerStr = "";
if (headers && base.isType(headers) === "object") {
const parts = [];
for (const [key, value] of Object.entries(headers)) {
// 转义内部双引号
const safeValue = String(value).replace(/"/g, '\\"');
parts.push(`--header="${key}: ${safeValue}"`);
}
if (parts.length > 0) {
headerStr = " " + parts.join(" ");
}
}
return `aria2c "${link}" --out "${filename}"${headerStr}`;
},
/**
* 生成 BC 协议下载地址
* @author 油小猴
* @author hmjz100
* @description 将地址转换为 BC 协议格式,自动处理 URL 编码
* @param {String} link - 下载地址
* @param {String} filename - 文件名
* @param {Object} [headers] - 请求头对象(可选)
* @param {Array} [config] - 自定义参数(可选)
* @returns {String} 编码后的 BC 协议 URL
*/
bitcomet(link, filename, headers, config) {
filename = base.fixFilename(filename);
headers = base.standHeaders(headers, true, false);
const data = new URLSearchParams();
if (headers && base.isType(headers) === "object") for (const [key, value] of Object.entries(headers)) {
switch (key.toLowerCase()) {
case "referer": data.set("referrer", value); break;
case "user-agent": data.set("user_agent", value); break;
case "cookie": data.set("cookie", value); break;
default: break;
}
}
if (config && base.isType(config) === "object") for (const [key, value] of Object.entries(config)) data.set(key, value);
const extraParams = data.toString();
const bc = `AA/${encodeURIComponent(filename)}/?url=${encodeURIComponent(link)}${extraParams ? ("&" + extraParams) : ""}ZZ`;
return `bc://http/${base.encodeBase(bc)}`;
},
},
sendTo: {
/**
* 发送地址到 IDM 下载器
* @author hmjz100
* @param {String} link - 下载地址
* @param {String} filename - 文件名
* @param {Number} filesize - 文件大小
* @param {Object} [headers] - 请求头对象(可选)
* @returns {Promise<"success"|"fail">} 发送态结果
*/
async idm(link, filename, filesize, headers = {}) {
const rpc = base.getValue("setting_idm_rpc");
if (!this.idm.lock) this.idm.lock = Promise.resolve();
return this.idm.lock = this.idm.lock.then(async () => {
headers = base.standHeaders(headers);
if (!this.idm.seq) this.idm.seq = 1;
const seq = this.idm.seq;
const time = Date.now();
const url = `http://127.0.0.1:1001/client/${rpc}?seq=${seq}`;
const ext = base.getExtension(filename);
const headersText = Object.entries(headers).map(([key, value]) => `${key}: ${value}`).join("\n") + "\n"; // 坑1:IDM 对 Header 的解码比较死板,最后不加换行不肯解析
function format(key, val) {
if (val === undefined || val === null) return "";
const strVal = String(val);
const len = new Blob([strVal]).size; // 坑2:使用 blob.size,而不是 length
return `${key}=${len}:${strVal}`;
};
const fields = [
format(4, ext), // 4: 文件类型
format(6, link), // 6: 下载地址
format(7, location.origin), // 7: 来源页面(“该文件来自网页”)
format(11, headersText), // 11: 请求头
format(100, filename), // 100: 文件名
format(122, 4), // 122: 代理
];
// 坑3:神秘的请求格式
// MSG# {请求指示} #13#1# {10241/20xx}(是/否 使用扩展提供的文件信息) : {?}(可能是距离扩展启动的时间?) :0: {当前时间戳} :0:1: {2/1}(是/否 优先弹窗,再获取文件信息) : {文件大小} :0,{表单}(格式如上);
const data = `MSG#${seq}#13#1#10241:${seq + 1000}:0:${time}:0:1:2:${filesize}:0,${fields.join(",")};`;
const request = base.post(url, data, {}, "text", false);
const timeout = new Promise((_, reject) => {
setTimeout(() => {
if (request.abort) request.abort();
reject(new Error("timeout"));
}, 15 * 1000);
});
const res = await Promise.race([request, timeout]);
if (res && res.endsWith(`${seq}:3;`)) {
this.idm.seq++;
return "success";
};
return "fail";
});
},
/**
* 发送地址到 Aria2 下载器
* @author 油小猴
* @author hmjz100
* @param {String} link - 下载地址
* @param {String} filename - 文件名
* @param {Array} [headers] - 请求头对象(可选)
* @returns {Promise<"success"|"fail">} 发送态结果
*/
async aria2(link, filename, headers) {
if (!this.aria2.lock) this.aria2.lock = Promise.resolve();
return this.aria2.lock = this.aria2.lock.then(async () => {
headers = base.standHeaders(headers);
const header_parts = [];
for (const [key, value] of Object.entries(headers)) {
header_parts.push(`${key}: ${value}`);
}
const list = base.getValue("setting_aria2_rpc");
const selected = list.find(i => i.default);
const rpc = {
domain: selected.domain,
port: selected.port,
path: selected.path,
dir: selected.dir,
token: selected.token
};
const url = `${rpc.domain}:${rpc.port}${rpc.path}`;
const dir = (rpc.dir !== null && rpc.dir !== "") ? rpc.dir : undefined;
const data = {
id: new Date().getTime(),
jsonrpc: "2.0",
method: "aria2.addUri",
params: [[link], {
...(dir !== undefined && dir !== "" ? { dir } : {}),
...(headers?.["User-Agent"] ? { "user-agent": headers["User-Agent"] } : {}),
...(headers?.["Referer"] ? { "referer": headers["Referer"] } : { "referer": `${location.origin}/` }),
out: filename,
header: header_parts
}]
};
if (rpc.token) data.params.unshift(`token:${rpc.token}`);
const res = await base.post(url, data, { "Accept": "application/json", "Content-Type": "application/json;charset=UTF-8" }, "json", false);
if (res.result) return "success";
return "fail";
});
},
/**
* 发送地址到比特彗星下载器
* @author hmjz100
* @param {String} link - 下载地址
* @param {String} filename - 文件名
* @param {Array} [headers] - 请求头对象(可选)
* @param {Array} [config] - 自定义参数(可选)
* @returns {Promise<"success"|"fail">} 发送态结果
*/
async bitcomet(link, filename, headers, config) {
if (!this.bitcomet.lock) this.bitcomet.lock = Promise.resolve();
return this.bitcomet.lock = this.bitcomet.lock.then(async () => {
headers = base.standHeaders(headers);
const list = base.getValue("setting_bitcomet_rpc");
const selected = list.find(i => i.default);
const rpc = {
domain: selected.domain,
port: selected.port,
path: selected.path,
dir: selected.dir,
authName: selected.authName,
authPass: selected.authPass,
};
const url = `${rpc.domain}:${rpc.port}${rpc.path}`;
const data = new URLSearchParams();
data.set("url", link);
if (rpc.dir !== null && rpc.dir !== "") data.set("save_path", rpc.dir);
data.set("file_name", filename);
data.set("connection", 200);
if (headers && base.isType(headers) === "object") for (const [key, value] of Object.entries(headers)) {
switch (key.toLowerCase()) {
case "referer": data.set("referrer", value); break;
case "user-agent": data.set("user_agent", value); break;
case "cookie": data.set("cookie", value); break;
default: break;
}
}
if (config && base.isType(config) === "object") for (const [key, value] of Object.entries(config)) data.set(key, value);
try {
const res = await base.post(url, data, {
"Authorization": `Basic ${base.encodeBase(rpc.authName + ":" + rpc.authPass)}`,
"Content-Type": "application/x-www-form-urlencoded",
"Cache-Control": "max-age=0",
"Origin": `${rpc.domain}:${rpc.port}`,
"Referer": `${rpc.domain}:${rpc.port}/panel/task_add_httpftp`,
}, "text", false);
if (res && res.includes("Add task failed!")) return "fail";
else return "success";
} catch {
return "success";
}
});
},
/**
* 发送地址到 AB Download Manager 下载器
* @author hmjz100
* @param {String} link - 下载地址
* @param {String} filename - 文件名
* @param {Array} [headers] - 请求头对象(可选)
* @returns {Promise<"success"|"fail">} 发送态结果
*/
async abdm(link, filename, headers) {
if (!this.abdm.lock) this.abdm.lock = Promise.resolve();
return this.abdm.lock = this.abdm.lock.then(async () => {
headers = base.standHeaders(headers);
const list = base.getValue("setting_abdm_rpc");
const selected = list.find(i => i.default);
const rpc = {
domain: selected.domain,
port: selected.port,
dir: selected.dir
};
const url = `${rpc.domain}:${rpc.port}/start-headless-download`;
const data = {
"downloadSource": {
"name": filename,
"description": "LinkSwift",
"link": link,
"headers": headers
},
"name": filename
}
if (headers?.["Referer"]) data["downloadSource"]["downloadPage"] = headers["Referer"];
if (rpc.dir) data.folder = rpc.dir;
const res = await base.post(url, data, { "Content-Type": "text/plain;charset=UTF-8" }, "text", false);
if (res === "OK") return "success";
return "fail";
});
},
},
},
}
/**
* 百度网盘
* @author 油小猴
* @author hmjz100
*/
const $baidu = {
async getToken() {
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取授权状态~
`);
// 获取授权状态
const authorize = await base.getFinal(config.$baidu.api.getAccessToken, { Origin: "", Referer: "" }, true);
let accessToken;
// 判断授权情况
if (authorize.includes("authorize")) {
$doc.find(".loading-popup .loading-title").html(`授权获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取授权页面~
`);
// 没授权,先获取授权的页面
const html = await base.get(config.$baidu.api.getAccessToken, {}, "text", false);
// 提取页面的发送确认授权的参数
const bdstoken = html.match(/name="bdstoken"\s+value="([^"]+)"/)?.[1];
const client_id = html.match(/name="client_id"\s+value="([^"]+)"/)?.[1];
const data = {
grant_permissions_arr: "netdisk",
bdstoken: bdstoken,
client_id: client_id,
response_type: "token",
display: "page",
grant_permissions: "basic,netdisk"
};
$doc.find(".loading-popup .swal2-html-container").html(`正在自动确认授权~
`);
// 发送请求达到自动进行授权
await base.post(config.$baidu.api.getAccessToken, base.stringify(data), { Origin: "", Referer: "", "Content-Type": "application/x-www-form-urlencoded" });
// 再次获取授权状态
const res2 = await base.getFinal(config.$baidu.api.getAccessToken, { Origin: "", Referer: "" }, 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) {
$doc.find(".loading-popup .swal2-html-container").html(`授权成功,令牌已缓存~
`);
base.setValue("baidu_access_token", accessToken);
return accessToken;
} else {
return ""
};
},
async getShareData() {
// 前置
const url = new URL(location.href);
const locals = unsafeWindow?.locals?.dump?.();
// 参数们
const surl = url.pathname.split('/').pop().replace(/^1(.{22})$/, '$1');
const pwd = localStorage.getItem(`${surl}_pwd`) || url.searchParams.get('pwd');
const baidu_id = document?.cookie?.split?.('BAIDUID=')?.[1]?.split?.(';')?.[0];
const share_uk = locals?.share_uk?.value;
const share_id = locals?.shareid?.value;
const bds_token = locals?.bdstoken?.value;
const js_token = unsafeWindow?.jsToken;
const se_key = unsafeWindow?.currentSekey || unsafeWindow?.cache?.list?.config?.params?.sekey;
return {
share: {
id: share_id,
url: surl,
pwd: pwd,
uk: share_uk,
},
baidu: {
id: baidu_id,
token: bds_token
},
jsToken: js_token,
sekey: se_key
}
},
addPageListener() {
$doc.on("mouseenter mouseleave click", ".pl-button.g-dropdown-button", (e) => {
if (e.type === "mouseleave") {
$(e.currentTarget).removeClass("button-open");
} else {
$(e.currentTarget).addClass("button-open");
$(e.currentTarget).find(".pl-dropdown-menu").show();
}
});
$doc.on("mouseleave", ".pl-button.g-dropdown-button .pl-dropdown-menu", (e) => {
$(e.currentTarget).hide();
});
$doc.on("click", ".pl-button-save", async (e) => {
e.preventDefault();
const selections = temp.main.getSelectedList();
if (selections.length === 0) {
return message.error("提示:
请勾选要保存到网盘的文件哦~");
}
message.info("提示:
因网盘限制,请保存到自己网盘后再去下载哦~");
await base.sleep(500);
document.querySelector(".tools-share-save-hb").click();
});
},
greenerPage() {
temp.page = temp.main.detectPage();
base.waitForKeyElements(".wp-s-header-user__vip-center", (tag) => {
tag.remove();
}, true);
base.waitForKeyElements(".wp-s-header-user__create-team-content", (tag) => {
tag.remove();
}, true);
base.waitForKeyElements(".app-user-vip-center-box.vip-center-type-2", (tag) => {
tag.remove();
}, true);
base.waitForKeyElements(".wp-s-header__vip-btn-tip", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".app-user-vip-center-tip", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements("#web-header-text-s-45", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".wp-s-header__vip-btn", (tag) => {
tag.text("会员中心")
}, true);
base.waitForKeyElements(".KQcHyA", (tag) => {
tag.text("会员中心")
}, true);
base.waitForKeyElements(".gOIbzPb", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".wp-s-header-user__create-team-title", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".web-header-ad-item", (tag) => {
tag.fadeOut();
});
base.waitForKeyElements(".wp-s-header__game-entry", (tag) => {
tag.fadeOut();
}, true)
base.waitForKeyElements(".bd-aside-ad", (tag) => {
tag.fadeOut();
}, true)
base.waitForKeyElements(".btn-img-tips", (tag) => {
tag.fadeOut();
}, true)
base.waitForKeyElements(".nd-operate-guidance", (tag) => {
tag.fadeOut();
}, true)
base.waitForKeyElements(".module-operation-content", (tag) => {
tag.fadeOut();
document.querySelector(".operate-guide-close").click();
document.querySelector(".module-canvas").click();
}, true)
base.waitForKeyElements(`[class*="module-"][class*="-box"]:not(.module-box), [class*="module-"][class*="-mask"]`, (tag) => {
tag.fadeOut();
tag.find(".close-mask").click();
}, true)
base.waitForKeyElements(".newIcon", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".u-badge__content.is-dot", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".wp-side-options.g-clearfix", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".wp-s-header-user__drop-channel", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".app-download", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(`.g-button[title*="手机"]`, (tag) => {
tag.fadeOut();
}, true)
base.waitForKeyElements(".yike-entrance", (tag) => {
tag.remove();
}, true)
base.waitForKeyElements("div.dialog-gray:has(.dialog-close):has(.tip-body):has(~ .module-canvas)", (tag) => {
tag.find(".dialog-close").click();
$(".module-canvas").click();
}, true)
// back pc motivate 回端激励
base.waitForKeyElements(".wp-s-header ~ div:not([class]):has(.nd-custom-btn)", (tag) => {
if (!tag.text().includes("客户端")) return;
tag.remove();
}, true)
base.waitForKeyElements(".pc-client-fullscreen-modal", (tag) => {
tag.hide();
tag.find(".pc-client-modal-close").click();
}, true)
base.waitForKeyElements(".nd-bottom-right-popover:has(.nd-custom-popover-close)", (tag) => {
tag.hide();
tag.find(".nd-custom-popover-close").click();
}, true)
base.waitForKeyElements(".wp-s-aside-nav__sub-bottom > a.wp-aside-nav__pc-client-button", (tag) => {
tag.remove();
}, true)
base.waitForKeyElements(".open-pc-menu-wrap, .menu-open-pc-wrap", (tag) => {
tag.remove();
}, true)
base.waitForKeyElements(`.nd-invoke-app-btn > .nd-custom-btn-wrapper:has(img.BdPc[src*="Bdpc.png"])`, (tag) => {
tag.remove();
}, true)
base.waitForKeyElements(`.wp-s-aside-nav__main-item.wp-s-aside-nav__nav-tooltip:has(img[src*="wAIUtHEN+698AAAAABJRU5ErkJggg=="])`, (tag) => {
tag.remove();
}, true)
base.waitForKeyElements("a.tools__item", (tag) => {
if (tag.attr("linked")) return;
if (tag.attr("href")) {
try {
const url = new URL(tag.closest("a").attr("href"));
url.search;
url.hash = url.hash.replace(/\?(.*?)(#|$)/, "$2")
tag.attr("href", url.href)
} catch { }
}
tag.attr("linked", true)
}, true);
base.waitForKeyElements("p.wp-s-aside-nav__main-item-text", (tag) => {
if (tag.attr("linked")) return;
if (tag.closest("a").attr("href")) {
try {
const url = new URL(tag.closest("a").attr("href"));
url.search;
url.hash = url.hash.replace(/\?(.*?)(#|$)/, "$2")
tag.closest("a").attr("href", url.href)
} catch { }
}
if (tag.is(`:contains("插件"), :contains("相册"), :contains("笔记")`) && tag.closest("a").attr("target") !== "_blank") {
tag.closest("a").fadeOut();
} else {
tag.text(tag.text().replace("百度", ""));
}
tag.attr("linked", true)
}, true);
base.waitForKeyElements(`dd[node-type="header-link"]`, (tag) => {
tag.children().each((_, element) => {
const tag = $(element);
if (!tag.attr("node-type")) return;
const type = tag.attr("node-type");
if (
type !== "disk-home" &&
type !== "mbox-homepage" &&
type !== "find-apps"
) {
tag.fadeOut();
}
});
}, true);
base.waitForKeyElements(".__yunguanjia", (tag) => {
tag.html(``);
}, true)
// 美化分享页面
if (temp.page === "share") {
base.waitForKeyElements(`iframe[src^="/buy/ad"]`, (tag) => {
tag.fadeOut();
}, true)
// 一朵可爱捏
base.addStyle(`${mount}-baiduShare`, "style", `
body, .theme-white.init-new, #layoutApp{
background-color:#DCEFFE!important;
background:#DCEFFE url(https://nd-static.bdstatic.com/m-static/disk-share/widget/pageModule/init-new/image/init-bg_1708266.png) no-repeat center center;
}
#bd-main .bd-left{
background:#ffffffC0;
border-radius:10px;
}
iframe[src="/buy/ad/home"]{
display:none!important;
}
`, `.${mount}`);
base.waitForKeyElements(`.KPDwCE`, (tag) => {
tag.css("background", "transparent");
}, true);
base.waitForKeyElements(".share-list .KPDwCE .AuPKyz", (tag) => {
tag.css("background", "transparent");
}, true);
base.waitForKeyElements(`#layoutMain`, (tag) => {
tag.css({ "border-radius": "24px" });
}, true)
base.waitForKeyElements(".frame-content", (tag) => {
tag.css({ "margin": "auto" });
}, true)
}
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$baidu !== true) return;
if (temp.main.detectPage() !== "home") {
base.adaptiveThemeOverride([
["#717fff", temp.color],
["#717FFF", temp.color],
["#06a8ff", temp.color],
["#06A8FF", temp.color],
["#06a7ff", temp.color],
["#06A7FF", temp.color],
["#dcdfe6", temp.color],
["#DCDFE6", temp.color],
["#0095ff", temp.color],
["#0095FF", temp.color],
["#09aaff", temp.color],
["#09AAFF", temp.color],
["#0ca6ff", temp.color],
["#0CA6FF", temp.color],
["#5040ff", temp.color],
["#5040FF", temp.color],
["#454d5a", temp.color],
["#454D5A", temp.color],
["#a2abbd", temp.color],
["#A2ABBD", temp.color],
["#030b1a", temp.color],
["#030B1A", temp.color],
["#afb3bf", temp.color],
["#AFB3BF", temp.color],
["#ff436a", temp.color],
["#FF436A", temp.color],
["#03081a", temp.color],
["#03081A", temp.color],
["#2974b6", temp.color],
["#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`],
["#42D8FF", `${temp.color}D0`],
["#a48dff", `${temp.color}D0`],
["#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`],
["#F5FBFF", `${temp.color}20`],
["#b4e5ff", `${temp.color}20`],
["#B4E5FF", `${temp.color}20`],
["#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`],
["#EEF9FE", `${temp.color}10`],
["#f7f9fc", `${temp.color}10`],
["#F7F9FC", `${temp.color}10`],
["#f5f6fa", `${temp.color}10`],
["#F5F6FA", `${temp.color}10`],
["#b4e5ff", `${temp.color}10`],
["#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`)],
["6,167,255,.1", base.hexToRgba(`${temp.color}1a`)],
["6,167,255,.23", base.hexToRgba(`${temp.color}3b`)],
["164,141,255,.2", base.hexToRgba(`${temp.color}30`)],
["196,182,255,.2", base.hexToRgba(`${temp.color}20`)],
["113,127,255,.2", base.hexToRgba(`${temp.color}40`)],
["3,8,26,.6", base.hexToRgba(`${temp.color}D0`)],
["255,32,102,.4", base.hexToRgba(`${temp.color}66`)],
["72,166,248,.7", base.hexToRgba(`${temp.color}66`)],
]);
};
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,
.xGLMIab .FcQMwt,
.cazEfA .yfHIsP,
.hscjZ4QL .bbxnZ0Bq .ehnyLxWZ span,
.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}
.xtJbHcb .CDaavKb .KQcHyA{background:rgb(244,207,0)!important;padding:8px 15px}
.xtJbHcb .web-header-nav-new-version-inner{background:var(--pl-c)!important;padding:8px 15px;line-height:15px;width:auto;height:auto}
a{transition:all.2s!important}
#bd-main .bd-left{margin:auto!important}
.verify-input input{padding-left:0!important;text-align:center!important}
.verify-input input:focus{border:2px solid ${temp.color}!important}
[data-theme=light] .vp-video-page-card .vp-video-page-card__video-detail{color:#030b1a}
dt.level-1{background:#fd6d65!important}
dt.level-2{background:#f3a723!important}
dt.level-1 i.desc-arrow{border-bottom:10px solid #dd6966!important}
dt.level-2 i.desc-arrow{border-bottom:10px solid #d29633!important}
`, `.${mount}`);
base.adaptiveThemeOverride([
["#717fff", temp.color],
["#717FFF", temp.color],
["#06a8ff", temp.color],
["#06A8FF", temp.color],
["#06a7ff", temp.color],
["#06A7FF", temp.color],
["#dcdfe6", temp.color],
["#DCDFE6", temp.color],
["#0095ff", temp.color],
["#0095FF", temp.color],
["#09aaff", temp.color],
["#09AAFF", temp.color],
["#0ca6ff", temp.color],
["#0CA6FF", temp.color],
["#5040ff", temp.color],
["#5040FF", temp.color],
["#454d5a", temp.color],
["#454D5A", temp.color],
["#a2abbd", temp.color],
["#A2ABBD", temp.color],
["#030b1a", temp.color],
["#030B1A", temp.color],
["#afb3bf", temp.color],
["#AFB3BF", temp.color],
["#ff436a", temp.color],
["#FF436A", temp.color],
["#03081a", temp.color],
["#03081A", temp.color],
["#2974b6", temp.color],
["#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`],
["#42D8FF", `${temp.color}D0`],
["#a48dff", `${temp.color}D0`],
["#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`],
["#F5FBFF", `${temp.color}20`],
["#b4e5ff", `${temp.color}20`],
["#B4E5FF", `${temp.color}20`],
["#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`],
["#EEF9FE", `${temp.color}10`],
["#f7f9fc", `${temp.color}10`],
["#F7F9FC", `${temp.color}10`],
["#f5f6fa", `${temp.color}10`],
["#F5F6FA", `${temp.color}10`],
["#b4e5ff", `${temp.color}10`],
["#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`)],
["6,167,255,.1", base.hexToRgba(`${temp.color}1a`)],
["6,167,255,.23", base.hexToRgba(`${temp.color}3b`)],
["164,141,255,.2", base.hexToRgba(`${temp.color}30`)],
["196,182,255,.2", base.hexToRgba(`${temp.color}20`)],
["113,127,255,.2", base.hexToRgba(`${temp.color}40`)],
["3,8,26,.6", base.hexToRgba(`${temp.color}D0`)],
["255,32,102,.4", base.hexToRgba(`${temp.color}66`)],
["72,166,248,.7", base.hexToRgba(`${temp.color}66`)],
], "other");
},
addButton() {
base.waitForKeyElements(config.$baidu.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(``);
element.prepend($button);
});
base.waitForKeyElements(config.$baidu.mount.main, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "main") return;
const $button = $(``);
element.prepend($button);
});
base.waitForKeyElements(config.$baidu.mount.main, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "youth") return;
const $button = $(``);
element.prepend($button);
});
base.waitForKeyElements(config.$baidu.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(`
下载助手
`)
element.after($button);
});
},
addInitButton() {
base.waitForKeyElements(config.$baidu.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(``);
$button.click(base.showInitDialog);
element.prepend($button);
});
base.waitForKeyElements(config.$baidu.mount.main, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || (temp.page !== "main" && temp.page !== "youth")) return;
const $button = $(``);
$button.click(base.showInitDialog);
element.prepend($button);
});
base.waitForKeyElements(config.$baidu.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(`
点我点亮
`)
$button.click(base.showInitDialog);
element.after($button);
});
},
async getFilesUrl(items, token) {
if (base.isType(items) !== "array") return [];
items = items.filter(item => !item.isdir);
const size = 50;
let proc = 0;
const pending = items.filter(item => {
const idx = temp.glinks.findIndex(c => c.id == item.fs_id);
if (idx === -1) return true;
const cached = temp.glinks[idx];
if (cached.expires > Date.now()) {
Object.assign(item, cached.data);
proc++;
return false;
}
temp.glinks.splice(idx, 1); // 过期删除
return true;
});
for (let i = 0; i < pending.length; i += size) {
// 当前批次
const batch = pending.slice(i, i + size);
const fsids = JSON.stringify(batch.map(item => item.fs_id));
const url = new URL(config.$baidu.api.getLink);
url.searchParams.set("fsids", fsids);
url.searchParams.set("access_token", token);
const res = await base.get(url, { "User-Agent": config.$baidu.api.ua.downloadLink });
if (!res || res.errno !== 0 || !res.list) {
if (res.errno === 112) throw new Error("提示:
页面已过期,请刷新后重试~
代码:" + res.errno);
if (res.errno === 9019) {
base.delValue("baidu_access_token");
throw new Error("提示:
访问令牌已过期,再获取一次吧~
代码:" + res.errno);
}
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 {
throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
}
}
batch.forEach(_item => {
const item = res.list.find(li => li.fs_id == _item.fs_id);
if (item) {
Object.assign(_item, item);
temp.glinks.push({ id: _item.fs_id, expires: (Date.now() + 4 * 60 * 60 * 1000), data: item });
}
});
proc += res.list.length;
$doc.find(".swal2-html-container").html(`已获取 ${proc} / ${items.length} 个地址`);
// 批次间休息
if (i + size < pending.length) await base.sleep(1000);
}
return base.clone(items);
},
async getShareFilesUrl(items, sData) {
if (base.isType(items) !== "array") return [];
items = items.filter(item => !item.isdir);
let proc = 0;
const pending = items.filter(item => {
const idx = temp.glinks.findIndex(c => c.id == item.fs_id);
if (idx === -1) return true;
const cached = temp.glinks[idx];
if (cached.expires > Date.now()) {
Object.assign(item, cached.data);
proc++;
return false;
}
temp.glinks.splice(idx, 1); // 过期删除
return true;
});
for (const item of pending) {
const url = new URL(config.$baidu.api.getShareLink);
url.searchParams.set("sign", sData?.sign);
url.searchParams.set("timestamp", sData?.timestamp);
url.searchParams.set("bdstoken", sData.baidu.token);
url.searchParams.set("logid", base.encodeBase(sData.baidu.id));
url.searchParams.set("jsToken", sData.jsToken);
const data = new URLSearchParams({
"encrypt": 0,
"product": "share",
"uk": sData.share.uk,
"primaryid": sData.share.id,
"fid_list": JSON.stringify([item.fs_id])
});
if (sData.sekey) data.set("extra", JSON.stringify({ "sekey": sData.sekey }));
const res = await base.post(url, data);
if (!res || res.errno !== 0 || !res.list) {
if (res.errno === 112) throw new Error("提示:
页面已过期,请刷新后重试~
代码:" + res.errno);
if (res.errno === 9019) {
base.delValue("baidu_access_token");
throw new Error("提示:
访问令牌已过期,再获取一次吧~
代码:" + res.errno);
}
if (res.errno || res.errmsg) {
item.dlink = `获取下载地址失败,${(res.errno || res.errmsg) ? "服务器说:" + (res.errno && res.errmsg ? res.errno + " - " + res.errmsg : (res.errmsg || res.errno)) + "。" : "刷新后再试试吧~"}`;
} else {
throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
}
}
if (base.isType(res.list) === "array") Object.assign(item, res.list[0]);
if (base.isType(res.list) === "string") item.dlink = `获取下载地址失败,服务器说:此文件大小超过可获取限制,需要保存到网盘后于网盘中下载。`;
temp.glinks.push({ "id": item.fs_id, "expires": (Date.now() + 4 * 60 * 60 * 1000), "data": res.list[0] });
proc++
$doc.find(".swal2-html-container").html(`已获取 ${proc} / ${items.length} 个地址`);
// 批次间休息
if (proc < pending.length) await base.sleep(1000);
}
return base.clone(items);
},
async getFilesList(dirs, accessToken, proc = 0) {
let cnt = 0;
async function get(targets) {
let files = [];
for (const dir of targets) {
$doc.find(".loading-popup .loading-title").html(`文件获取中`);
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")) {
const subFiles = res.list.filter(f => !f.isdir);
proc += subFiles.length;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} 个文件~
${dir.path}
`);
files = files.concat(subFiles);
const subDirs = res.list.filter(f => f.isdir);
if (subDirs.length > 0) {
files = files.concat(await get(subDirs));
}
}
if (cnt >= 50) {
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} 个文件~
休息 3 秒...
`);
await base.sleep(3000);
cnt = 0;
}
}
return files;
};
return await get(dirs);
},
async getLink() {
let token = base.getValue("baidu_access_token") || await this.getToken().catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[百度网盘] 获取令牌失败");
});
// 回退授权
if (!token) {
message.info("提示:
稍后请在新标签页中授权助手哦~");
base.delValue("baidu_access_token");
await base.sleep(3300);
GM_openInTab(config.$baidu.api.getAccessToken, { active: true, insert: true, setParent: true });
let attempts = 0;
const interval = setInterval(() => {
if (base.getValue("baidu_access_token")) {
clearInterval(interval);
token = base.getValue("baidu_access_token")
}
attempts++;
if (attempts > 120) {
clearInterval(interval);
throw new Error("提示:
时间太长,我先撤下啦~");
}
}, 1000);
return;
}
// 获取选择的文件列表
const selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
let files = selects.filter(f => !f.isdir);
const dirs = selects.filter(f => f.isdir);
if (temp.page === "home" || temp.page === "main") {
if (dirs.length > 0) files = files.concat(await this.getFilesList(dirs, token, files.length));
if (!files.length) throw new Error("提示:
文件夹是空的哦~");
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
files = await this.getFilesUrl(files, token).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[百度网盘] 获取下载地址失败");
});
} else if (temp.page === "share") {
const shareData = await this.getShareData();
const sign = await base.get(`${config.$baidu.api.getShareSign}&surl=1${shareData.share.url}$bdstoken=${shareData.baidu.token}&logid=${base.encodeBase(shareData.baidu.id)}`);
if (sign?.data?.sign && sign?.data?.timestamp) {
shareData.sign = sign.data.sign;
shareData.timestamp = sign.data.timestamp;
}
files = await this.getShareFilesUrl(files, shareData, token).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[百度网盘] 获取分享下载地址失败");
});
} else {
throw new Error("提示:
页面错误~");
}
temp.files = [files, {
get: {
dir: v => v.isdir === 1,
name: v => (v.server_filename || v.filename),
size: v => v.size,
link: v => {
if (!v.dlink || !v.dlink.startsWith("http")) return v.dlink;
const url = new URL(v.dlink);
url.searchParams.set("access_token", token);
return url.href;
},
},
headers: { "User-Agent": config.$baidu.api.ua.downloadLink },
convert: {},
dom: {
tooltip: config.$baidu.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
},
getSelectedList() {
try {
let list = [];
// 3
const fileList = unsafeWindow.document.querySelector(".file-list");
if (fileList?.__vue__?.allFileList?.[0]) list = fileList.__vue__.allFileList.filter(item => !!item.selected);
// 2
const wpCore = unsafeWindow.document.querySelector(".wp-s-core-pan");
if (wpCore?.__vue__?.selectedList?.[0]) list = wpCore.__vue__.selectedList;
// 1
const context = unsafeWindow.require?.("system-core:context/context.js");
if (context?.instanceForSystem?.list?.getSelected?.()?.[0]) list = context.instanceForSystem.list.getSelected();
return base.clone(list);
} catch (e) {
base.console.error(e);
return [];
}
},
detectPage() {
const path = location.pathname;
if (/^\/disk\/home/.test(path)) return "home";
if (/^\/disk\/main/.test(path)) return "main";
if (/^\/youth\/pan\/main/.test(path)) return "youth";
if (/^\/(s|share)\//.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.addPageListener();
},
};
const $baiduAuthorize = {
async initPanLinker() {
base.registerMenuCommand();
Swal.fire({
...temp.swalDefault,
showConfirmButton: false,
allowOutsideClick: false,
allowEscapeKey: false,
allowEnterKey: false,
html: `请稍后`,
willOpen: () => {
Swal.showLoading();
},
});
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
const url = new URL(location);
const auth = new URL(config.$baidu.api.getAccessToken);
const allowedClientIds = [
auth.searchParams.get("client_id"),
"L6g70tBRRIXLsY0Z3HwKqlRE", // pcstest_oauth
"NqOMXF6XGhGRIGemsQ9nG0Na", // ES 文件管理器,Secret:SVT6xpMdLcx6v4aCR4wT8BBOTbzFO8LM
"fSds3K4w43rw37tOqlQmTa2kDwaczK4U", // 小度智能词典笔专业版
"TFwtw8uwHxpdkvVqVKdIlx1XqXUnr1zG", // 印象笔记
"9dgBV9yesuBVOXaxls7aVHbLBLqU8yyg", // WPS文档
"l9DdBOG4RYroMscmzK5OChdaGelgd92M", // 小猴云印PC版
"Kyr013gHQBf2immy3fQt1jZ3nZVpiGAm", // 简单打印
"iYCeC9g08h5vuP9UqvPHKKSVrKFXGa1v", // Alist
"omiOnr2tYnN9vSyDErcVFWpPU2mZA7YO", // OpenList
"QHOuRXiepJBMjtk0esLhrPoNlQyYd0mF", // mcp_server
"IlLqBbU3GjQ0t46TRwFateTprHWl39zF", // 百度手机助手
"iG6ghsi9r0RR0jTFCrlvTjX9", // 百度云的小测试 https://github.com/scusjs/baiduyun/blob/43785cd7eaab6741fe2a7de7cd3391920b94c9c7/bdy/config.ini
"YgMAXXnP0Lziw0LPVbc6E4zm", // 我的目的地 https://github.com/ymgd/weixinopen/blob/2e1f9e3d32616c3623547a8f25d330598337ba04/wechat-weapp-union/zndg/app.js#L64
];
if (
/openapi.baidu.com\/oauth\/2.0\/authorize/.test(location.href) &&
url.searchParams.get("response_type").includes("token") &&
url.searchParams.get("scope").includes("netdisk") &&
allowedClientIds.includes(url.searchParams.get("client_id"))
) {
const dialog = await Swal.fire({
...temp.swalDefault,
icon: "info",
title: `提示`,
html: `(◍•ᴗ•◍) 你好呀,为了获取百度网盘文件的下载直链
“下载助手” 需要你的授权,以获取网盘文件的访问令牌
由于在百度 OAuth 页面使用了其他应用的 Client ID
所以显示的应用名称可能会有所不同,敬请理解
获取到的令牌仅用于调用百度网盘 API 生成直链
不会用于其他用途,请放心授权
`,
showConfirmButton: true,
showDenyButton: true,
allowOutsideClick: false,
allowEscapeKey: false,
allowEnterKey: false,
confirmButtonText: ` 授权`,
denyButtonText: ` 再想想`,
position: "center"
});
if (dialog.isConfirmed) {
base.waitForKeyElements("button#auth-allow", (element) => {
element[0].click();
}, true)
return;
}
if (dialog.isDenied) {
return await Swal.fire({
...temp.swalDefault,
icon: "question",
title: `好吧(* ̄3 ̄)╭`,
html: "那就再想一想
想好了就按下 “授权” 按钮吧~",
timer: 180000,
toast: true,
timerProgressBar: true,
showConfirmButton: false,
showDenyButton: false,
position: "bottom-end",
});
}
} else if (/openapi.baidu.com\/oauth\/2.0\/login_success/.test(location.href)) {
const int = setInterval(async () => {
if (location.href.includes("access_token") && (location.href.includes("basic+netdisk") || location.href.includes("basic,netdisk"))) {
clearInterval(int)
const token = location.href.match(/access_token=(.*?)&/)[1];
base.setValue("baidu_access_token", token);
await Swal.fire({
...temp.swalDefault,
icon: "success",
title: `成功啦`,
html: `(◍•ᴗ•◍) 您已成功授权/授权过脚本获取网盘访问令牌~
获取到的令牌仅用于调用百度网盘 API 生成直链
不会用于其他用途
等待 / 秒之后将关闭此页面
`,
timer: 5000,
timerProgressBar: true,
showConfirmButton: true,
showDenyButton: false,
allowOutsideClick: false,
allowEscapeKey: false,
allowEnterKey: false,
confirmButtonText: ` 关闭`,
willOpen: () => {
const secondSpan = document.getElementById("second");
const interval = setInterval(() => {
if (Swal.isVisible()) {
const timeLeft = Swal.getTimerLeft();
if (timeLeft !== null && timeLeft > 0) {
secondSpan.textContent = (timeLeft / 1000).toFixed(2);
}
} else {
clearInterval(interval);
}
}, 10);
},
didOpen(toast) {
toast.addEventListener("mouseenter", () => {
Swal.stopTimer();
});
toast.addEventListener("mouseleave", () => {
Swal.resumeTimer();
});
},
willClose: () => window.close()
});
return window.close();
} else {
clearInterval(int)
Swal.close()
}
}, 1)
} else {
Swal.close()
}
} else {
Swal.close()
}
}
}
/**
* 阿里云盘
* @author 油小猴
* @author hmjz100
*/
const $aliyun = {
addPageListener() {
$doc.on("click", ".pl-button-save", async (e) => {
e.preventDefault();
const reactDomGrid = document.querySelector(config.$aliyun.mount.grid);
if (reactDomGrid) {
const dialog = await Swal.fire({
...temp.swalDefault,
title: "提示",
html: `请先切换到 列表视图 后再获取下载地址哦
`,
icon: "info",
showCloseButton: true,
showDenyButton: true,
confirmButtonText: ` 切换`,
denyButtonText: ` 不要`,
});
if (dialog.isConfirmed) {
document.querySelector(config.$aliyun.mount.switch).click();
return message.success("提示:
切换为列表视图成功
请再获取一次下载地址吧~");
}
return false;
}
const selections = temp.main.getSelectedList();
if (selections.length === 0) {
throw new Error("提示:
请勾选要保存到网盘的文件哦~");
}
message.info("提示:
因网盘限制,请保存到自己网盘后再去下载哦~");
await base.sleep(500);
document.querySelector(`[class*="btn-save--"]`).click();
});
},
greenerPage() {
base.waitForKeyElements(`[class*="share-list-banner"]`, (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(`[class*="to-app"]`, (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(`[class*="btn-mobile-save"]`, (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(`[class*="SplashScreenImg--close"]`, (tag) => {
tag[0].click();
}, true);
base.waitForKeyElements(`[class*="container"]`, (tag) => {
tag.find(`[class^="icon-close"]`).click();
}, true);
base.waitForKeyElements(`[class*="popup_main_close"]`, (tag) => {
tag[0].click();
}, true);
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$aliyun !== true) return;
base.adaptiveThemeOverride([
["#3763ff", temp.color],
["#8664ff", `${temp.color}D0`],
["99, 125, 255", base.hexToRgba(temp.color)],
["132, 133, 141", base.hexToRgba(temp.color)],
["112, 136, 255", base.hexToRgba(temp.color)],
["97, 122, 250", base.hexToRgba(temp.color)],
["68, 109, 255", base.hexToRgba(temp.color)],
["82, 110, 250", base.hexToRgba(`${temp.color}20`)],
["122, 144, 255", base.hexToRgba(`${temp.color}D0`)],
["138, 157, 255", base.hexToRgba(`${temp.color}D0`)],
]);
},
svg: ``,
addButton() {
base.waitForKeyElements(config.$aliyun.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(`
${temp.main.svg}下载助手
`);
element.append($button);
});
base.waitForKeyElements(config.$aliyun.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(`
${temp.main.svg}下载助手
`);
$button.css({ "margin-right": "10px", "height": "36px", "width": "auto", "padding": "1px 30px" });
element.prepend($button);
});
},
addInitButton() {
const $button = $(`${temp.main.svg}点我点亮
`);
$button.click(base.showInitDialog);
base.waitForKeyElements(config.$aliyun.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
$button.css({ "width": "auto" });
element.append($button);
});
base.waitForKeyElements(config.$aliyun.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
$button.css({ "margin-right": "10px", "height": "36px", "padding": "1px 30px", "width": "auto" });
element.prepend($button);
});
},
async getLink() {
const reactDomGrid = document.querySelector(config.$aliyun.mount.grid);
if (reactDomGrid) {
const dialog = await Swal.fire({
...temp.swalDefault,
title: "提示",
html: `请先切换到 列表视图 后再获取下载地址哦
`,
icon: "info",
showCloseButton: true,
showDenyButton: true,
confirmButtonText: ` 切换`,
denyButtonText: ` 不要`,
});
if (dialog.isConfirmed) {
document.querySelector(config.$aliyun.mount.switch).click();
return message.success("提示:
切换为列表视图成功
请再获取一次下载地址吧~");
}
return false;
}
// 获取选择的文件列表
let selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => item.type !== "file")) throw new Error("提示:
请打开文件夹后再勾选文件~");
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
if (temp.page === "home") {
selects = selects.filter(item => item.type === "file");
const token = base.getStorage("token");
if (!token || !token.token_type || !token.access_token) {
return message.error("提示:
请先登录网盘~");
}
selects = await this.getFilesUrl(selects, `${token.token_type} ${token.access_token}`).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[阿里云盘] 获取下载地址失败");
});
} else {
throw new Error("提示:
页面错误~");
}
temp.files = [selects, {
get: {
dir: v => v.type === "folder",
name: v => v.name,
size: v => v.size,
link: v => (v.downloadUrl || v.url),
},
headers: {},
convert: {},
dom: {
tooltip: config.$aliyun.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
},
async getFilesUrl(items, token) {
if (base.isType(items) !== "array") return [];
items = items.filter(item => item.type === "file");
const size = 3;
let proc = 0;
const pending = items.filter(item => {
const idx = temp.glinks.findIndex(c => c.id == item.fileId);
if (idx === -1) return true;
const cached = temp.glinks[idx];
if (cached.expires > Date.now()) {
Object.assign(item, cached.data);
proc++;
return false;
}
temp.glinks.splice(idx, 1); // 过期删除
return true;
});
for (let i = 0; i < pending.length; i += size) {
// 当前批次
const batch = pending.slice(i, i + size);
await Promise.all(batch.map(async (item) => {
const res = await base.post(config.$aliyun.api.getLink, { drive_id: item.driveId, file_id: item.fileId }, { "Authorization": token, "X-Canary": "client=windows,app=adrive,version=v6.0.0" });
if (!res || !res.url || res.code) {
if (res.code == "AccessTokenInvalid") throw new Error("提示:
访问令牌过期了,请刷新后重试~
代码:" + res.code);
if (res.code) {
batch.forEach(item => item.dlink = `获取下载地址失败,服务器说:${res.code},刷新后再试试吧~`);
} else {
throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
}
};
batch.forEach(_item => {
Object.assign(_item, res);
temp.glinks.push({ id: _item.file_id, expires: (Date.now() + 5 * 60 * 1000), data: res });
});
proc++;
$doc.find(".swal2-html-container").html(`已获取 ${proc} / ${pending.length} 个地址`);
}));
// 批次间休息
if (i + size < pending.length) await base.sleep(1000);
}
return base.clone(items);
},
getSelectedList() {
try {
const list = [];
const reactDom = document.querySelector(config.$aliyun.mount.list);
const reactObj = base.findReact(reactDom, 1);
const props = reactObj.pendingProps;
if (props) {
const fileList = props.dataSource || [];
const selectedKeys = props.selectedKeys.split(",");
fileList.forEach(val => {
if (selectedKeys.includes(val.fileId)) {
list.push(val);
}
});
}
return base.clone(list);
} catch (e) {
base.console.error(e);
return [];
}
},
detectPage() {
const path = location.pathname;
if (/^\/(drive)/.test(path)) return "home";
if (/^\/(s|share)\//.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.addPageListener();
},
};
/**
* 中国移动云盘 / 和彩云
* @author 油小猴
* @author hmjz100
*/
const $mcloud = {
addPageListener() {
$doc.on("click", ".pl-button-save", async (e) => {
e.preventDefault();
const selections = temp.main.getSelectedList();
if (selections.length === 0) return message.error("提示:
请先勾选要下载的文件哦~");
if (selections.every(item => !item.contentID && !item.contentName)) return message.error("提示:
请打开文件夹后再勾选文件~");
message.info("提示:
因网盘限制,只能够通过页面直接下载哦~");
await base.sleep(500);
document.querySelector(".btn-top.btn-top_dl").click();
});
},
greenerPage() {
base.waitForKeyElements(".adv_swiper_menu", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".client-bubble", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".avs-box", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".top-adv-swiper", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".client_download_icon", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".document_top_memberCenter", (tag) => {
$(tag[0]).click(() => {
Swal.fire({
...temp.swalDefault,
html: ``,
didOpen(toast) {
const iframe = toast.querySelector('iframe');
const updateHeight = () => {
iframe.style.height = (window.innerHeight - 100) + 'px';
};
updateHeight();
window.addEventListener('resize', updateHeight);
toast._resizeHandler = updateHeight;
},
willClose(toast) {
// 清理事件监听器
window.removeEventListener('resize', toast._resizeHandler);
},
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
});
});
}, true);
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$mcloud !== true) return;
base.adaptiveThemeOverride([
["#3181f9", temp.color],
["#5a9afa", temp.color],
["#98c0fc", `${temp.color}D0`],
["#2d76e5", `${temp.color}D0`],
["49,129,249,.08", base.hexToRgba(`${temp.color}20`)],
]);
},
addButton() {
base.waitForKeyElements(config.$mcloud.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(`
下载助手
`);
element.prepend($button);
});
base.waitForKeyElements(config.$mcloud.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(`
下载助手
`);
element.prepend($button);
});
},
addInitButton() {
const $button = $(`点我点亮
`);
$button.click(base.showInitDialog);
base.waitForKeyElements(config.$mcloud.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
$button.addClass("mcloud-button");
element.prepend($button);
});
base.waitForKeyElements(config.$mcloud.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
$button.addClass("mcloud-share-button").css({ "cursor": "pointer" });
element.prepend($button);
});
},
getRandomString(len) {
len = len || 16;
const $chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678";
const maxPos = $chars.length;
let pwd;
for (let i = 0; i < len; i++) {
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
},
utob(str) {
const u = String.fromCharCode;
return str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, (t) => {
if (t.length < 2) {
const e = t.charCodeAt(0);
return e < 128 ? t : e < 2048 ? u(192 | e >>> 6) + u(128 | 63 & e) : u(224 | e >>> 12 & 15) + u(128 | e >>> 6 & 63) + u(128 | 63 & e);
}
const e = 65536 + 1024 * (t.charCodeAt(0) - 55296) + (t.charCodeAt(1) - 56320);
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 i;
if (t) {
const s = Object.assign({}, t);
i = JSON.stringify(s),
i = i.replace(/\s*/g, ""),
i = encodeURIComponent(i);
const c = i.split(""),
u = c.sort();
i = u.join("");
}
const A = md5(base.encodeBase(this.utob(i)));
const l = md5(a + ":" + n);
return md5(A + l).toUpperCase();
},
async getFileUrl(item, index) {
if (item.downloadUrl) return {
index,
downloadUrl: item.downloadUrl
};
if (this.detectPage() === "home") {
const body = {
fileId: item.contentID
}
const time = new Date(+new Date() + 8 * 3600 * 1000).toJSON().substr(0, 19).replace("T", " ");
const key = this.getRandomString(16);
const sign = this.getSign(undefined, body, time, key);
const getCookie = (name) => {
const cname = name + "=";
const ca = document.cookie.split(";");
for (let i = 0; i < ca.length; i++) {
const c = ca[i].trim();
if (c.indexOf(cname) == 0) return c.substring(cname.length, c.length);
}
return "";
}
const res = await base.post(config.$mcloud.api.getLink, body, {
"Authorization": getCookie("authorization"),
"Caller": "web",
"Content-Type": "application/json;charset=UTF-8",
"CMS-DEVICE": "default",
"Mcloud-Channel": "1000101",
"Mcloud-Client": "10701",
"Mcloud-Sign": time + "," + key + "," + sign,
"Mcloud-Version": "7.14.2",
"X-DeviceInfo": "||9|7.17.0|edge||||windows 10||zh-CN|||",
"X-Huawei-ChannelSrc": "10000034",
"X-Inner-Ntwk": "2",
"X-M4C-Caller": "PC",
"X-M4C-Src": "10002",
"X-SvcType": "1",
"X-Yun-Api-Version": "v1",
"X-Yun-App-Channel": "10000034",
"X-Yun-Channel-Source": "10000034",
"X-Yun-Client-Info": "||9|7.17.0|edge||||windows 10||zh-CN|||||",
"X-Yun-Module-Type": "100",
"X-Yun-Svc-Type": "1",
"X-Yun-Url-Type": "3"
});
if (res.success) {
return { index, downloadUrl: res.data.url };
} else {
return { index, downloadUrl: "获取下载地址失败,服务器未返回有效数据,刷新后再试试吧~" };
}
}
if (this.detectPage() === "share") {
const vueDom = document.querySelector(".main_file_list").__vue__;
const 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 { index, downloadUrl: res.data.redrUrl };
} else {
return { index, downloadUrl: "获取下载地址失败,服务器未返回有效数据,刷新后再试试吧~" };
}
}
},
async getFilesUrl(items, token) {
// TODO: 先预留着
},
async getLink() {
let selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => !item.contentID && !item.contentName)) throw new Error("提示:
请打开文件夹后再勾选文件~");
if (temp.page === "home") {
selects = selects.filter(item => item.contentID && item.contentName && item.contentSuffix);
const batchSize = 15;
let proc = 0;
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
for (let i = 0; i < selects.length; i += batchSize) {
const batch = selects.slice(i, i + batchSize);
const queue = [];
batch.forEach((item, localIndex) => {
const globalIndex = i + localIndex;
queue.push(this.getFileUrl(item, globalIndex)
.then(val => {
proc++;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
return val;
}));
});
const res = await Promise.all(queue).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[中国移动云盘] 获取下载地址失败");
});
res.forEach(val => (selects[val.index].downloadUrl = val.downloadUrl));
await base.sleep(1000);
}
} else {
throw new Error("提示:
页面错误~");
}
temp.files = [selects, {
get: {
dir: v => (v.dirEtag || v.caName),
name: v => (v.contentName || v.coName),
size: v => (v.contentSize || v.coSize),
link: v => v.downloadUrl,
},
headers: {},
convert: {},
dom: {
tooltip: config.$mcloud.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
},
getSelectedList() {
try {
return document.querySelector(".main_file_list").__vue__.selectList.map(val => val.item);
} catch {
const vueDom = document.querySelector(".home-page")?.__vue__;
const fileList = vueDom._computedWatchers.fileList.value;
const dirList = vueDom._computedWatchers.dirList.value;
const selectedFileIndex = vueDom.selectedFile;
const selectedDirIndex = vueDom.selectedDir;
const selectFileList = fileList.filter((v, i) => {
return selectedFileIndex.includes(i);
});
const selectDirList = dirList.filter((v, i) => {
return selectedDirIndex.includes(i);
});
return [...selectFileList, ...selectDirList];
}
},
detectPage() {
const path = location.pathname;
if (/^\/w/.test(path)) return "home";
if (/^\/link|shareweb/.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.addPageListener();
},
};
/**
* 天翼云盘
* @author 油小猴
* @author hmjz100
*/
const $tcloud = {
greenerPage() {
base.waitForKeyElements(".advertising-mask", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements("a.client-download.nav-block", (tag) => {
tag.fadeOut();
}, true);
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$tcloud !== true) return;
base.adaptiveThemeOverride([
["#2b89ea", temp.color],
["#1874d3", `${temp.color}F0`],
["#1890ff", temp.color],
["#388fc9", temp.color],
["#0087ff", temp.color],
["#255697", temp.color],
["#3ea6ff", `${temp.color}80`],
["#1d52f2", temp.color],
["#3699ff", `${temp.color}D0`],
["#f4f9fe", `${temp.color}10`],
["#eaf5ff", `${temp.color}20`],
], "other");
},
addButton() {
const $button = $(``);
$button.find(".pl-dropdown-menu").css({ "position": "absolute", "left": "-1px" });
base.waitForKeyElements(config.$tcloud.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
$button.find(".pl-dropdown-menu").css({ "top": "28px" });
element.prepend($button);
});
base.waitForKeyElements(config.$tcloud.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
$button.css({ "height": "28px", "border-radius": "15px" });
$button.find(".pl-dropdown-menu").css({ "top": "25px" });
element.prepend($button);
});
},
addInitButton() {
const $button = $(`点我点亮
`);
$button.click(base.showInitDialog);
base.waitForKeyElements(config.$tcloud.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
element.prepend($button);
});
base.waitForKeyElements(config.$tcloud.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
$button.css({ "height": "28px", "border-radius": "15px" });
element.prepend($button);
});
},
async getToken() {
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取状态~
`);
const res = await base.getFinal(config.$tcloud.api.getAccessToken, undefined, true);
const accessToken = res.match(/accessToken=(\w+)/)?.[1];
if (accessToken) {
base.setStorage("accessToken", accessToken);
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`获取成功,令牌已缓存~
`);
return accessToken;
}
return undefined;
},
async getFileUrl(item, index, token) {
if (item.downloadUrl) {
return {
index,
downloadUrl: item.downloadUrl
}
};
const time = Date.now();
let url = `${config.$tcloud.api.getLink}?fileId=${item.fileId}`;
let _sign = `AccessToken=${token}&Timestamp=${time}`;
if (item.shareId) {
url += `&dt=1&shareId=${item.shareId}`;
_sign += `&dt=1`;
}
_sign += `&fileId=${item.fileId}`;
if (item.shareId) {
_sign += `&shareId=${item.shareId}`;
}
const res = await base.get(url, { "Accept": "application/json;charset=UTF-8", "Sign-Type": 1, "Accesstoken": token, "Timestamp": time, "Signature": md5(_sign).toString() });
if (res.res_code == 0) {
return { index, downloadUrl: res.fileDownloadUrl };
} else if (res.errorcode == "InvalidSessionKey") {
return { index, downloadUrl: "提示:
请先登录网盘~" };
} else if (res.res_code == "ShareNotFoundFlatDir") {
return { index, downloadUrl: "提示:
请[转存]文件,之后再👉前往[我的网盘]中下载哦~" };
} else {
return { index, downloadUrl: "获取下载地址失败,刷新后再试试吧~" + (res.res_code ? res.res_code : "") };
}
},
async getLink() {
let selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => item.isFolder)) throw new Error("提示:
请打开文件夹后再勾选文件~");
selects = selects.filter(item => !item.isFolder)
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取状态~
`);
const token = base.getStorage("accessToken") || await this.getToken().catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[天翼云盘] 获取令牌失败");
});
if (!token) {
throw new Error("提示:
请先登录网盘~");
}
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`获取缓存成功~
`);
const batchSize = 15;
let proc = 0;
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
for (let i = 0; i < selects.length; i += batchSize) {
const batch = selects.slice(i, i + batchSize);
const queue = [];
batch.forEach((item, localIndex) => {
const globalIndex = i + localIndex;
queue.push(this.getFileUrl(item, globalIndex, token)
.then(val => {
proc++;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
return val;
}));
});
const res = await Promise.all(queue).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[天翼云盘] 获取下载地址失败");
});
res.forEach(val => {
selects[val.index].downloadUrl = val.downloadUrl;
});
await base.sleep(1000);
}
temp.files = [selects, {
get: {
dir: v => v.isFolder,
name: v => v.fileName,
size: v => v.size,
link: v => v.downloadUrl,
},
headers: {},
convert: {},
dom: {
tooltip: config.$mcloud.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
},
getSelectedList() {
try {
return document.querySelector(".c-file-list").__vue__.selectedList;
} catch {
return [document.querySelector(".info-detail").__vue__.fileDetail];
}
},
detectPage() {
const path = location.pathname;
if (/^\/web\/main/.test(path)) return "home";
if (/^\/web\/share/.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.getToken();
},
};
/**
* 迅雷云盘
* @author 油小猴
* @author hmjz100
*/
const $xunlei = {
addPageListener() {
$doc.on("click", ".pl-button-save", async (e) => {
e.preventDefault();
const selections = temp.main.getSelectedList();
if (selections.length === 0) {
return message.error("提示:
请勾选要保存到网盘的文件哦~");
}
message.info("提示:
因网盘限制,请保存到自己网盘后再去下载哦~");
await base.sleep(500);
document.querySelector(".saveToCloud").click();
});
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$xunlei !== true) return;
base.adaptiveThemeOverride([
["#3f85ff", temp.color],
["63,133,255,.1", base.hexToRgba(`${temp.color}20`)],
["#2670ea", `${temp.color}D0`],
["#619bff", `${temp.color}D0`],
["#ecf3ff", `${temp.color}10`],
["#f6faff", `${temp.color}10`],
["#1a2845", `${temp.color}20`],
["#0f2035", `${temp.color}20`],
["#308bfd", `${temp.color}20`],
["#eee", `${temp.color}20`],
], "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.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(`下载助手
`);
element.prepend($button);
});
base.waitForKeyElements(config.$xunlei.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(``);
element.append($button);
});
},
addInitButton() {
base.waitForKeyElements(config.$xunlei.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(`点我点亮
`);
$button.click(base.showInitDialog);
element.prepend($button);
});
base.waitForKeyElements(config.$xunlei.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(``);
$button.click(base.showInitDialog);
element.append($button);
});
},
_getCaptchaSign(clientId, version, host, deviceId, timestamp) {
// 基础参数
let currentHash = `${clientId}${version}${host}${deviceId}${timestamp}`;
// 12 层哈希的盐值
const salts = [
"o6b11ImBwJA1KSNMTALjL0xMkMjTP",
"oVHCQaox9N6+R91GY63sbxci9K9ymFl",
"XReS2zbwYB/+vUnYDwZ",
"O56ssQHYiK5enUTKaV",
"sGKNxaX7aUzpjJ2n+/2f1I0",
"1oyQWde2s4zvz",
"ziq13Yyc6HUXr3477c20PJfwBjg7ux",
"xKMXTJmlEqamEpkWfp6WeP1qZezdCA",
"rUA",
"XVIzRTbY7MGdUXn0+qLjw",
"aGrpbD3EUDGo0wmvaKPDGxVRaNVN6",
"ieQk/"
];
// 循环进行 12 层哈希计算
for (let i = 0; i < salts.length; i++) {
currentHash = md5(currentHash + salts[i]);
}
// 最终返回验证值
return `1.${currentHash}`;
},
async getToken(force = false, title = true) {
if (!this.getToken.lock) this.getToken.lock = Promise.resolve();
return this.getToken.lock = this.getToken.lock.then(async () => {
if (title) {
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`获取状态中~
`);
}
let creds = {}, cap = {};
let userId = "", clientId = "", credsKey = "", capKey = "";
const clientVersion = "1.92.62";
const timestamp = Date.now();
// 提取信息
const rawDeviceId = base.getStorage("deviceid") || "";
const deviceId = /(\w{32})/.exec(rawDeviceId?.split?.(",")?.[0])?.[0] || ""; // 32 位设备 ID
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
const val = base.getStorage(key);
if (key.startsWith("credentials_")) {
creds = val || {};
userId = creds?.user_id || "";
clientId = key.split("_")[1];
credsKey = key;
capKey = `captcha_${clientId}`;
} else if (key.startsWith("captcha_")) {
cap = val || {};
if (!clientId) {
clientId = key.split("_")[1];
capKey = key;
credsKey = `credentials_${clientId}`;
}
}
}
// 基本校验,无客户端 ID 或设备 ID 直接抛错
if (!clientId || !deviceId) throw new Error(`错误:
请先登录网盘后再获取文件呢~`);
// 检查并刷新 Credentials
const credsExpiresAt = creds?.expires_at ? new Date(creds.expires_at).getTime() : 0;
// 提前 60 秒算作过期,防止临界点请求失效
const isCredsExpired = force || !creds?.access_token || Date.now() >= (credsExpiresAt - 60000);
if (isCredsExpired) {
if (!creds?.refresh_token) throw new Error(`错误:
登录凭证已过期,且未检测到刷新令牌,请重新登录网盘~`);
$doc.find(".loading-popup .swal2-html-container").html(`登录凭证过期,正在获取新凭证~
`);
try {
const credsRes = await base.post(config.$xunlei.api.getAccessToken, {
client_id: clientId,
grant_type: "refresh_token",
refresh_token: creds.refresh_token
}, {
"Content-Type": "application/json",
"x-action": "401",
"x-client-id": clientId,
"x-device-id": rawDeviceId,
"x-device-sign": deviceId,
"x-protocol-version": "301",
"x-sdk-version": "3.4.20"
});
if (credsRes?.access_token) {
creds = {
...creds,
...credsRes,
expires_at: new Date(timestamp + (credsRes.expires_in || 43200) * 1000).toISOString()
};
userId = creds.user_id || userId;
base.setStorage(credsKey, creds);
} else {
throw new Error(credsRes?.error_description || credsRes?.error || "未知错误");
}
} catch (e) {
throw new Error(`错误:
身份凭证刷新失败:${e.message || e}`, { cause: e });
}
}
// 检查并刷新 Captcha
const capExpiresAt = cap?.expires_at ? new Date(cap.expires_at).getTime() : 0;
const isCapExpired = force || !cap?.token || Date.now() >= (capExpiresAt - 60000);
if (isCapExpired) {
$doc.find(".loading-popup .swal2-html-container").html(`验证令牌过期,正在获取新令牌~
`);
try {
const capRes = await base.post(config.$xunlei.api.getCaptchaToken, {
client_id: clientId,
action: "get:/drive/v1/about",
device_id: deviceId,
meta: {
username: "",
phone_number: "",
email: "",
package_name: location.host,
client_version: clientVersion,
captcha_sign: this._getCaptchaSign(clientId, clientVersion, location.host, deviceId, timestamp.toString()),
timestamp: timestamp.toString(),
user_id: userId
}
}, { "Content-Type": "application/json" });
if (capRes?.captcha_token) {
cap = {
token: capRes.captcha_token,
expires_at: new Date(timestamp + capRes.expires_in * 1000).toString()
};
base.setStorage(capKey, cap);
} else {
throw new Error(capRes?.error_description || capRes?.error || "未知错误");
}
} catch (e) {
throw new Error(`错误:
验证令牌刷新失败:${e.message || e}`, { cause: e });
}
}
// 终极校验
if (!creds?.access_token || !cap?.token) throw new Error(`错误:
获取令牌失败,请重新登录网盘~`);
return { credentials: creds, captcha: cap, device_id: deviceId };
});
},
async getFileUrl(item, index, isRetry = false) {
if (item.downloadUrl) return { index, downloadUrl: item.downloadUrl };
// 获取当前内存中的 token
const token = await this.getToken(false, false).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[迅雷云盘] 获取令牌失败");
});
const res = await base.get(config.$xunlei.api.getLink + item.id, {
"Authorization": `${token.credentials?.token_type} ${token.credentials?.access_token}`,
"Content-Type": "application/json",
"X-Captcha-Token": token.captcha.token,
"X-Device-Id": token.device_id
});
if (res.web_content_link) {
return { index, downloadUrl: res.web_content_link };
} else {
// 令牌过期
if (res.error_code == 9) {
// 递归重试一次,isRetry=true 防止死循环
if (!isRetry) {
await this.getToken(true, false);
return await this.getFileUrl(item, index, true);
} else {
return { index, downloadUrl: "获取下载地址失败,服务器说:页面的验证令牌过期了,请再重新获取一次吧~" };
}
}
return {
index,
downloadUrl: `获取下载地址失败,${res.error_description ? "服务器说:" + res.error_description : "刷新后再试试吧~"}`
};
}
},
async getLink() {
const selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => item.kind !== "drive#file")) throw new Error("提示:
请打开文件夹后再勾选文件~");
if (temp.page === "home") {
const batchSize = 15;
let proc = 0;
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
for (let i = 0; i < selects.length; i += batchSize) {
const batch = selects.slice(i, i + batchSize);
const queue = [];
batch.forEach((item, localIndex) => {
const globalIndex = i + localIndex;
queue.push(this.getFileUrl(item, globalIndex)
.then(val => {
proc++;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
return val;
}));
});
const res = await Promise.all(queue).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[迅雷云盘] 获取下载地址失败");
});
res.forEach(val => {
selects[val.index].downloadUrl = val.downloadUrl;
});
await base.sleep(1000);
}
} else {
throw new Error("提示:
页面错误~");
}
temp.files = [selects, {
get: {
dir: v => v.kind === "drive#folder",
name: v => v.name,
size: v => v.size,
link: v => v.downloadUrl,
morror: v => base.getMirrorList(v, config.$xunlei.api.mirror),
},
headers: {},
convert: {},
dom: {
tooltip: config.$xunlei.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
},
getSelectedList() {
try {
const doms = document.querySelectorAll(`[class*="SourceListItem__item--"]`), list = [];
if (doms.length) for (const dom of doms) {
const domVue = dom.__vue__;
if (domVue?.selected?.includes?.(domVue.info.id)) list.push(domVue.info);
}
return base.clone(list);
} catch {
return [];
}
},
detectPage() {
const path = location.pathname;
if (/^\/$/.test(path)) return "home";
if (/^\/(s|share)\//.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.addPageListener();
},
};
/**
* 光鸭云盘
* @author hmjz100
*/
const $guangya = {
addPageListener() {
this.getShareToken(true).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[光鸭云盘] 获取分享令牌失败");
});
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$guangya !== true) return;
base.adaptiveThemeOverride([
["#ff6800", temp.color],
["#F06200", `${temp.color}D0`],
["#FFA70E", `${temp.color}20`],
["#FFC30E", `${temp.color}10`],
], "other");
// base.addStyle(`${mount}-guangya`, "style", ``);
},
svg: ``,
addButton() {
const $button = $(``);
base.waitForKeyElements(config.$guangya.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
$button.addClass([...document.querySelector(`[class*="ant-btn css-"]`).className.match(/css-[a-z0-9]+ css-var-[a-z0-9_]+/g) || []].join(' '));
$button.find(".pl-dropdown-menu").css({ "top": "34px" });
element.prepend($button);
});
base.waitForKeyElements(config.$guangya.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
$button.addClass([...document.querySelector(`[class*="ant-btn css-"]`).className.match(/css-[a-z0-9]+ css-var-[a-z0-9_]+/g) || []].join(' '));
$button.addClass("ant-btn-lg");
$button.find(".pl-dropdown-menu").addClass("reverse").css({ "bottom": "46px" });
element.append($button);
});
},
addInitButton() {
const $button = $(``);
$button.click(base.showInitDialog);
base.waitForKeyElements(config.$guangya.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
$button.addClass([...document.querySelector(`[class*="ant-btn css-"]`).className.match(/css-[a-z0-9]+ css-var-[a-z0-9_]+/g) || []].join(' '));
$button.find(".pl-dropdown-menu").css({ "top": "34px" });
element.prepend($button);
});
base.waitForKeyElements(config.$guangya.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
$button.addClass([...document.querySelector(`[class*="ant-btn css-"]`).className.match(/css-[a-z0-9]+ css-var-[a-z0-9_]+/g) || []].join(' '));
$button.addClass("ant-btn-lg");
$button.find(".pl-dropdown-menu").css({ "bottom": "46px" });
element.append($button);
});
},
getToken() {
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取状态~
`);
let credentials = {}, captcha = {};
for (let i = 0; i < localStorage.length; i++) {
if (/^credentials_/.test(localStorage.key(i))) {
credentials = base.getStorage(localStorage.key(i));
base.setStorage("");
}
if (/^captcha_[\w]{16}/.test(localStorage.key(i))) {
captcha = base.getStorage(localStorage.key(i));
}
}
const deviceid = /(\w{32})/.exec(base.getStorage("deviceid").split(","))[0];
const token = {
credentials,
captcha,
deviceid
};
return token;
},
async getShareToken(isWaitForType, token) {
const url = new URL(window.location.href);
const shareId = url.pathname.match?.(/\/s\/([^/?#]+)/)?.[1] || null;
const urlCode = url.searchParams.get('code');
let code = urlCode;
if (!urlCode) {
if (!code && this.getShareToken.code) {
code = this.getShareToken.code;
}
if (!code && isWaitForType) {
base.waitForKeyElements(`input.ant-input[type=text]`, (element) => {
if (element.data('code-listener-bound')) return;
element.data('code-listener-bound', true);
element.on('input', (e) => {
const val = e.target.value.trim();
if (val) this.getShareToken.code = val;
});
});
return;
}
}
const res = await base.post(config.$guangya.api.getShareToken, { "shareId": shareId, "code": code }, { "Authorization": `${token.credentials?.token_type} ${token.credentials?.access_token}`, "Content-Type": "application/json", "X-Captcha-Token": token.captcha.captcha_token, "X-Device-Id": token.deviceid });
if (res.data?.accessToken) return res.data.accessToken;
else throw new Error(`提示:
获取分享令牌失败,${res.msg ? "服务器说:" + res.msg + "。" : "刷新后再试试吧~"}`);
},
async getFileUrl(item, index, token, shareToken) {
try {
let res;
if (item.downloadUrl) return { index, downloadUrl: item.downloadUrl };
if (shareToken) {
res = await base.post(config.$guangya.api.getShareLink, { "fileId": item.fileId, "accessToken": shareToken }, { "Authorization": `${token.credentials?.token_type} ${token.credentials?.access_token}`, "Content-Type": "application/json", "X-Captcha-Token": token.captcha.captcha_token, "X-Device-Id": token.deviceid });
} else {
res = await base.post(config.$guangya.api.getLink, { "fileId": item.fileId }, { "Authorization": `${token.credentials?.token_type} ${token.credentials?.access_token}`, "Content-Type": "application/json", "X-Captcha-Token": token.captcha.captcha_token, "X-Device-Id": token.deviceid });
}
if (res.data?.signedURL || res.data?.downloadUrl) {
return { index, downloadUrl: res.data?.signedURL ?? res.data?.downloadUrl };
} else if (res.code) {
if (res.code == 9) return { index, downloadUrl: "获取下载地址失败,服务器说:页面验证过期了,刷新后再获取吧~" };
if (res.code == 103) return { index, downloadUrl: "获取下载地址失败,服务器说:后端 RPC 响应超时。脚本建议:再重新获取一次~" };
if (res.code == 207) return { index, downloadUrl: "获取下载地址失败,服务器说:分享者未打开免登录下载。请登录后下载~" };
} else {
return { index, downloadUrl: `获取下载地址失败,${res.msg ? "服务器说:" + res.msg + "。" : "刷新后再试试吧~"}` };
}
} catch {
throw new Error("提示:
请先登录网盘后再刷新页面呢~");
}
},
async getLink() {
const selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => item.resType == 2)) throw new Error("提示:
请打开文件夹后再勾选文件~");
if (temp.page === "home") {
const token = this.getToken();
const batchSize = 15;
let proc = 0;
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
for (let i = 0; i < selects.length; i += batchSize) {
const batch = selects.slice(i, i + batchSize);
const queue = [];
batch.forEach((item, localIndex) => {
const globalIndex = i + localIndex;
queue.push(this.getFileUrl(item, globalIndex, token)
.then(val => {
proc++;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
return val;
}));
});
const res = await Promise.all(queue).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[光鸭云盘] 获取文件下载地址失败");
});
res.forEach(val => {
selects[val.index].downloadUrl = val.downloadUrl;
});
await base.sleep(1000);
}
} else if (temp.page === "share") {
const token = this.getToken();
const shareToken = await this.getShareToken(false, token).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[光鸭云盘] 获取分享令牌失败");
});
const batchSize = 15;
let proc = 0;
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
for (let i = 0; i < selects.length; i += batchSize) {
const batch = selects.slice(i, i + batchSize);
const queue = [];
batch.forEach((item, localIndex) => {
const globalIndex = i + localIndex;
queue.push(this.getFileUrl(item, globalIndex, token, shareToken)
.then(val => {
proc++;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
return val;
}));
});
const res = await Promise.all(queue).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[光鸭云盘] 获取文件下载地址失败");
});
res.forEach(val => {
selects[val.index].downloadUrl = val.downloadUrl;
});
await base.sleep(1000);
}
} else {
throw new Error("提示:
页面错误~");
}
temp.files = [selects, {
get: {
dir: v => v.resType == 2,
name: v => v.fileName,
size: v => v.fileSize,
link: v => v.downloadUrl,
},
headers: {},
convert: {},
dom: {
tooltip: config.$guangya.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
},
getSelectedList() {
try {
const selectedList = [];
const reactDom = document.querySelector(`.swangpan-file-list__root[data-ui="file-list"]`);
const reactObj = base.findReact(reactDom);
const props = reactObj.pendingProps;
if (props) {
const fileList = props.dataSource || [];
const selectedKeys = props.selectedItems || [];
fileList.forEach(val => {
if (selectedKeys.includes(val.fileId)) selectedList.push({ ...val });
});
}
return selectedList;
} catch {
return [];
}
},
detectPage() {
const path = location.pathname;
if (/^\/$/.test(path)) return "home";
if (/^\/(s|share)\//.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.addPageListener();
},
};
/**
* 夸克网盘
* @author 油小猴
* @author hmjz100
*/
const $quark = {
addPageListener() {
$doc.on("click", ".pl-button-save", async (e) => {
e.preventDefault();
const selections = temp.main.getSelectedList();
if (selections.length === 0) {
return message.error("提示:
请勾选要保存到网盘的文件哦~");
}
message.info("提示:
因网盘限制,请保存到自己网盘后再去下载哦~");
await base.sleep(500);
document.querySelector(".share-path").click();
base.waitForKeyElements(".btn-file.btn-file-primary.confirm-btn", (element) => {
element.one("click", async () => {
await base.sleep(1000);
document.querySelector(".share-save").click();
});
return true;
}, true)
});
},
greenerPage() {
base.waitForKeyElements(`[class*="Activity--video-toolbar-activity"]`, (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(`span[class*="SectionHeaderController--icon-download"]`, (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(`div[class*="SectionHeaderController--download-popover"]`, (tag) => {
tag.find(".ant-popover-arrow").css({ "left": "75%" });
}, true);
base.waitForKeyElements(`div[class*="DetailLayout--client-download"]`, (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".next-box.share-right-side-content", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(`[class*="DetailLayout--container"] .feature-screen`, (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".ant-modal-content .ant-modal-body .right-wrap", (tag) => {
if (tag.find(".hint").text().includes("客户端")) tag.fadeOut();
}, true);
base.waitForKeyElements(".pc-member-entrance span.button-text", (tag) => {
tag.text("会员中心");
const observer = new MutationObserver(mutations => {
mutations.forEach(() => {
if (tag.text() === "会员中心") return;
tag.text("会员中心");
});
});
const config = { subtree: true, characterData: true, childList: true };
observer.observe(tag[0], config);
}, true);
base.waitForKeyElements(".pc-member-entrance .tips", (tag) => {
tag.fadeOut();
}, true);
base.waitForKeyElements(".modal .modal-content .halo-animated-background .halo-content .pay-modal .close", (tag) => {
tag[0].click();
}, true);
base.waitForKeyElements(".modal .modal-content .halo-animated-background .halo-content .red-envelope .close", (tag) => {
tag[0].click();
}, true);
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$quark !== true) return;
base.adaptiveThemeOverride([
["#0d53ff", temp.color],
["#e6f1ff", `${temp.color}20`],
["#f0faff", `${temp.color}20`],
["#7da3ff", `${temp.color}D0`],
["#ddd", `${temp.color}D0`],
["17,17,17,.9", base.hexToRgba(`${temp.color}D0`)],
["40,40,255,.04", base.hexToRgba(`${temp.color}20`)],
["#f7f7ff", "transparent"],
["238,247,255,0", base.hexToRgba(`${temp.color}00`)],
]);
base.addStyle(`${mount}-quark`, "style", `.file-list .hover-oper .hover-transparent-bg{background:transparent!important} .ant-checkbox-wrapper .ant-checkbox-checked .ant-checkbox-inner,.ant-checkbox-wrapper .ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:${temp.color}!important}`);
},
svg: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTUgNHYxSDIuNWEuNS41IDAgMCAwLS41LjV2OGEuNS41IDAgMCAwIC41LjVoMTFhLjUuNSAwIDAgMCAuNS0uNXYtOGEuNS41IDAgMCAwLS41LS41SDExVjRoMi41QTEuNSAxLjUgMCAwIDEgMTUgNS41djhhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xMUExLjUgMS41IDAgMCAxIDEgMTMuNXYtOEExLjUgMS41IDAgMCAxIDIuNSA0em0zLjUtM3Y2LjVoMWwuMDg1LjAwN0EuNS41IDAgMCAxIDkuOSA4LjNsLTEuNDkyIDEuOTktLjAwOC4wMTRhLjUuNSAwIDAgMS0uOC0uMDA0bC0xLjUtMi0uMDQ2LS4wNzNBLjUuNSAwIDAgMSA2LjUgNy41aDFWMXoiLz48L3N2Zz4=",
addButton() {
base.waitForKeyElements(config.$quark.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(``);
$button.css({ "margin-right": "16px" });
element.prepend($button);
});
base.waitForKeyElements(config.$quark.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(``);
$button.css({ "height": "36px", "margin-left": "16px", "border-radius": "6px", "display": "inline-block" });
element.append($button);
});
},
addInitButton() {
base.waitForKeyElements(config.$quark.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(``);
$button.css({ "margin-right": "16px", "display": "inline-block" });
$button.click(base.showInitDialog);
element.prepend($button);
});
base.waitForKeyElements(config.$quark.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(``);
$button.css({ "height": "36px", "margin-left": "16px", "border-radius": "6px", "display": "inline-block" });
$button.click(base.showInitDialog);
element.append($button);
});
},
async getSocialToken() {
const now = Date.now();
// 检查缓存的令牌
const cachedToken = base.getValue("quark_social_token");
if (cachedToken && cachedToken.token && cachedToken.expired_timestamp) {
// 如果令牌未过期(预留60秒缓冲时间),直接返回缓存的令牌
if (cachedToken.expired_timestamp > now + 60000) {
return cachedToken.token;
}
}
const time = Math.floor(now / 1e3);
const res = await base.post(config.$quark.api.getSocialToken, { "conversation_id": "300000" + time, "conversation_type": 3, "msg_id": time + "000" }, { "Content-Type": "application/json", "Cookie": String(document.cookie), "User-Agent": config.$quark.api.ua.main });
if (!res || res.code !== 0 || !res.data?.token) {
if (res.code == 31001) throw new Error("提示:
请先登录网盘~
代码:" + res.code);
if (res.code || res.message) {
throw new Error(`提示:
获取令牌失败了~
${res.code ? res.code : ""} ${res.message ? res.message : ""}`);
} else {
throw new Error("提示:
获取令牌失败,刷新网页后再试试吧~");
}
}
// 缓存令牌数据
base.setValue("quark_social_token", res.data);
return res?.data?.token || "";
},
async getLink() {
let selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => !item.file)) throw new Error("提示:
请打开文件夹后再勾选文件~");
if (temp.page === "home") {
const data = [];
const batchSize = 15;
let proc = 0;
selects = selects.filter(item => item.file === true)
for (let i = 0; i < selects.length; i += batchSize) {
// 获取当前批次文件
const batch = selects.slice(i, i + batchSize);
const fids = batch.map(item => item.fid);
const token = await this.getSocialToken();
// 发起请求获取地址
const res = await base.post(config.$quark.api.getLink, { "fids": fids, "speedup_session": "", "token": token }, { "Content-Type": "application/json", "Cookie": String(document.cookie), "User-Agent": config.$quark.api.ua.main });
if (!res || res.code !== 0 || !res.data) {
if (res.code == 31001) throw new Error("提示:
请先登录网盘~
代码:" + res.code);
if (res.code == 23018) {
const fid = res.message?.match(/\[([a-f0-9]{32})\]/)?.[1];
const item = batch.find(item => item.fid === fid);
throw new Error(`提示:
超出游客可获取大小限制
请登录后获取哦~${item?.file_name ? `
文件:${item.file_name}` : ""}`);
}
base.delValue("quark_social_token");
if (res.code || res.message) {
throw new Error(`提示:
获取地址失败了~
${res.code ? res.code : ""} ${res.message ? res.message : ""}`);
} else {
throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
}
}
// 合并响应数据
if (res.data) data.push(...res.data);
// 更新处理进度
proc += batch.length;
// 更新UI显示
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
// 请求间隔节流
await base.sleep(1000);
}
temp.files = [data, {
get: {
dir: v => v.file === false,
name: v => v.file_name,
size: v => v.size,
link: v => v.download_url,
},
headers: { "User-Agent": config.$quark.api.ua.main, "Cookie": String(document.cookie) },
convert: {},
dom: {
tooltip: config.$quark.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 412) return ` 服务器说:需要登录才能下载~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
} else if (temp.page === "share") {
const pwd_id = unsafeWindow.factStat?.ut?.baseParams?.pwd_id || // fast
unsafeWindow.factStat?.wa?.customStatParams?.pwd_id || // drive
location.pathname.match(/^\/(?:s|share)\/([a-zA-Z0-9]+)/)?.[1]; // 兜底
if (!pwd_id) throw new Error("错误:
无法提取分享 ID~");
temp.pugs = temp.pugs || base.standCookies(document.cookie, "cookie")?.__pugs || "";
const cookie = `__pugs=${temp.pugs}`;
const data = [];
const batchSize = 15;
let proc = 0;
selects = selects.filter(item => item.file === true)
for (let i = 0; i < selects.length; i += batchSize) {
// 获取当前批次文件
const batch = selects.slice(i, i + batchSize);
const fids = batch.map(item => item.fid);
const fids_token = batch.map(item => item.share_fid_token);
const token = await this.getSocialToken().catch(() => "");
// 发起请求获取地址
let res = await base.post(config.$quark.api.getLink, { "fids": fids, "fids_token": fids_token, pwd_id, "stoken": batch[0].stoken, "speedup_session": "", "token": token }, { "Content-Type": "application/json", "Cookie": cookie, "User-Agent": config.$quark.api.ua.main }, "json", true, true);
if (!temp.pugs && res?.responseHeaders?.["Set-Cookie"]?.__pugs) temp.pugs = res?.responseHeaders?.["Set-Cookie"]?.__pugs;
res = res.responseDecode ?? res.response ?? res.responseText;
if (!res || res.code !== 0 || !res.data) {
if (res.code == 31001) throw new Error("提示:
请先登录网盘~
代码:" + res.code);
if (res.code == 23018) {
const fid = res.message?.match(/\[([a-f0-9]{32})\]/)?.[1];
const item = batch.find(item => item.fid === fid);
throw new Error(`提示:
超出游客可获取大小限制
请登录后获取哦~${item?.file_name ? `
文件:${item.file_name}` : ""}`);
}
if (res.code || res.message) {
throw new Error(`提示:
获取地址失败了~
${res.code ? res.code : ""} ${res.message ? res.message : ""}`);
} else {
throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
}
}
// 合并响应数据
if (res.data) data.push(...res.data);
// 更新处理进度
proc += batch.length;
// 更新UI显示
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
// 请求间隔节流
await base.sleep(1000);
}
temp.files = [data, {
get: {
dir: v => v.file === false,
name: v => v.file_name,
size: v => v.size,
link: v => v.download_url,
},
headers: {
"User-Agent": config.$quark.api.ua.main,
"Cookie": temp.pugs ? cookie : String(document.cookie)
},
convert: {},
dom: {
tooltip: config.$quark.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 412) return ` 服务器说:需要登录才能下载~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
} else {
throw new Error("提示:
页面错误~");
}
},
getSelectedList() {
try {
const selectedList = [];
const reactDom = document.getElementsByClassName("file-list")[0];
const reactObj = base.findReact(reactDom);
const props = reactObj.props;
if (props) {
const stoken = props.stoken || "";
const fileList = props.list || [];
const selectedKeys = props.selectedRowKeys || [];
fileList.forEach(val => {
if (selectedKeys.includes(val.fid)) selectedList.push({ ...val, stoken });
});
}
return selectedList;
} catch {
return [];
}
},
detectPage() {
const path = location.pathname;
if (/^\/(list)/.test(path)) return "home";
if (/^\/(s|share)\//.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.addPageListener();
},
};
/**
* UC网盘
* @author 油小猴
* @author hmjz100
*/
const $uc = {
addPageListener() {
$doc.on("click", ".pl-button-save", async (e) => {
e.preventDefault();
const selections = temp.main.getSelectedList();
if (selections.length === 0) {
return message.error("提示:
请勾选要保存到网盘的文件哦~");
}
message.info("提示:
因网盘限制,请保存到自己网盘后再去下载哦~");
await base.sleep(500);
document.querySelector(".file-info_r").click();
});
},
greenerPage() {
base.waitForKeyElements(`[class*="VideoDetail--content-footer"]`, (tag) => {
tag.children().each((_, element) => {
const $child = $(element);
if ($child.text().includes("手机客户端")) $child.hide();
});
}, true);
base.waitForKeyElements(`[class*="PCLandingBanner--ad-block"]`, (tag) => {
tag.hide();
}, true);
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$uc !== true) return;
base.adaptiveThemeOverride([
["#12161a", temp.color],
["#e6f1ff", `${temp.color}20`],
["#f0faff", `${temp.color}20`],
["#7da3ff", `${temp.color}D0`],
["#ddd", `${temp.color}D0`],
["17,17,17,.9", base.hexToRgba(`${temp.color}D0`)],
["40,40,255,.04", base.hexToRgba(`${temp.color}20`)],
["#f7f7ff", "transparent"],
["238,247,255,0", base.hexToRgba(`${temp.color}00`)],
]);
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) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(``);
$button.css({ "margin-right": "10px", "display": "inline-block" });
element.prepend($button);
});
base.waitForKeyElements(config.$uc.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(``);
$button.css({ "margin-left": "10px", "display": "inline-block" });
element.append($button);
});
},
addInitButton() {
const $button = $(``);
$button.click(base.showInitDialog);
base.waitForKeyElements(config.$uc.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
$button.css({ "margin-right": "10px", "display": "inline-block" });
element.prepend($button);
});
base.waitForKeyElements(config.$uc.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
$button.css({ "margin-left": "10px", "display": "inline-block" });
element.append($button);
});
},
async getLink() {
let selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => !item.file)) throw new Error("提示:
请打开文件夹后再勾选文件~");
if (temp.page === "home") {
const data = [];
const batchSize = 15;
let proc = 0;
selects = selects.filter(item => item.file === true)
for (let i = 0; i < selects.length; i += batchSize) {
// 获取当前批次文件
const batch = selects.slice(i, i + batchSize);
const fids = batch.map(item => item.fid);
// 发起请求获取地址
const res = await base.post(config.$uc.api.getLink, { "fids": fids }, { "Content-Type": "application/json", "Cookie": String(document.cookie), "User-Agent": config.$uc.api.ua.main, "Sec-Ch-Ua": config.$uc.api.ua.secCh });
if (!res || res.code !== 0 || !res.data) {
if (res.code == 31001) throw new Error("提示:
请先登录网盘~
代码:" + res.code);
if (res.code == 23018) {
const fid = res.message?.match(/\[([a-f0-9]{32})\]/)?.[1];
const item = batch.find(item => item.fid === fid);
throw new Error(`提示:
超出游客可获取大小限制
请登录后获取哦~${item?.file_name ? `
文件:${item.file_name}` : ""}`);
}
if (res.code || res.message) {
throw new Error(`提示:
获取地址失败了~
${res.code ? res.code : ""} ${res.message ? res.message : ""}`);
} else {
throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
}
}
// 合并响应数据
if (res.data) data.push(...res.data);
// 更新处理进度
proc += batch.length;
// 更新UI显示
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
// 请求间隔节流
await base.sleep(1000);
}
temp.files = [data, {
get: {
dir: v => v.file === false,
name: v => v.file_name,
size: v => v.size,
link: v => v.download_url,
},
headers: { "User-Agent": config.$uc.api.ua.main, "Sec-Ch-Ua": config.$uc.api.ua.secCh },
convert: {},
dom: {
tooltip: config.$uc.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.responseText?.includes?.("require login")) return ` 服务器说:需要登录才能下载~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
} else if (temp.page === "share") {
const pwd_id = unsafeWindow.factStat?.ut?.baseParams?.pwd_id || // fast
unsafeWindow.factStat?.wa?.customStatParams?.pwd_id || // drive
location.pathname.match(/^\/(?:s|share)\/([a-zA-Z0-9]+)/)?.[1]; // 兜底
if (!pwd_id) throw new Error("错误:
无法提取分享 ID~");
const data = [];
const batchSize = 15;
let proc = 0;
selects = selects.filter(item => item.file === true)
for (let i = 0; i < selects.length; i += batchSize) {
// 获取当前批次文件
const batch = selects.slice(i, i + batchSize);
const fids = batch.map(item => item.fid);
const fids_token = batch.map(item => item.share_fid_token);
// 发起请求获取地址
const res = await base.post(config.$uc.api.getLink, { "fids": fids, "fids_token": fids_token, pwd_id, "stoken": batch[0].stoken }, { "Content-Type": "application/json", "Cookie": String(document.cookie), "User-Agent": config.$uc.api.ua.main, "Sec-Ch-Ua": config.$uc.api.ua.secCh });
if (!res || res.code !== 0 || !res.data) {
if (res.code == 31001) throw new Error("提示:
请先登录网盘~
代码:" + res.code);
if (res.code == 23018) {
const fid = res.message?.match(/\[([a-f0-9]{32})\]/)?.[1];
const item = batch.find(item => item.fid === fid);
throw new Error(`提示:
超出游客可获取大小限制
请登录后获取哦~${item?.file_name ? `
文件:${item.file_name}` : ""}`);
}
if (res.code || res.message) {
throw new Error(`提示:
获取地址失败了~
${res.code ? res.code : ""} ${res.message ? res.message : ""}`);
} else {
throw new Error("提示:
获取下载地址失败,刷新网页后再试试吧~");
}
}
// 合并响应数据
if (res.data) {
data.push(...res.data);
}
// 更新处理进度
proc += batch.length;
// 更新UI显示
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
// 请求间隔节流
await base.sleep(1000);
}
temp.files = [data, {
get: {
dir: v => v.file === false,
name: v => v.file_name,
size: v => v.size,
link: v => v.download_url,
},
headers: { "User-Agent": config.$uc.api.ua.main, "Sec-Ch-Ua": config.$uc.api.ua.secCh },
convert: {},
dom: {
tooltip: config.$uc.dom,
download: {
error: (error) => {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.responseText?.includes?.("require login")) return ` 服务器说:需要登录才能下载~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
} else {
throw new Error("提示:
页面错误~");
}
},
getSelectedList() {
try {
const selectedList = [];
const reactDom = document.getElementsByClassName("file-list")[0];
const reactObj = base.findReact(reactDom);
const props = reactObj.props;
if (props) {
const stoken = props.stoken || "";
const fileList = props.list || [];
const selectedKeys = props.selectedRowKeys || [];
fileList.forEach(val => {
if (selectedKeys.includes(val.fid)) selectedList.push({ ...val, stoken });
});
}
return selectedList;
} catch {
return [];
}
},
detectPage() {
const path = location.pathname;
if (/^\/(list)/.test(path)) return "home";
if (/^\/(s|share)\//.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
this.addPageListener();
},
};
/**
* 123云盘
* @author 油小猴
* @author hmjz100
*/
const $123pan = {
greenerPage() {
// 旧版 分享 登录按钮
base.waitForKeyElements(".cent > .cent-not-login > .ant-btn", (tag) => {
if (tag.hasClass("reg") || tag.hasClass("log")) return;
tag.addClass("reg");
tag.removeClass("loginRight");
tag.find("span").text("注册");
if (tag.next().hasClass("log")) return;
const button = $(``);
button.on("click", () => {
const login = new URL(`https://user.123pan.cn/centerlogin`);
login.searchParams.set("redirect_url", location.href);
location.href = login;
});
tag.after(button);
});
// 旧版 分享 按钮去除文本
base.waitForKeyElements(`.rightInfo .register:not(.pl-button, .pl-button-init),
.homeClass > div > .ant-dropdown-trigger:not(.pl-button, .pl-button-init),
.homeClass > div > .sysbut`, (tag) => {
let hasTextNode = false;
tag.contents().each((_, element) => {
if (element.nodeType === 3 && $.trim(element.textContent)) {
hasTextNode = true;
return;
}
});
if (!hasTextNode) return;
tag.css({ "width": "38px" });
tag.contents().each((_, element) => {
if (element.nodeType === 3) $(element).remove();
});
tag.find("svg").css({ "margin-right": "0" });
});
// 新版 分享 登录按钮
base.waitForKeyElements(".share-header_center > .share-header_center-not-login > .loginRight", (tag) => {
if (tag.hasClass("reg") || tag.hasClass("log")) return;
tag.addClass("reg").text("注册");
if (tag.next().hasClass("log")) return;
const button = $(``);
// 加个跳转到原页面也不难吧?
button.on("click", () => {
const login = new URL(`https://user.123pan.cn/centerlogin`);
login.searchParams.set("redirect_url", location.href);
location.href = login;
});
tag.after(button);
try {
const container = tag.closest(".share-header_center-not-login");
if (container.length && !container.data("logObserverAttached")) {
container.data("logObserverAttached", true);
const observer = new MutationObserver((mutations) => {
for (const m of mutations) {
if (!m.removedNodes) continue;
for (const n of m.removedNodes) {
if (!(n instanceof HTMLElement)) continue;
// 如果被移除的节点是注册按钮或其包含注册按钮的容器,则清理登录按钮
if (n.classList && (n.classList.contains("reg") || n.querySelector && n.querySelector(".reg"))) {
try { container.find(".log").remove(); } catch { }
}
}
}
});
observer.observe(container[0], { childList: true, subtree: true });
container.data("logObserver", observer);
}
} catch { }
});
// 新版 分享 超限登录
base.waitForKeyElements(".login-footer-240828", (tag) => {
if (tag.find(".replaced").length) return;
tag.children().each((_, element) => {
const $child = $(element);
if ($child.hasClass("pointer-text")) {
const button = $(``);
button.on("click", () => {
if ($child.text().includes("登录")) {
const login = new URL(`https://user.123pan.cn/centerlogin`);
login.searchParams.set("redirect_url", location.href);
location.href = login;
} else {
return $child.click();
}
});
$child.after(button);
$child.hide();
}
});
}, true);
// 旧版 主页 播放器会员广告
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(`[class^="frontendLayoutHeaderRight"] > a[class^="memberButtonLink"]`, (tag) => {
const next = tag.next("a[class*='ButtonInviteNew']");
if (tag.is(":hidden") || !next.length) return;
tag.hide();
const button = next.clone();
button.find("img").hide();
button.attr("href", tag.attr("href"));
button.text("会员中心");
button.on("click", () => { tag.click() });
tag.after(button);
}, true);
// 新版 主页 顶栏会员中心按钮广告
base.waitForKeyElements(`[class^="frontendLayoutHeaderRight"] > a[class*="ButtonInviteNew"]`, (tag) => {
if (tag.find(`[class*="ButtonInviteNew-image"]`).is(":hidden")) return;
tag.find(`[class*="ButtonInviteNew-image"]`).hide();
}, true);
// 新版 主页/分享 顶部会员广告
base.waitForKeyElements(`.mfy-main-layout__head > [class*="carousel"]:has([class^="vipBanner"]), .mfy-main-layout__head > .ant-carousel:has(.VipBanner), .app-wrap>div[style*="100%"]:has(img[src*="banner"])`, (tag) => {
tag.hide();
}, true);
// 新版 主页 弹窗会员广告
base.waitForKeyElements(`[class^="splashScreenModal"]:has([class*="splashScreenModal__image"][style*="ad"]), .splash-screen-modal:has([class*="image"][style*="ad"])`, (tag) => {
tag.hide();
tag.find(`button[class*="close"]`).click();
}, true);
// 分享 手机二维码
base.waitForKeyElements(`.rightInfo > [class*="mfy_h-popover-module__root"]:has(.qrcode_btn)`, (tag) => {
tag.hide();
}, true);
},
beautifyPage() {
if (base.getValue("setting_ui_theme").custom.$123pan !== true) return;
base.adaptiveThemeOverride([
["#597dfc", temp.color],
["#5a7cfc", temp.color],
["#2A82E4", temp.color],
["#51a1f0", temp.color],
["#597DFC", temp.color],
["#40a9ff", temp.color],
["#3c80ff", temp.color],
["#3C80FF", temp.color],
["#1677ff", temp.color],
["#1890ff", temp.color],
["#0958d9", temp.color],
["#F0F8FF", `${temp.color}10`],
["#f0f9ff", `${temp.color}20`],
["#F2F5FF", `${temp.color}20`],
["#C5E1FF", `${temp.color}20`],
["#2961D9", `${temp.color}20`],
["#b8d8ff", `${temp.color}20`],
["#325cf0", `${temp.color}D0`],
["#66A1FF", `${temp.color}D0`],
["#69b1ff", `${temp.color}D0`],
["60, 128, 255", base.hexToRgba(temp.color)],
["42, 130, 228", base.hexToRgba(temp.color)],
["89, 125, 252", base.hexToRgba(temp.color)],
]);
},
getToken() {
$doc.find(".loading-popup .loading-title").html(`令牌获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取令牌~
`);
const token = base.getStorage("authorToken");
return token;
},
getUUID() {
$doc.find(".loading-popup .loading-title").html(`用户标识获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取用户标识~
`);
const uuid = base.getStorage("LoginUuid");
return uuid;
},
async getLink() {
let selects = this.getSelectedList();
if (selects.length === 0) throw new Error("提示:
请先勾选要下载的文件哦~");
if (selects.every(item => item.Type !== 0)) throw new Error("提示:
请打开文件夹后再勾选文件~");
if (temp.page === "home") {
const token = this.getToken();
const uuid = this.getUUID();
const batchSize = 15;
let proc = 0;
selects = selects.filter(item => item.Type === 0);
for (let i = 0; i < selects.length; i += batchSize) {
const batch = selects.slice(i, i + batchSize);
const queue = [];
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
batch.forEach((item, localIndex) => {
const globalIndex = i + localIndex;
queue.push(this.getFileUrl(item, globalIndex, token, uuid, undefined)
.then(val => {
proc++;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
return val;
}));
});
const res = await Promise.all(queue).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[123云盘] 获取文件下载地址失败");
});
res.forEach(val => {
selects[val.index].DownloadUrl = val.downloadUrl;
});
await base.sleep(1000);
}
temp.files = [selects, {
get: {
dir: v => v.Type !== 0,
name: v => v.FileName,
size: v => v.Size,
link: v => v.DownloadUrl || v.DownloadURL,
},
headers: {},
convert: {},
dom: {
tooltip: config.$123pan.dom,
download: {
error(error) {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
} else if (temp.page === "share") {
const token = this.getToken();
const uuid = this.getUUID();
const batchSize = 15;
let proc = 0;
selects = selects.filter(item => item.Type === 0);
const pathSplit = location.pathname.split("/").filter(Boolean);
const ShareKey = pathSplit[1];
for (let i = 0; i < selects.length; i += batchSize) {
const batch = selects.slice(i, i + batchSize);
const queue = [];
$doc.find(".loading-popup .loading-title").html(`地址获取中`);
$doc.find(".loading-popup .swal2-html-container").html(`正在获取文件对应的下载地址~
`);
batch.forEach((item, localIndex) => {
const globalIndex = i + localIndex;
queue.push(this.getFileUrl(item, globalIndex, token, uuid, ShareKey)
.then(val => {
proc++;
$doc.find(".loading-popup .swal2-html-container").html(`已获取 ${proc} / ${selects.length} 个地址~
`);
return val;
}));
});
const res = await Promise.all(queue).catch(e => {
if (e instanceof Error) throw e;
throw new Error(e?.message || e || "[123云盘] 获取文件下载地址失败");
});
res.forEach(val => {
selects[val.index].DownloadUrl = val.downloadUrl;
});
await base.sleep(1000);
}
temp.files = [selects, {
get: {
dir: v => v.Type !== 0,
name: v => v.FileName,
size: v => v.Size,
link: v => v.DownloadUrl || v.DownloadURL,
},
headers: {},
convert: {},
dom: {
tooltip: config.$123pan.dom,
download: {
error(error) {
if (!error?.status) return ` 服务器未返回状态,若是下载一段时间后中断,可能是服务器返回文件长度不匹配,请重试;若是直接中断,请检查您的网络、脚本管理器扩展或浏览器~`;
if (error?.status == 403) return ` 服务器说:链接已过期,关闭窗口重新获取试试吧~`;
if (error?.status == 204 || error?.statusText === "IDM") return ` 服务说:链接已被 IDM 捕获~`;
}
}
}
}];
base.showMainDialog(config.base.dom.method[temp.mode].title, download.generateDOM(), config.base.dom.method[temp.mode].footer);
} else {
throw new Error("提示:
页面错误~");
}
},
async getFileUrl(item, index, token, uuid, ShareKey) {
let res;
if (ShareKey) {
res = await base.post(config.$123pan.api.getShareLink,
{ "ShareKey": ShareKey, "FileID": item.FileId, "S3keyFlag": item.S3KeyFlag, "Size": item.Size, "Etag": item.Etag },
{ "Accept": "application/json, text/plain, */*", "Content-Type": "application/json; charset=UTF-8", "Authorization": `Bearer ${token}`, "User-Agent": config.$123pan.api.ua.main, "Sec-Ch-Ua": config.$123pan.api.ua.secCh, "Platform": "web", "Platform_os": config.$123pan.api.ua.os, "App-Version": config.$123pan.api.ua.version, "LoginUuid": uuid || "", "Devicename": "", "Mac-Addr": "" }
);
} else {
res = await base.post(config.$123pan.api.getLink,
{ "driveId": 0, "etag": item.Etag, "fileId": item.FileId, "s3keyFlag": item.S3KeyFlag, "type": item.Type, "fileName": item.FileName, "size": item.Size },
{ "Accept": "application/json, text/plain, */*", "Content-Type": "application/json; charset=UTF-8", "Authorization": `Bearer ${token}`, "User-Agent": config.$123pan.api.ua.main, "Sec-Ch-Ua": config.$123pan.api.ua.secCh, "Platform": "web", "Platform_os": config.$123pan.api.ua.os, "App-Version": config.$123pan.api.ua.version, "LoginUuid": uuid || "", "Devicename": "", "Mac-Addr": "" }
);
}
if (res.data?.dispatchList?.length > 0 && res.data?.downloadPath) {
// 拼接线路前缀与下载路径(默认取第一条线路)
const prefix = res.data.dispatchList[0].prefix || "";
let url = `${prefix}${res.data.downloadPath}`;
// 如果地址中存在需要解码的参数,保留解码逻辑
try {
const surl = new URL(url).searchParams.get("params");
if (surl) url = base.decodeBase(surl);
} catch { }
// 如果想要得到最终跳转后的地址
// url = await base.getFinalUrl(url);
return { index, downloadUrl: url };
} else if (res.code) {
if (res.code == 5112) throw new Error("提示:
请先登录网盘后再获取地址呢~");
if (res.code == 5113) return { index, downloadUrl: "获取下载地址失败,服务器说:本月免费流量不足,请开通网盘会员~" };
} else {
return { index, downloadUrl: `获取下载地址失败,${res.message ? "服务器说:" + res.message + "。" : "刷新后再试试吧~"}` };
}
},
getSelectedList() {
try {
const selectedList = [];
const reactDom = $(`.ant-table-wrapper, .tiled-list, .file-list, .single-file-sharing-container-content, .custom-table-wrapper, [class^="mfy_h-table-module__shell__"]`)[0];
const reactObj = base.findReact(reactDom);
const props = reactObj.pendingProps;
if (props) {
const fileList = props?.dataSource || props?.loadedFileList || props?.files || [];
const selectedKey = props?.rowSelection?.selectedRowKeys || [];
fileList.forEach(val => {
if (val?.checked === true) {
selectedList.push(val);
} else if (selectedKey.includes(val.FileId)) {
selectedList.push(val);
}
});
if (props?.file?.S3KeyFlag) selectedList.push(props.file);
}
return selectedList;
} catch {
return [];
}
},
addButton() {
base.waitForKeyElements(config.$123pan.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(``);
$button.addClass([...document.querySelector(`.mfy-button.upload-button[class^="mfy_h-button-module"]`)?.classList || []].filter(cls => /^mfy_h-button-module__[A-Za-z0-9_-]+$/.test(cls)).join(' '));
$button.find("svg").addClass([...document.querySelector(`[class^="icon"]`)?.classList || []].filter(cls => /^icon_[A-Za-z0-9]+$/.test(cls)).join(' '));
element.prepend($button);
});
base.waitForKeyElements(config.$123pan.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(``);
$button.addClass([...document.querySelector(`button[class*="mfy_h-button-module__primary"]`)?.classList || []].filter(cls => /^mfy_h-button-module__[A-Za-z0-9_-]+$/.test(cls)).join(' '));
$(".single-file-sharing-container-content").css({ "width": "415px" });
element.append($button);
});
},
addInitButton() {
base.waitForKeyElements(config.$123pan.mount.home, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "home") return;
const $button = $(``);
$button.addClass([...document.querySelector(`.mfy-button.upload-button[class^="mfy_h-button-module"]`)?.classList || []].filter(cls => /^mfy_h-button-module__[A-Za-z0-9_-]+$/.test(cls)).join(' '));
$button.find("svg").addClass([...document.querySelector(`[class^="icon"]`)?.classList || []].filter(cls => /^icon_[A-Za-z0-9]+$/.test(cls)).join(' '));
$button.click(base.showInitDialog);
element.prepend($button);
});
base.waitForKeyElements(config.$123pan.mount.share, (element) => {
temp.page = temp.main.detectPage();
if ($(".pl-button-init").length > 0 || !temp.page || temp.page !== "share") return;
const $button = $(``);
$button.addClass([...document.querySelector(`button[class*="mfy_h-button-module__primary"]`)?.classList || []].filter(cls => /^mfy_h-button-module__[A-Za-z0-9_-]+$/.test(cls)).join(' '));
$button.click(base.showInitDialog);
element.append($button);
});
},
detectPage() {
const path = location.pathname;
if (/^\/$/.test(path)) return "home";
if (/^\/(s|123pan)\//.test(path)) return "share";
return "";
},
async initPanLinker() {
base.registerMenuCommand();
if (config.base.num === base.getValue("setting_init").code || config.base.license === base.getValue("setting_init").license) {
this.addButton();
} else {
this.addInitButton();
}
},
};
// =====================================================================
// 通用外链 / 直链嗅探兜底适配器 (v1.1.5 新增)
// 覆盖:蓝奏云、坚果云、腾讯微云、奶牛快传、文叔叔、OneDrive/Google Drive 分享页等
// 未在其它专属适配器中匹配的网盘,统一走此处嗅探页面中的真实下载直链。
// =====================================================================
const $sniffer = {
key: "sniffer",
name: "通用嗅探",
// 直链候选规则
rules: [
/hhttps?:\/\/[^\s"'<>]+?\.(?:zip|rar|7z|tar|gz|xz|exe|msi|iso|dmg|apk|appimage|deb|rpm|pdf|epub|mobi|mp4|mkv|mov|avi|mp3|flac|wav|webm|jpg|jpeg|png|gif|webp|psd|docx?|xlsx?|pptx?|csv|json|xml|sql|bak|db)/i,
/https?:\/\/[^\s"'<>]+?\/(?:download|file|attach|fileview|api\/v\d+\/file|getfile|fetch|preview)[^\s"'<>]*/i,
/https?:\/\/(?:[a-z0-9-]+\.)?(?:lanzou|lanzo|wenshushu|niuchuan|woozooo|weiyun|orzfile)\.[^\s"'<>]{2,}\/[^\s"'<>]+/i,
],
/**
* 嗅探当前页面的下载直链
* @returns {Promise>}
*/
async sniffLinks() {
const result = [];
const seen = new Set();
const push = (url, name) => {
if (!url || seen.has(url)) return;
seen.add(url);
result.push({ name: name || url.split("/").pop().split("?")[0] || "file", url, size: 0 });
};
// 1) 优先抓取带 download / data-*url 语义属性的链接
document.querySelectorAll("a[download], a[data-downloadurl], a[data-url], [data-download-url]").forEach((a) => {
const url = a.href || a.getAttribute("data-downloadurl") || a.getAttribute("data-url") || a.getAttribute("data-download-url");
if (url) push(url, a.textContent.trim() || a.getAttribute("download"));
});
// 2) 扫描所有链接 + 内联脚本/JSON 中的 URL 候选
const candidates = new Set();
document.querySelectorAll("a[href], link[href]").forEach((a) => { if (a.href) candidates.add(a.href); });
document.querySelectorAll("script, meta, input, textarea").forEach((el) => {
const txt = el.textContent || el.value || "";
const matches = txt.match(/https?:\/\/[^\s"'\\<>]+/g) || [];
matches.forEach((m) => candidates.add(m));
});
candidates.forEach((u) => { if (this.rules.some((re) => re.test(u))) push(u); });
// 3) 尝试触发一次下载按钮点击,等待动态直链注入
const dlBtn = document.querySelector(
'[class*="download"], [id*="download"], button[class*="down"], .btn-download, .js-down-btn, [data-action="download"]'
);
if (dlBtn && result.length === 0) {
dlBtn.click();
await new Promise((r) => setTimeout(r, 800));
document.querySelectorAll("a[href]").forEach((a) => { if (a.href) candidates.add(a.href); });
candidates.forEach((u) => { if (this.rules.some((re) => re.test(u))) push(u); });
}
return result;
},
// 与主流程对接
async getLinks() {
const list = await this.sniffLinks();
return list.map((it) => ({ name: it.name, link: it.url, size: it.size || 0 }));
},
};
// 主代码
const main = {
async init() {
/**
* 控制台输出
* @author 油小猴
* @author hmjz100
* @description 来自【网盘智能识别助手】,有改动
*/
base.console.info(`%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`);
// 创建挂载点
const mountElem = $(`<${mount} class="${mount}" />`);
temp.mount = mountElem;
// unsafeWindow.temp = temp;
// unsafeWindow.base = base;
base.waitForKeyElements(`html:not(:has(> .${mount})) head`, (element) => {
if ($(`.${mount}`).length > 0) return;
element.after(temp.mount);
});
// 判断页面地址,定义主执行
if (/(pan|yun).baidu.com/.test(location.host)) temp.main = $baidu;
else if (/openapi.baidu.com\/oauth/.test(location.href)) temp.main = $baiduAuthorize;
else if (/www.(aliyundrive|alipan).com/.test(location.host)) temp.main = $aliyun;
else if (/(yun|caiyun).139.com/.test(location.host)) temp.main = $mcloud;
else if (/cloud.189.cn/.test(location.host)) temp.main = $tcloud;
else if (/pan.xunlei.com/.test(location.host)) temp.main = $xunlei;
else if (/www.guangyapan.com/.test(location.host)) temp.main = $guangya;
else if (/pan.quark.cn/.test(location.host)) temp.main = $quark;
else if (/drive.uc.cn/.test(location.host)) temp.main = $uc;
else if (/(www|login|yun|user|share).(123(pan|684|865|952|912).com|123pan.cn)$/.test(location.host)) temp.main = $123pan;
// v1.1.5: 通用外链嗅探兜底 —— 未匹配任何专属适配器时启用
if (!temp.main) temp.main = $sniffer;
// 智能默认设置
base.initDefaultConfig();
// 创建美化样式
base.addPanLinkerStyle();
// 创建按钮事件
base.addPageListener();
download.addPageListener();
// 创建提示信息用的隐藏 tip
base.createTip();
// 运行主程序
if ("initPanLinker" in temp.main) temp.main.initPanLinker();
// 运行绿化程序
if ("greenerPage" in temp.main) temp.main.greenerPage();
// 脚本更新后提示消息
const storedVersion = base.getValue("setting_init").version;
if (!storedVersion || base.isNewerVersion(info.version, storedVersion)) {
base.waitForKeyElements("body:not(.swal2-shown)", async () => {
await base.showUpdate();
const list = base.getValue("setting_init");
list.version = info.version;
base.setValue("setting_init", list);
return true;
}, true);
}
// 创建图标
temp.mount.append(``);
}
};
base.console = Object.fromEntries(Object.entries(console).filter(([, value]) => typeof value === "function").map(([key, value]) => [key, value.bind(console)]));
unsafeWindow.console.clear = new Function(base.decodeBase("Y29uc29sZS5sb2coIiVj5bey5riF6Zmk5o6n5Yi25Y+wIiwgImNvbG9yOmdyYXk7Zm9udC1zdHlsZTppdGFsaWMiKTs="));
main.init();
// 这是啥?我不到啊
function idontknow(input) {
const charArray = input.split("");
// 这是 Fisher-Yates 洗牌算法的实现
for (let i = charArray.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[charArray[i], charArray[j]] = [charArray[j], charArray[i]];
}
return charArray.join("");
}
})($ ?? jQuery);