Files
funjia-admin/server/offDown.bundle.mjs
T
2025-03-27 19:37:24 +08:00

231 lines
10 KiB
JavaScript

// const.ts
var accessTokenInfo = {
"expires_in": 31536e3,
"access_token": "24.e7f0cd92f73198efe99b8ccb4466f045.2592000.1744250279.282335-23610200",
"session_secret": "",
"session_key": "",
"scope": "basic netdisk"
};
var getUrlParams = (params) => {
const body = new URLSearchParams();
for (const [key, value] of Object.entries(params)) {
body.append(key, value);
}
return body;
};
var const_default = accessTokenInfo;
// cookieUtil.ts
var CookieUtil = class _CookieUtil {
// 静态属性,用于存储单例实例
static instance = null;
accessTokenInfo = {
"expires_in": 31536e3,
"access_token": "24.e7f0cd92f73198efe99b8ccb4466f045.2592000.1744250279.282335-23610200",
"session_secret": "",
"session_key": "",
"scope": "basic netdisk",
app_id: "250528",
cookie: `BIDUPSID=B6F89C8A6AD149BCDC6FF40289C98EEA; PSTM=1719579347; PANWEB=1; Hm_lvt_7a3960b6f067eb0085b7f96ff5e660b0=1719583693,1719754941; BAIDUID=10DC30A9D8497854D8275A9855AA40A6:SL=0:NR=10:FG=1; H_WISE_SIDS_BFESS=60447_60575_60600; csrfToken=UG2bfMChS2_3SL_SPVH_hKvy; Hm_lvt_fa0277816200010a74ab7d2895df481b=1741096444; Hm_lpvt_fa0277816200010a74ab7d2895df481b=1741096444; HMACCOUNT=EDFC1163C2009122; H_PS_PSSID=61027_62277_62325_62336_62347_62372_62243_62390_62420_62423_62474_62484_62499_62493_62522_62457_62455_62453_62451_62568_62610; BDSFRCVID=EB-OJexroGWT0gjJdKLdMO_dgSNbUdrTDYrEjGc3VtzSGYLVd4SGEG0Pts1-dEub6j30ogKKLmOTHpKF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=tRAOoC_-tDvDqTrP-trf5DCShUFsXTblB2Q-XPoO3M3xSlv4y4b8j4-kyhOk2M5f5mkf3fbgy4op8P3y0bb2DUA1y4vp-Jo7bmTxoUJ2-KDVeh5Gqq-KXU4ebPRiWPr9Qgbj_43Jtq4KO4bGQq5lDIuTXqO30ptJ06nhVn0MBCK0hD89DjKKD6PVKgTa54cbb4o2WbCQQnC28pcN2b5oQp-734RHBtJqBC74aPbwahQbeq06-lOUWJDkXpJvQnJjt2JxaqRCbtj1fq5jDh3MKToDb-oteltHB2Oy0hvcBn6cShnxjJJjDx7XylOt0ljPt-jr24bS3U8MEtbIe-t2XjQhDNL8q6_qJbCsQnj8HJoHjJbGq4bohjPkLmc9BtQO-DOx-M-M5bckehvsbMccBP0s0PTaL43HQgnkQq5_3b85S4bu0UJZXhKOjbbx0x-jLTneo66e345DMRFRD-nJyUPThtnnBnOi3H8HL4nv2JcJbM5m3x6qLTKkQN3T-PKO5bRu_CcJ-J8XMK8mjTjP; newlogin=1; Hm_lvt_182d6d59474cf78db37e0b2248640ea5=1742211139; H_WISE_SIDS=61027_62277_62325_62336_62347_62372_62243_62390_62420_62423_62474_62484_62499_62493_62522_62457_62455_62453_62451_62568_62610; BDUSS=HB1TDFqeGVLTWZhcURSM015WmJrVi1XaWdqbkdSUWVmaH5mc2daSzJIeG5aUUJvSVFBQUFBJCQAAAAAAAAAAAEAAAAmJicXaG5qaWFuYW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGfY2Gdn2NhnZ; BDUSS_BFESS=HB1TDFqeGVLTWZhcURSM015WmJrVi1XaWdqbkdSUWVmaH5mc2daSzJIeG5aUUJvSVFBQUFBJCQAAAAAAAAAAAEAAAAmJicXaG5qaWFuYW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGfY2Gdn2NhnZ; STOKEN=4b412d30af62a38ce1b769718dbf216cbd0ed032e38e2ab282aea36707e93a20; Hm_lvt_bc5920843408306f8b6fc088319384ce=1742264429; Hm_lpvt_bc5920843408306f8b6fc088319384ce=1742264434; BAIDUID_BFESS=10DC30A9D8497854D8275A9855AA40A6:SL=0:NR=10:FG=1; BDSFRCVID_BFESS=EB-OJexroGWT0gjJdKLdMO_dgSNbUdrTDYrEjGc3VtzSGYLVd4SGEG0Pts1-dEub6j30ogKKLmOTHpKF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=tRAOoC_-tDvDqTrP-trf5DCShUFsXTblB2Q-XPoO3M3xSlv4y4b8j4-kyhOk2M5f5mkf3fbgy4op8P3y0bb2DUA1y4vp-Jo7bmTxoUJ2-KDVeh5Gqq-KXU4ebPRiWPr9Qgbj_43Jtq4KO4bGQq5lDIuTXqO30ptJ06nhVn0MBCK0hD89DjKKD6PVKgTa54cbb4o2WbCQQnC28pcN2b5oQp-734RHBtJqBC74aPbwahQbeq06-lOUWJDkXpJvQnJjt2JxaqRCbtj1fq5jDh3MKToDb-oteltHB2Oy0hvcBn6cShnxjJJjDx7XylOt0ljPt-jr24bS3U8MEtbIe-t2XjQhDNL8q6_qJbCsQnj8HJoHjJbGq4bohjPkLmc9BtQO-DOx-M-M5bckehvsbMccBP0s0PTaL43HQgnkQq5_3b85S4bu0UJZXhKOjbbx0x-jLTneo66e345DMRFRD-nJyUPThtnnBnOi3H8HL4nv2JcJbM5m3x6qLTKkQN3T-PKO5bRu_CcJ-J8XMK8mjTjP; ndut_fmt=4AED84C3D5C763CC7467C0BD21B7059718FB121D7685531B0B05A7947CD6E542; ab_sr=1.0.1_MWQ5NTY4MTE4YTU1OTJiNmI0YmUxMDAzNWY1NTkyZjkzZGNkYzBjNDg2NWYxODdhNTM0Zjk4NDNlNzIwNmJhNWFjNTVmYzlhMjllZDQ1YzBhODZkMjFkZjNmODk1YWRkYjU4ZWI4OGQ5ZTY5Yzg1YjU0YTEyNzE4ZTZmZGYyOWYzZTYzZWYwYmFiODVhOWIwMWZjMjUyMDg1ZjExYWE0Y2QzNDU0MWY3MGRiOGQ0NDk2MjZlYWY3NDM2YmI4NmNlNzUxMmEzYjEyOWY5MDI5NDNkMmY4YWUxZDJkNDUwNGI=; PANPSC=12091468029218708382%3AAuI6D6iGxsvfqD2oGDJz%2FlcS2d9ns3O52KR9sgxqNvJDnBUTmlU39wjHRUw%2FZR6kz81ttRoL0tCAzpMjKfHvSrz7Cgwm46ULLjHyseP5LOc2jyb7JodIivKBB5%2BWSCTpbaC532AuNi3w0iRW66wpcaOpfVD7rGCOIND%2Ba86tsPJVcd75GMrlL3ggdH3Ht58%2BGZF3KerqQjL6l%2B17QGFqtw%3D%3D; Hm_lpvt_182d6d59474cf78db37e0b2248640ea5=1742385365`
};
constructor() {
if (_CookieUtil.instance) {
return _CookieUtil.instance;
}
_CookieUtil.instance = this;
}
// 静态方法,用于获取单例实例
static getInstance() {
if (!_CookieUtil.instance) {
_CookieUtil.instance = new _CookieUtil();
}
return _CookieUtil.instance;
}
getHeaders = () => {
return {
"Content-Type": "application/x-www-form-urlencoded",
Host: "pan.baidu.com",
Origin: "https://pan.baidu.com",
Referer: "https://pan.baidu.com/disk/main",
"User-Agent": " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"X-Requested-With": "XMLHttpRequest",
"sec-ch-ua": `"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"`,
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "Windows",
"Cookie": this.accessTokenInfo.cookie
};
};
setCookie = ({ cookie: cookie2, accessToken }) => {
this.accessTokenInfo.access_token = accessToken;
this.accessTokenInfo.cookie = cookie2;
};
};
// getBdstoken.ts
var url = `http://pan.baidu.com/api/gettemplatevariable?clienttype=0&app_id=250528&web=1&fields=[%22bdstoken%22]`;
async function getInfo() {
const cookieUtilInstance = CookieUtil.getInstance();
const headers = cookieUtilInstance.getHeaders();
const res = await fetch(url, { headers });
const data = await res.json();
return data?.result?.bdstoken;
}
// getDpLogId.ts
var DpLogIdUtil = class _DpLogIdUtil {
// 静态属性,用于存储单例实例
static instance = null;
// 实例属性
sessionId = 0;
// 会话ID,用于标识当前会话
userId = "";
// 用户ID,用于标识用户
_countId = 0;
// 计数器ID,用于生成唯一的日志ID
client = "";
// 客户端标识
// 私有化构造函数,防止外部直接实例化
constructor() {
if (_DpLogIdUtil.instance) {
return _DpLogIdUtil.instance;
}
this.sessionId = this.getRandomInt(6);
this.userId = "00" + this.getRandomInt(8);
this._countId = 0;
this.client = "";
_DpLogIdUtil.instance = this;
}
// 静态方法,用于获取单例实例
static getInstance() {
if (!_DpLogIdUtil.instance) {
_DpLogIdUtil.instance = new _DpLogIdUtil();
}
return _DpLogIdUtil.instance;
}
// 生成指定位数的随机整数
getRandomInt = function(t) {
return Math.floor((9 * Math.random() + 1) * Math.pow(10, t - 1));
};
// 将数字补足指定位数,不足部分用0填充
prefixInteger = function(t, e) {
t += "";
for (var n = new Array(e - t.length), i = n.length, r = 0; r < i; r++)
n[r] = "0";
return n.join("") + t;
};
// 获取并递增计数器ID,确保ID在0到9999之间循环
getCountId = function() {
return this._countId < 9999 ? this._countId += 1 : this._countId = 0, this.prefixInteger(this._countId, 4);
};
// 验证用户ID是否为10位
validateUk = function(t) {
return 10 === (t + "").length;
};
// 生成完整的日志ID
getDpLogId = function() {
var e = this.userId;
return "" + this.client + this.sessionId + e + this.getCountId();
};
// 从URL中提取日志ID,如果不存在则生成一个新的日志ID
getDpLogIdByUrl = function(t) {
var e = t.match(/dp-logid=(\d+)/);
return e && e[1] ? e[1] : this.getDpLogId();
};
// 向URL中添加日志ID参数
addDpLogId = function(t, e, n) {
if (/dp-logid=\d+/.test(t))
return t;
var i = n || this.getDpLogId(e);
return t += /\?/.test(t) ? "&" : "?", t + "dp-logid=" + i;
};
};
// queryMagnetinfo.ts
var { access_token } = const_default;
async function getMagnetInfo(link, savePath) {
let bdstoken2 = await getInfo();
let dpLogId2 = DpLogIdUtil.getInstance().getDpLogId();
const url2 = `https://pan.baidu.com/rest/2.0/services/cloud_dl?clienttype=0&app_id=250528&web=1&dp-logid=${dpLogId2}&bdstoken=${bdstoken2}`;
const cookieUtilInstance = CookieUtil.getInstance();
const headers = cookieUtilInstance.getHeaders();
const params = {
method: "query_magnetinfo",
app_id: 250528,
save_path: savePath,
type: 4,
source_url: link
};
const res = await fetch(url2, {
method: "POST",
headers,
body: getUrlParams(params)
});
const data = await res.json();
return data?.total || 0;
}
// offDown.ts
var bdstoken = "";
var dpLogId = "";
var dpLogIdUtil = DpLogIdUtil.getInstance();
function generateSelectedIdx(total) {
return [...Array(total).keys()].map((i) => i + 1);
}
function getRandomNumberBetween(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function randomDelay(min = 2e3, max = 4e3) {
const delay = getRandomNumberBetween(min, max);
console.log(`\u7B49\u5F85 ${delay} \u6BEB\u79D2...`);
return sleep(delay);
}
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function down(link, savePath = "/movie/2025") {
const cookieUtilInstance = CookieUtil.getInstance();
bdstoken = await getInfo();
dpLogId = dpLogIdUtil?.getDpLogId();
const url2 = `https://pan.baidu.com/rest/2.0/services/cloud_dl?clienttype=0&app_id=250528&web=1&dp-logid=${dpLogId}&bdstoken=${bdstoken}`;
const headers = cookieUtilInstance.getHeaders();
const fileTotal = await getMagnetInfo(link, savePath);
randomDelay(2e3, 4e3);
const params = {
method: "add_task",
app_id: 250528,
save_path: savePath,
selected_idx: generateSelectedIdx(fileTotal).join(","),
task_from: 0,
t: (/* @__PURE__ */ new Date()).getTime(),
type: 4,
source_url: link
};
console.log(params);
try {
const res = await fetch(url2, {
method: "POST",
headers,
body: getUrlParams(params)
});
if (!res.ok) {
throw new Error(`HTTP error! status: ${res.status}`);
}
const data = await res.json();
console.log(data);
return data;
} catch (error) {
console.error("Fetch error:", error);
}
}
var offDown_default = {
down,
CookieUtil,
randomDelay
};
export {
offDown_default as default
};