@ikenxuan/amagi 4.5.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/dist/default/cjs/index.cjs +710 -714
- package/dist/default/esm/index.mjs +664 -705
- package/dist/default/index.d.ts +16486 -117
- package/package.json +1 -6
- package/dist/default/cjs/v5.cjs +0 -3093
- package/dist/default/esm/v5.mjs +0 -3008
- package/dist/default/index-BvcyJb5r.d.ts +0 -15462
- package/dist/default/v5.d.ts +0 -758
|
@@ -27,7 +27,7 @@ var express__default = /*#__PURE__*/_interopDefault(express);
|
|
|
27
27
|
* GPL-3.0 Licensed
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
-
// node_modules/.pnpm/tsup@8.5.0_@swc+core@1.12.
|
|
30
|
+
// node_modules/.pnpm/tsup@8.5.0_@swc+core@1.12.14_tsx@4.20.3_typescript@5.8.3/node_modules/tsup/assets/cjs_shims.js
|
|
31
31
|
var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
|
|
32
32
|
var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
|
|
33
33
|
var getPackageLogsPath = () => {
|
|
@@ -167,142 +167,49 @@ var logMiddleware = (pathsToLog) => {
|
|
|
167
167
|
next();
|
|
168
168
|
};
|
|
169
169
|
};
|
|
170
|
-
var
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
axiosInstance;
|
|
177
|
-
isGetResult;
|
|
178
|
-
timeout;
|
|
179
|
-
timer;
|
|
180
|
-
data;
|
|
181
|
-
constructor(data2) {
|
|
182
|
-
this.headers = data2.headers ?? {};
|
|
183
|
-
this.url = data2.url ?? "";
|
|
184
|
-
this.type = data2.responseType ?? "json";
|
|
185
|
-
this.method = data2.method ?? "GET";
|
|
186
|
-
this.body = data2.body ?? null;
|
|
187
|
-
this.data = {};
|
|
188
|
-
this.timeout = data2.timeout ?? 15e3;
|
|
189
|
-
this.isGetResult = false;
|
|
190
|
-
this.timer = void 0;
|
|
191
|
-
this.axiosInstance = axios__default.default.create({
|
|
192
|
-
timeout: this.timeout,
|
|
193
|
-
headers: this.headers,
|
|
194
|
-
maxRedirects: 5,
|
|
195
|
-
validateStatus: (status) => {
|
|
196
|
-
return status >= 200 && status < 600;
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
get config() {
|
|
201
|
-
let config = {
|
|
202
|
-
url: this.url,
|
|
203
|
-
method: this.method,
|
|
204
|
-
headers: this.headers
|
|
205
|
-
};
|
|
206
|
-
if (this.method === "POST" && this.body) {
|
|
207
|
-
config.data = this.body;
|
|
208
|
-
}
|
|
209
|
-
return config;
|
|
210
|
-
}
|
|
211
|
-
async getfetch() {
|
|
212
|
-
try {
|
|
213
|
-
const result = await this.returnResult();
|
|
214
|
-
if (result.status === 504) {
|
|
215
|
-
return result;
|
|
216
|
-
}
|
|
217
|
-
this.isGetResult = true;
|
|
218
|
-
return result;
|
|
219
|
-
} catch (error) {
|
|
220
|
-
logger.info(error);
|
|
221
|
-
return false;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
async returnResult() {
|
|
225
|
-
return await this.axiosInstance(this.config);
|
|
226
|
-
}
|
|
227
|
-
/** 最终地址(跟随重定向) */
|
|
228
|
-
async getLongLink() {
|
|
229
|
-
try {
|
|
230
|
-
const response = await this.axiosInstance({
|
|
231
|
-
method: "GET",
|
|
232
|
-
url: this.url
|
|
233
|
-
});
|
|
234
|
-
return response.request.res.responseUrl;
|
|
235
|
-
} catch (error) {
|
|
236
|
-
if (error instanceof axios.AxiosError) {
|
|
237
|
-
throw new Error(error.stack);
|
|
238
|
-
}
|
|
239
|
-
return "";
|
|
170
|
+
var fetchData = async (config) => {
|
|
171
|
+
try {
|
|
172
|
+
const response = await axios__default.default(config);
|
|
173
|
+
if (response.status === 429) {
|
|
174
|
+
logger.error("HTTP \u54CD\u5E94\u72B6\u6001\u7801: 429");
|
|
175
|
+
throw new Error("ratelimit triggered, \u89E6\u53D1\u901F\u7387\u9650\u5236\uFF01");
|
|
240
176
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
method: "GET",
|
|
247
|
-
url: this.url,
|
|
248
|
-
maxRedirects: 0,
|
|
249
|
-
// 禁止跟随重定向
|
|
250
|
-
validateStatus: (status) => status >= 300 && status < 400
|
|
251
|
-
// 仅处理3xx响应
|
|
252
|
-
});
|
|
253
|
-
return response.headers["location"];
|
|
254
|
-
} catch (error) {
|
|
255
|
-
if (error instanceof axios.AxiosError) {
|
|
256
|
-
throw new Error(error.stack);
|
|
257
|
-
}
|
|
258
|
-
return "";
|
|
177
|
+
return response.data;
|
|
178
|
+
} catch (error) {
|
|
179
|
+
if (error instanceof axios.AxiosError) {
|
|
180
|
+
logger.error("\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25:", error.message);
|
|
181
|
+
throw error;
|
|
259
182
|
}
|
|
183
|
+
throw error;
|
|
260
184
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
if (result.status === 429) {
|
|
270
|
-
logger.error("HTTP \u54CD\u5E94\u72B6\u6001\u7801: 429");
|
|
271
|
-
throw new Error("ratelimit triggered, \u89E6\u53D1 https://www.douyin.com/ \u7684\u901F\u7387\u9650\u5236\uFF01\uFF01\uFF01");
|
|
272
|
-
}
|
|
273
|
-
this.axiosInstance = result;
|
|
274
|
-
this.isGetResult = true;
|
|
275
|
-
} else {
|
|
276
|
-
this.axiosInstance = new_fetch;
|
|
277
|
-
}
|
|
278
|
-
return this.axiosInstance.data;
|
|
279
|
-
} catch (error) {
|
|
280
|
-
if (error instanceof axios.AxiosError) {
|
|
281
|
-
throw new Error(error.stack);
|
|
282
|
-
}
|
|
283
|
-
return false;
|
|
185
|
+
};
|
|
186
|
+
var fetchResponse = async (config) => {
|
|
187
|
+
try {
|
|
188
|
+
return await axios__default.default(config);
|
|
189
|
+
} catch (error) {
|
|
190
|
+
if (error instanceof axios.AxiosError) {
|
|
191
|
+
throw error;
|
|
284
192
|
}
|
|
193
|
+
throw new Error("\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25");
|
|
285
194
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
return { headers: null, data: null };
|
|
298
|
-
}
|
|
195
|
+
};
|
|
196
|
+
var getHeadersAndData = async (config) => {
|
|
197
|
+
try {
|
|
198
|
+
const response = await fetchResponse(config);
|
|
199
|
+
return {
|
|
200
|
+
headers: response.headers,
|
|
201
|
+
data: response.data
|
|
202
|
+
};
|
|
203
|
+
} catch (error) {
|
|
204
|
+
logger.error("\u83B7\u53D6\u54CD\u5E94\u5934\u548C\u6570\u636E\u5931\u8D25:", error);
|
|
205
|
+
return { headers: {}, data: {} };
|
|
299
206
|
}
|
|
300
207
|
};
|
|
301
208
|
|
|
302
209
|
// src/platform/bilibili/qtparam.ts
|
|
303
210
|
var qtparam = async (BASEURL, cookie) => {
|
|
304
211
|
if (cookie === "") return { QUERY: "&platform=html5", STATUS: "!isLogin" };
|
|
305
|
-
const logininfo = await
|
|
212
|
+
const logininfo = await fetchData({ url: bilibiliApiUrls.\u767B\u5F55\u57FA\u672C\u4FE1\u606F(), headers: { Cookie: cookie } });
|
|
306
213
|
const sign = await wbi_sign(BASEURL, cookie);
|
|
307
214
|
const qn = [6, 16, 32, 64, 74, 80, 112, 116, 120, 125, 126, 127];
|
|
308
215
|
let isvip;
|
|
@@ -353,7 +260,20 @@ var BiLiBiLiAPI = class {
|
|
|
353
260
|
}
|
|
354
261
|
/** 评论区类型,type参数详见 [评论区类型代码](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/comment/readme.md#评论区类型代码) */
|
|
355
262
|
\u8BC4\u8BBA\u533A\u660E\u7EC6(data2) {
|
|
356
|
-
|
|
263
|
+
const params = new URLSearchParams({
|
|
264
|
+
oid: data2.oid.toString(),
|
|
265
|
+
type: data2.type.toString(),
|
|
266
|
+
mode: (data2.mode ?? 3).toString(),
|
|
267
|
+
plat: "1",
|
|
268
|
+
seek_rpid: "",
|
|
269
|
+
web_location: "1315875"
|
|
270
|
+
});
|
|
271
|
+
if (data2.pagination_str) {
|
|
272
|
+
params.append("pagination_str", JSON.stringify({ offset: data2.pagination_str }));
|
|
273
|
+
} else {
|
|
274
|
+
params.append("pagination_str", JSON.stringify({ offset: "" }));
|
|
275
|
+
}
|
|
276
|
+
return `https://api.bilibili.com/x/v2/reply/wbi/main?${params.toString()}`;
|
|
357
277
|
}
|
|
358
278
|
\u8BC4\u8BBA\u533A\u72B6\u6001(data2) {
|
|
359
279
|
return `https://api.bilibili.com/x/v2/reply/subject/description?type=${data2.type}&oid=${data2.oid}`;
|
|
@@ -409,116 +329,293 @@ var kuaishouAPIErrorCode = /* @__PURE__ */ ((kuaishouAPIErrorCode2) => {
|
|
|
409
329
|
kuaishouAPIErrorCode2["UNKNOWN"] = "UNKNOWN_ERROR" /* UNKNOWN */;
|
|
410
330
|
return kuaishouAPIErrorCode2;
|
|
411
331
|
})(kuaishouAPIErrorCode || {});
|
|
332
|
+
var mixinKeyEncTab = [
|
|
333
|
+
46,
|
|
334
|
+
47,
|
|
335
|
+
18,
|
|
336
|
+
2,
|
|
337
|
+
53,
|
|
338
|
+
8,
|
|
339
|
+
23,
|
|
340
|
+
32,
|
|
341
|
+
15,
|
|
342
|
+
50,
|
|
343
|
+
10,
|
|
344
|
+
31,
|
|
345
|
+
58,
|
|
346
|
+
3,
|
|
347
|
+
45,
|
|
348
|
+
35,
|
|
349
|
+
27,
|
|
350
|
+
43,
|
|
351
|
+
5,
|
|
352
|
+
49,
|
|
353
|
+
33,
|
|
354
|
+
9,
|
|
355
|
+
42,
|
|
356
|
+
19,
|
|
357
|
+
29,
|
|
358
|
+
28,
|
|
359
|
+
14,
|
|
360
|
+
39,
|
|
361
|
+
12,
|
|
362
|
+
38,
|
|
363
|
+
41,
|
|
364
|
+
13,
|
|
365
|
+
37,
|
|
366
|
+
48,
|
|
367
|
+
7,
|
|
368
|
+
16,
|
|
369
|
+
24,
|
|
370
|
+
55,
|
|
371
|
+
40,
|
|
372
|
+
61,
|
|
373
|
+
26,
|
|
374
|
+
17,
|
|
375
|
+
0,
|
|
376
|
+
1,
|
|
377
|
+
60,
|
|
378
|
+
51,
|
|
379
|
+
30,
|
|
380
|
+
4,
|
|
381
|
+
22,
|
|
382
|
+
25,
|
|
383
|
+
54,
|
|
384
|
+
21,
|
|
385
|
+
56,
|
|
386
|
+
59,
|
|
387
|
+
6,
|
|
388
|
+
63,
|
|
389
|
+
57,
|
|
390
|
+
62,
|
|
391
|
+
11,
|
|
392
|
+
36,
|
|
393
|
+
20,
|
|
394
|
+
34,
|
|
395
|
+
44,
|
|
396
|
+
52
|
|
397
|
+
];
|
|
398
|
+
var getMixinKey = (orig) => mixinKeyEncTab.map((n) => orig[n]).join("").slice(0, 32);
|
|
399
|
+
var encWbi = (params, img_key, sub_key) => {
|
|
400
|
+
const mixin_key = getMixinKey(img_key + sub_key);
|
|
401
|
+
const curr_time = Math.round(Date.now() / 1e3);
|
|
402
|
+
const chr_filter = /[!'()*]/g;
|
|
403
|
+
Object.assign(params, { wts: curr_time });
|
|
404
|
+
const query = Object.keys(params).sort().map((key) => {
|
|
405
|
+
const value = params[key].toString().replace(chr_filter, "");
|
|
406
|
+
return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
|
|
407
|
+
}).join("&");
|
|
408
|
+
const wbi_sign2 = crypto__default.default.createHash("md5").update(query + mixin_key).digest("hex");
|
|
409
|
+
return `&wts=${curr_time}&w_rid=${wbi_sign2}`;
|
|
410
|
+
};
|
|
411
|
+
var getWbiKeys = async (cookie) => {
|
|
412
|
+
const res = await axios__default.default("https://api.bilibili.com/x/web-interface/nav", {
|
|
413
|
+
headers: {
|
|
414
|
+
Cookie: cookie
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
const response = res.data;
|
|
418
|
+
const {
|
|
419
|
+
data: {
|
|
420
|
+
wbi_img: { img_url, sub_url }
|
|
421
|
+
}
|
|
422
|
+
} = response;
|
|
423
|
+
return {
|
|
424
|
+
img_key: img_url.slice(img_url.lastIndexOf("/") + 1, img_url.lastIndexOf(".")),
|
|
425
|
+
sub_key: sub_url.slice(sub_url.lastIndexOf("/") + 1, sub_url.lastIndexOf("."))
|
|
426
|
+
};
|
|
427
|
+
};
|
|
428
|
+
var wbi_sign = async (BASEURL, cookie) => {
|
|
429
|
+
const web_keys = await getWbiKeys(cookie);
|
|
430
|
+
const url = new URL(BASEURL);
|
|
431
|
+
const params = {};
|
|
432
|
+
for (const [key, value] of url.searchParams.entries()) {
|
|
433
|
+
params[key] = value;
|
|
434
|
+
}
|
|
435
|
+
const query = encWbi(params, web_keys.img_key, web_keys.sub_key);
|
|
436
|
+
return query;
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
// src/platform/defaultConfigs.ts
|
|
440
|
+
var generateSecChUa = (userAgent) => {
|
|
441
|
+
const chromeMatch = userAgent.match(/Chrome\/(\d+)/);
|
|
442
|
+
const chromeVersion = chromeMatch ? chromeMatch[1] : "125";
|
|
443
|
+
return `"Not)A;Brand";v="8", "Chromium";v="${chromeVersion}", "Google Chrome";v="${chromeVersion}"`;
|
|
444
|
+
};
|
|
445
|
+
var getDouyinDefaultConfig = (cookie, requestConfig) => {
|
|
446
|
+
var _a;
|
|
447
|
+
const finalUserAgent = ((_a = void 0 ) == null ? void 0 : _a["User-Agent"]) || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36";
|
|
448
|
+
const defHeaders = {
|
|
449
|
+
Accept: "application/json, text/plain, */*",
|
|
450
|
+
"Accept-Encoding": "gzip, deflate, br, zstd",
|
|
451
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
452
|
+
Cookie: cookie ? cookie.replace(/\s+/g, "") : "",
|
|
453
|
+
Priority: "u=1, i",
|
|
454
|
+
Referer: "https://www.douyin.com/",
|
|
455
|
+
"Sec-Ch-Ua": generateSecChUa(finalUserAgent),
|
|
456
|
+
"Sec-Ch-Ua-Mobile": "?0",
|
|
457
|
+
"Sec-Ch-Ua-Platform": '"Windows"',
|
|
458
|
+
"Sec-Fetch-Dest": "empty",
|
|
459
|
+
"Sec-Fetch-Mode": "cors",
|
|
460
|
+
"Sec-Fetch-Site": "same-origin",
|
|
461
|
+
"User-Agent": finalUserAgent
|
|
462
|
+
};
|
|
463
|
+
return {
|
|
464
|
+
method: "GET",
|
|
465
|
+
timeout: 1e4,
|
|
466
|
+
...requestConfig,
|
|
467
|
+
headers: {
|
|
468
|
+
...defHeaders,
|
|
469
|
+
...{}
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
};
|
|
473
|
+
var getBilibiliDefaultConfig = (cookie, requestConfig) => {
|
|
474
|
+
const defHeaders = {
|
|
475
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
|
476
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
477
|
+
"Cache-Control": "max-age=0",
|
|
478
|
+
Priority: "u=0, i",
|
|
479
|
+
"Sec-Ch-Ua": '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
|
|
480
|
+
"Sec-Ch-Ua-Mobile": "?0",
|
|
481
|
+
"Sec-Ch-Ua-Platform": '"Windows"',
|
|
482
|
+
"Sec-Fetch-Dest": "document",
|
|
483
|
+
"Sec-Fetch-Mode": "navigate",
|
|
484
|
+
"Sec-Fetch-Site": "none",
|
|
485
|
+
"Sec-Fetch-User": "?1",
|
|
486
|
+
"Upgrade-Insecure-Requests": "1",
|
|
487
|
+
Referer: "https://www.bilibili.com/",
|
|
488
|
+
Cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
489
|
+
};
|
|
490
|
+
return {
|
|
491
|
+
method: "GET",
|
|
492
|
+
timeout: 1e4,
|
|
493
|
+
...requestConfig,
|
|
494
|
+
headers: {
|
|
495
|
+
...defHeaders,
|
|
496
|
+
...{}
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
};
|
|
500
|
+
var getKuaishouDefaultConfig = (cookie, requestConfig) => {
|
|
501
|
+
const defHeaders = {
|
|
502
|
+
Referer: "https://www.kuaishou.com/new-reco",
|
|
503
|
+
Origin: "https://www.kuaishou.com",
|
|
504
|
+
Accept: "application/json, text/plain, */*",
|
|
505
|
+
"Accept-Encoding": "gzip, deflate, br, zstd",
|
|
506
|
+
"Content-Type": "application/json",
|
|
507
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
508
|
+
Priority: "u=0, i",
|
|
509
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
|
|
510
|
+
Cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
511
|
+
};
|
|
512
|
+
return {
|
|
513
|
+
method: "POST",
|
|
514
|
+
timeout: 1e4,
|
|
515
|
+
...requestConfig,
|
|
516
|
+
headers: {
|
|
517
|
+
...defHeaders,
|
|
518
|
+
...{}
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
};
|
|
412
522
|
|
|
413
523
|
// src/platform/bilibili/getdata.ts
|
|
414
|
-
var
|
|
415
|
-
|
|
416
|
-
"
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
"sec-fetch-user": "?1",
|
|
426
|
-
"upgrade-insecure-requests": "1",
|
|
427
|
-
referer: "https://www.bilibili.com/"
|
|
428
|
-
};
|
|
429
|
-
var fetchBilibili = async (data2, cookie) => {
|
|
430
|
-
const headers2 = {
|
|
431
|
-
...defheaders,
|
|
432
|
-
cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
524
|
+
var fetchBilibili = async (data2, cookie, requestConfig) => {
|
|
525
|
+
var _a, _b, _c, _d, _e, _f;
|
|
526
|
+
const defHeaders = getBilibiliDefaultConfig(cookie)["headers"];
|
|
527
|
+
const baseRequestConfig = {
|
|
528
|
+
method: "GET",
|
|
529
|
+
timeout: 1e4,
|
|
530
|
+
...requestConfig,
|
|
531
|
+
headers: {
|
|
532
|
+
...defHeaders,
|
|
533
|
+
...{}
|
|
534
|
+
}
|
|
433
535
|
};
|
|
434
536
|
switch (data2.methodType) {
|
|
435
537
|
case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": {
|
|
436
|
-
const INFODATA = await GlobalGetData({
|
|
437
|
-
|
|
438
|
-
|
|
538
|
+
const INFODATA = await GlobalGetData(data2.methodType, {
|
|
539
|
+
...baseRequestConfig,
|
|
540
|
+
url: bilibiliApiUrls.\u89C6\u9891\u8BE6\u7EC6\u4FE1\u606F({ bvid: data2.bvid })
|
|
439
541
|
});
|
|
440
542
|
return INFODATA;
|
|
441
543
|
}
|
|
442
544
|
case "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E": {
|
|
443
545
|
const BASEURL = bilibiliApiUrls.\u89C6\u9891\u6D41\u4FE1\u606F({ avid: data2.avid, cid: data2.cid });
|
|
444
|
-
const SIGN = await qtparam(BASEURL,
|
|
445
|
-
const DATA = await GlobalGetData({
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
...data2
|
|
546
|
+
const SIGN = await qtparam(BASEURL, (_a = baseRequestConfig.headers) == null ? void 0 : _a.cookie);
|
|
547
|
+
const DATA = await GlobalGetData(data2.methodType, {
|
|
548
|
+
...baseRequestConfig,
|
|
549
|
+
url: bilibiliApiUrls.\u89C6\u9891\u6D41\u4FE1\u606F({ avid: data2.avid, cid: data2.cid }) + SIGN.QUERY
|
|
449
550
|
});
|
|
450
551
|
return DATA;
|
|
451
552
|
}
|
|
452
553
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
453
|
-
let { oid, number,
|
|
554
|
+
let { oid, number, type, mode, pagination_str, plat, seek_rpid, web_location } = data2;
|
|
454
555
|
let fetchedComments = [];
|
|
455
|
-
pn = pn ?? 1;
|
|
456
556
|
const maxRequestCount = 100;
|
|
457
|
-
const commentGrowthStabilized = 5;
|
|
458
|
-
let lastFetchedCount = 0;
|
|
459
|
-
let stabilizedCount = 0;
|
|
460
557
|
let requestCount = 0;
|
|
461
558
|
let tmpresp;
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
559
|
+
let nextPaginationStr = pagination_str;
|
|
560
|
+
let isEnd = false;
|
|
561
|
+
const checkStatusUrl = bilibiliApiUrls.\u8BC4\u8BBA\u533A\u72B6\u6001({ oid, type });
|
|
562
|
+
const checkStatusRes = await GlobalGetData(data2.methodType, {
|
|
563
|
+
...baseRequestConfig,
|
|
564
|
+
url: checkStatusUrl
|
|
565
|
+
});
|
|
566
|
+
if (checkStatusRes.data === null) {
|
|
567
|
+
logger.error("\u8BC4\u8BBA\u533A\u672A\u5F00\u653E");
|
|
568
|
+
return {
|
|
569
|
+
code: 404,
|
|
570
|
+
message: "\u8BC4\u8BBA\u533A\u672A\u5F00\u653E",
|
|
571
|
+
data: null
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
while (fetchedComments.length < Number(number ?? 20) && requestCount < maxRequestCount && !isEnd) {
|
|
575
|
+
const baseUrl = bilibiliApiUrls.\u8BC4\u8BBA\u533A\u660E\u7EC6({
|
|
469
576
|
type,
|
|
470
577
|
oid,
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
url: checkStatusUrl,
|
|
477
|
-
headers: headers2,
|
|
478
|
-
...data2
|
|
578
|
+
mode: mode ?? 3,
|
|
579
|
+
pagination_str: nextPaginationStr,
|
|
580
|
+
plat: plat ?? 1,
|
|
581
|
+
seek_rpid,
|
|
582
|
+
web_location: web_location ?? "1315875"
|
|
479
583
|
});
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
data: null
|
|
486
|
-
};
|
|
487
|
-
}
|
|
488
|
-
const response = await GlobalGetData({
|
|
489
|
-
url,
|
|
490
|
-
headers: headers2,
|
|
491
|
-
...data2
|
|
584
|
+
const wbiSignQuery = await wbi_sign(baseUrl, (_b = baseRequestConfig.headers) == null ? void 0 : _b.cookie);
|
|
585
|
+
const finalUrl = baseUrl + wbiSignQuery;
|
|
586
|
+
const response = await GlobalGetData(data2.methodType, {
|
|
587
|
+
...baseRequestConfig,
|
|
588
|
+
url: finalUrl
|
|
492
589
|
});
|
|
493
590
|
tmpresp = response;
|
|
494
|
-
const
|
|
495
|
-
fetchedComments.push(...
|
|
496
|
-
if (
|
|
497
|
-
|
|
591
|
+
const currentComments = ((_c = response.data) == null ? void 0 : _c.replies) || [];
|
|
592
|
+
fetchedComments.push(...currentComments);
|
|
593
|
+
if ((_d = response.data) == null ? void 0 : _d.cursor) {
|
|
594
|
+
nextPaginationStr = (_e = response.data.cursor.pagination_reply) == null ? void 0 : _e.next_offset;
|
|
595
|
+
isEnd = response.data.cursor.is_end;
|
|
498
596
|
} else {
|
|
499
|
-
|
|
597
|
+
isEnd = true;
|
|
500
598
|
}
|
|
501
|
-
|
|
502
|
-
if (
|
|
599
|
+
requestCount++;
|
|
600
|
+
if (isEnd || currentComments.length === 0 || !nextPaginationStr) {
|
|
601
|
+
logger.info("\u5DF2\u5230\u8FBE\u8BC4\u8BBA\u672B\u5C3E\u6216\u65E0\u66F4\u591A\u8BC4\u8BBA");
|
|
503
602
|
break;
|
|
504
603
|
}
|
|
505
|
-
pn++;
|
|
506
|
-
requestCount++;
|
|
507
604
|
}
|
|
508
605
|
const finalResponse = {
|
|
509
606
|
...tmpresp,
|
|
510
607
|
data: {
|
|
511
608
|
...tmpresp.data,
|
|
512
|
-
//
|
|
513
|
-
replies: Array.from(new Map(fetchedComments.map((item) => [item.rpid, item])).values()).slice(0, Number(data2.number))
|
|
609
|
+
// 去重并限制数量
|
|
610
|
+
replies: Array.from(new Map(fetchedComments.map((item) => [item.rpid, item])).values()).slice(0, Number(data2.number || 20))
|
|
514
611
|
}
|
|
515
612
|
};
|
|
516
613
|
return finalResponse;
|
|
517
614
|
}
|
|
518
615
|
case "Emoji\u6570\u636E": {
|
|
519
|
-
return await GlobalGetData({
|
|
520
|
-
|
|
521
|
-
|
|
616
|
+
return await GlobalGetData(data2.methodType, {
|
|
617
|
+
...baseRequestConfig,
|
|
618
|
+
url: bilibiliApiUrls.\u8868\u60C5\u5217\u8868()
|
|
522
619
|
});
|
|
523
620
|
}
|
|
524
621
|
case "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E": {
|
|
@@ -528,106 +625,121 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
528
625
|
}
|
|
529
626
|
const idType = id ? id.startsWith("ep") ? "ep_id" : "season_id" : "ep_id";
|
|
530
627
|
const newId = idType === "ep_id" ? id.replace("ep", "") : id.replace("ss", "");
|
|
531
|
-
const INFO = await GlobalGetData({
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
...data2
|
|
628
|
+
const INFO = await GlobalGetData(data2.methodType, {
|
|
629
|
+
...baseRequestConfig,
|
|
630
|
+
url: bilibiliApiUrls.\u756A\u5267\u660E\u7EC6({ [idType]: newId })
|
|
535
631
|
});
|
|
536
632
|
return INFO;
|
|
537
633
|
}
|
|
538
634
|
case "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E": {
|
|
539
635
|
const BASEURL = bilibiliApiUrls.\u756A\u5267\u89C6\u9891\u6D41\u4FE1\u606F({ cid: data2.cid, ep_id: data2.ep_id.replace("ep", "") });
|
|
540
|
-
const SIGN = await qtparam(BASEURL,
|
|
541
|
-
const DATA = await GlobalGetData({
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
...data2
|
|
636
|
+
const SIGN = await qtparam(BASEURL, (_f = baseRequestConfig.headers) == null ? void 0 : _f.cookie);
|
|
637
|
+
const DATA = await GlobalGetData(data2.methodType, {
|
|
638
|
+
...baseRequestConfig,
|
|
639
|
+
url: bilibiliApiUrls.\u756A\u5267\u89C6\u9891\u6D41\u4FE1\u606F({ cid: data2.cid, ep_id: data2.ep_id.replace("ep", "") }) + SIGN.QUERY
|
|
545
640
|
});
|
|
546
641
|
return DATA;
|
|
547
642
|
}
|
|
548
643
|
case "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E": {
|
|
549
|
-
|
|
644
|
+
const customConfig = {
|
|
645
|
+
...baseRequestConfig,
|
|
646
|
+
headers: {
|
|
647
|
+
...baseRequestConfig.headers,
|
|
648
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
649
|
+
...{
|
|
650
|
+
referer: void 0
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
};
|
|
550
654
|
const { host_mid } = data2;
|
|
551
|
-
const result = await GlobalGetData({
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
...data2
|
|
655
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
656
|
+
...customConfig,
|
|
657
|
+
url: bilibiliApiUrls.\u7528\u6237\u7A7A\u95F4\u52A8\u6001({ host_mid })
|
|
555
658
|
});
|
|
556
659
|
return result;
|
|
557
660
|
}
|
|
558
661
|
case "\u52A8\u6001\u8BE6\u60C5\u6570\u636E": {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
662
|
+
const customConfig = {
|
|
663
|
+
...baseRequestConfig,
|
|
664
|
+
headers: {
|
|
665
|
+
...baseRequestConfig.headers,
|
|
666
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
667
|
+
...{
|
|
668
|
+
referer: void 0
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
};
|
|
672
|
+
const dynamicINFO = await GlobalGetData(data2.methodType, {
|
|
673
|
+
...customConfig,
|
|
674
|
+
url: bilibiliApiUrls.\u52A8\u6001\u8BE6\u60C5({ dynamic_id: data2.dynamic_id })
|
|
564
675
|
});
|
|
565
676
|
return dynamicINFO;
|
|
566
677
|
}
|
|
567
678
|
case "\u52A8\u6001\u5361\u7247\u6570\u636E": {
|
|
568
|
-
|
|
679
|
+
const customConfig = {
|
|
680
|
+
...baseRequestConfig,
|
|
681
|
+
headers: {
|
|
682
|
+
...baseRequestConfig.headers,
|
|
683
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
684
|
+
...{
|
|
685
|
+
referer: void 0
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
};
|
|
569
689
|
const { dynamic_id } = data2;
|
|
570
|
-
const dynamicINFO_CARD = await GlobalGetData({
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
...data2
|
|
690
|
+
const dynamicINFO_CARD = await GlobalGetData(data2.methodType, {
|
|
691
|
+
...customConfig,
|
|
692
|
+
url: bilibiliApiUrls.\u52A8\u6001\u5361\u7247\u4FE1\u606F({ dynamic_id })
|
|
574
693
|
});
|
|
575
694
|
return dynamicINFO_CARD;
|
|
576
695
|
}
|
|
577
696
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
578
697
|
const { host_mid } = data2;
|
|
579
|
-
const result = await GlobalGetData({
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
...data2
|
|
698
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
699
|
+
...baseRequestConfig,
|
|
700
|
+
url: bilibiliApiUrls.\u7528\u6237\u540D\u7247\u4FE1\u606F({ host_mid })
|
|
583
701
|
});
|
|
584
702
|
return result;
|
|
585
703
|
}
|
|
586
704
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F": {
|
|
587
|
-
const result = await GlobalGetData({
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
...data2
|
|
705
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
706
|
+
...baseRequestConfig,
|
|
707
|
+
url: bilibiliApiUrls.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: data2.room_id })
|
|
591
708
|
});
|
|
592
709
|
return result;
|
|
593
710
|
}
|
|
594
711
|
case "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F": {
|
|
595
|
-
const result = await GlobalGetData({
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
...data2
|
|
712
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
713
|
+
...baseRequestConfig,
|
|
714
|
+
url: bilibiliApiUrls.\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F({ room_id: data2.room_id })
|
|
599
715
|
});
|
|
600
716
|
return result;
|
|
601
717
|
}
|
|
602
718
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801": {
|
|
603
|
-
const result = await GlobalGetData({
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
...data2
|
|
719
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
720
|
+
...baseRequestConfig,
|
|
721
|
+
url: bilibiliApiUrls.\u7533\u8BF7\u4E8C\u7EF4\u7801()
|
|
607
722
|
});
|
|
608
723
|
return result;
|
|
609
724
|
}
|
|
610
725
|
case "\u4E8C\u7EF4\u7801\u72B6\u6001": {
|
|
611
|
-
const result = await
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
}).getHeadersAndData();
|
|
726
|
+
const result = await getHeadersAndData({
|
|
727
|
+
...baseRequestConfig,
|
|
728
|
+
url: bilibiliApiUrls.\u4E8C\u7EF4\u7801\u72B6\u6001({ qrcode_key: data2.qrcode_key })
|
|
729
|
+
});
|
|
616
730
|
return result;
|
|
617
731
|
}
|
|
618
732
|
case "\u767B\u5F55\u57FA\u672C\u4FE1\u606F": {
|
|
619
|
-
const result = await GlobalGetData({
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
...data2
|
|
733
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
734
|
+
...baseRequestConfig,
|
|
735
|
+
url: bilibiliApiUrls.\u767B\u5F55\u57FA\u672C\u4FE1\u606F()
|
|
623
736
|
});
|
|
624
737
|
return result;
|
|
625
738
|
}
|
|
626
739
|
case "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF": {
|
|
627
|
-
const result = await GlobalGetData({
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
...data2
|
|
740
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
741
|
+
...baseRequestConfig,
|
|
742
|
+
url: bilibiliApiUrls.\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF({ host_mid: data2.host_mid })
|
|
631
743
|
});
|
|
632
744
|
return result;
|
|
633
745
|
}
|
|
@@ -656,19 +768,19 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
656
768
|
return null;
|
|
657
769
|
}
|
|
658
770
|
};
|
|
659
|
-
var GlobalGetData = async (options) => {
|
|
771
|
+
var GlobalGetData = async (type, options) => {
|
|
660
772
|
let warningMessage = "";
|
|
661
773
|
try {
|
|
662
|
-
const result = await
|
|
774
|
+
const result = await fetchData(options);
|
|
663
775
|
if (!result || result === "") {
|
|
664
776
|
const Err = {
|
|
665
777
|
errorDescription: "\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684B\u7AD9ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01",
|
|
666
|
-
requestType:
|
|
778
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
667
779
|
requestUrl: options.url
|
|
668
780
|
};
|
|
669
781
|
warningMessage = `
|
|
670
782
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow("\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684B\u7AD9ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01")}
|
|
671
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
783
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
672
784
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
673
785
|
`;
|
|
674
786
|
logger.warn(warningMessage);
|
|
@@ -682,13 +794,13 @@ var GlobalGetData = async (options) => {
|
|
|
682
794
|
const errorMessage = bilibiliErrorCodeMap[result.code] || result.message || "\u672A\u77E5\u9519\u8BEF";
|
|
683
795
|
const Err = {
|
|
684
796
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${errorMessage}\uFF01`,
|
|
685
|
-
requestType:
|
|
797
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
686
798
|
requestUrl: options.url
|
|
687
799
|
};
|
|
688
800
|
warningMessage = `
|
|
689
801
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow(errorMessage)}
|
|
690
802
|
\u9519\u8BEF\u4EE3\u7801\uFF1A${result.code}
|
|
691
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
803
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
692
804
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
693
805
|
`;
|
|
694
806
|
logger.warn(warningMessage);
|
|
@@ -709,7 +821,7 @@ var GlobalGetData = async (options) => {
|
|
|
709
821
|
data: error.data,
|
|
710
822
|
amagiError: {
|
|
711
823
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
712
|
-
requestType:
|
|
824
|
+
requestType: type,
|
|
713
825
|
requestUrl: options.url
|
|
714
826
|
},
|
|
715
827
|
amagiMessage: warningMessage
|
|
@@ -767,112 +879,6 @@ var bilibiliErrorCodeMap = {
|
|
|
767
879
|
"-799": "\u8BF7\u6C42\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",
|
|
768
880
|
"-8888": "\u5BF9\u4E0D\u8D77\uFF0C\u670D\u52A1\u5668\u5F00\u5C0F\u5DEE\u4E86~ (\u0CA5\uFE4F\u0CA5)"
|
|
769
881
|
};
|
|
770
|
-
var mixinKeyEncTab = [
|
|
771
|
-
46,
|
|
772
|
-
47,
|
|
773
|
-
18,
|
|
774
|
-
2,
|
|
775
|
-
53,
|
|
776
|
-
8,
|
|
777
|
-
23,
|
|
778
|
-
32,
|
|
779
|
-
15,
|
|
780
|
-
50,
|
|
781
|
-
10,
|
|
782
|
-
31,
|
|
783
|
-
58,
|
|
784
|
-
3,
|
|
785
|
-
45,
|
|
786
|
-
35,
|
|
787
|
-
27,
|
|
788
|
-
43,
|
|
789
|
-
5,
|
|
790
|
-
49,
|
|
791
|
-
33,
|
|
792
|
-
9,
|
|
793
|
-
42,
|
|
794
|
-
19,
|
|
795
|
-
29,
|
|
796
|
-
28,
|
|
797
|
-
14,
|
|
798
|
-
39,
|
|
799
|
-
12,
|
|
800
|
-
38,
|
|
801
|
-
41,
|
|
802
|
-
13,
|
|
803
|
-
37,
|
|
804
|
-
48,
|
|
805
|
-
7,
|
|
806
|
-
16,
|
|
807
|
-
24,
|
|
808
|
-
55,
|
|
809
|
-
40,
|
|
810
|
-
61,
|
|
811
|
-
26,
|
|
812
|
-
17,
|
|
813
|
-
0,
|
|
814
|
-
1,
|
|
815
|
-
60,
|
|
816
|
-
51,
|
|
817
|
-
30,
|
|
818
|
-
4,
|
|
819
|
-
22,
|
|
820
|
-
25,
|
|
821
|
-
54,
|
|
822
|
-
21,
|
|
823
|
-
56,
|
|
824
|
-
59,
|
|
825
|
-
6,
|
|
826
|
-
63,
|
|
827
|
-
57,
|
|
828
|
-
62,
|
|
829
|
-
11,
|
|
830
|
-
36,
|
|
831
|
-
20,
|
|
832
|
-
34,
|
|
833
|
-
44,
|
|
834
|
-
52
|
|
835
|
-
];
|
|
836
|
-
var getMixinKey = (orig) => mixinKeyEncTab.map((n) => orig[n]).join("").slice(0, 32);
|
|
837
|
-
var encWbi = (params, img_key, sub_key) => {
|
|
838
|
-
const mixin_key = getMixinKey(img_key + sub_key);
|
|
839
|
-
const curr_time = Math.round(Date.now() / 1e3);
|
|
840
|
-
const chr_filter = /[!'()*]/g;
|
|
841
|
-
Object.assign(params, { wts: curr_time });
|
|
842
|
-
const query = Object.keys(params).sort().map((key) => {
|
|
843
|
-
const value = params[key].toString().replace(chr_filter, "");
|
|
844
|
-
return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
|
|
845
|
-
}).join("&");
|
|
846
|
-
const wbi_sign2 = crypto__default.default.createHash("md5").update(query + mixin_key).digest("hex");
|
|
847
|
-
return `&wts=${curr_time}&w_rid=${wbi_sign2}`;
|
|
848
|
-
};
|
|
849
|
-
var getWbiKeys = async (cookie) => {
|
|
850
|
-
const res = await axios__default.default("https://api.bilibili.com/x/web-interface/nav", {
|
|
851
|
-
headers: {
|
|
852
|
-
Cookie: cookie
|
|
853
|
-
}
|
|
854
|
-
});
|
|
855
|
-
const response = res.data;
|
|
856
|
-
const {
|
|
857
|
-
data: {
|
|
858
|
-
wbi_img: { img_url, sub_url }
|
|
859
|
-
}
|
|
860
|
-
} = response;
|
|
861
|
-
return {
|
|
862
|
-
img_key: img_url.slice(img_url.lastIndexOf("/") + 1, img_url.lastIndexOf(".")),
|
|
863
|
-
sub_key: sub_url.slice(sub_url.lastIndexOf("/") + 1, sub_url.lastIndexOf("."))
|
|
864
|
-
};
|
|
865
|
-
};
|
|
866
|
-
var wbi_sign = async (BASEURL, cookie) => {
|
|
867
|
-
const web_keys = await getWbiKeys(cookie);
|
|
868
|
-
const url = new URL(BASEURL);
|
|
869
|
-
const params = {};
|
|
870
|
-
for (const [key, value] of url.searchParams.entries()) {
|
|
871
|
-
params[key] = value;
|
|
872
|
-
}
|
|
873
|
-
const query = encWbi(params, web_keys.img_key, web_keys.sub_key);
|
|
874
|
-
return query;
|
|
875
|
-
};
|
|
876
882
|
|
|
877
883
|
// src/platform/douyin/sign/a_bogus.ts
|
|
878
884
|
var SM3 = class {
|
|
@@ -1338,21 +1344,17 @@ var DouyinAPI = class {
|
|
|
1338
1344
|
var douyinApiUrls = new DouyinAPI();
|
|
1339
1345
|
|
|
1340
1346
|
// src/platform/douyin/getdata.ts
|
|
1341
|
-
var
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
}
|
|
1351
|
-
|
|
1352
|
-
var _a, _b;
|
|
1353
|
-
const headers2 = {
|
|
1354
|
-
...defheaders2,
|
|
1355
|
-
cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
1347
|
+
var DouyinData = async (data2, cookie, requestConfig) => {
|
|
1348
|
+
var _a, _b, _c, _d;
|
|
1349
|
+
const defHeaders = getDouyinDefaultConfig(cookie)["headers"];
|
|
1350
|
+
const baseRequestConfig = {
|
|
1351
|
+
method: "GET",
|
|
1352
|
+
timeout: 1e4,
|
|
1353
|
+
...requestConfig,
|
|
1354
|
+
headers: {
|
|
1355
|
+
...defHeaders,
|
|
1356
|
+
...(requestConfig == null ? void 0 : requestConfig.headers) || {}
|
|
1357
|
+
}
|
|
1356
1358
|
};
|
|
1357
1359
|
switch (data2.methodType) {
|
|
1358
1360
|
case "\u805A\u5408\u89E3\u6790":
|
|
@@ -1360,73 +1362,101 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1360
1362
|
case "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E":
|
|
1361
1363
|
case "\u5408\u8F91\u4F5C\u54C1\u6570\u636E": {
|
|
1362
1364
|
const url = douyinApiUrls.\u89C6\u9891\u6216\u56FE\u96C6({ aweme_id: data2.aweme_id });
|
|
1363
|
-
const VideoData = await GlobalGetData2({
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
...data2
|
|
1365
|
+
const VideoData = await GlobalGetData2(data2.methodType, {
|
|
1366
|
+
...baseRequestConfig,
|
|
1367
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1367
1368
|
});
|
|
1368
1369
|
return VideoData;
|
|
1369
1370
|
}
|
|
1370
1371
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1371
1372
|
const urlGenerator = (params) => douyinApiUrls.\u8BC4\u8BBA(params);
|
|
1372
|
-
const response = await fetchPaginatedData(
|
|
1373
|
+
const response = await fetchPaginatedData(
|
|
1374
|
+
data2.methodType,
|
|
1375
|
+
urlGenerator,
|
|
1376
|
+
data2,
|
|
1377
|
+
50,
|
|
1378
|
+
baseRequestConfig
|
|
1379
|
+
);
|
|
1373
1380
|
return response;
|
|
1374
1381
|
}
|
|
1375
1382
|
case "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E": {
|
|
1376
1383
|
const urlGenerator = (params) => douyinApiUrls.\u4E8C\u7EA7\u8BC4\u8BBA(params);
|
|
1384
|
+
const customConfig = {
|
|
1385
|
+
...baseRequestConfig,
|
|
1386
|
+
headers: {
|
|
1387
|
+
...baseRequestConfig.headers,
|
|
1388
|
+
// 只有在外部配置没有referer时才设置内部的referer
|
|
1389
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("referer" in requestConfig.headers)) && {
|
|
1390
|
+
referer: `https://www.douyin.com/note/${data2.aweme_id}`
|
|
1391
|
+
}
|
|
1392
|
+
}
|
|
1393
|
+
};
|
|
1377
1394
|
const response = await fetchPaginatedData(
|
|
1395
|
+
data2.methodType,
|
|
1378
1396
|
urlGenerator,
|
|
1379
1397
|
data2,
|
|
1380
1398
|
3,
|
|
1381
|
-
|
|
1382
|
-
...headers2,
|
|
1383
|
-
referer: `https://www.douyin.com/note/${data2.aweme_id}`
|
|
1384
|
-
}
|
|
1399
|
+
customConfig
|
|
1385
1400
|
);
|
|
1386
1401
|
return response;
|
|
1387
1402
|
}
|
|
1388
1403
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
1389
1404
|
const url = douyinApiUrls.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1390
|
-
const
|
|
1391
|
-
|
|
1405
|
+
const customConfig = {
|
|
1406
|
+
...baseRequestConfig,
|
|
1392
1407
|
headers: {
|
|
1393
|
-
...
|
|
1394
|
-
Referer
|
|
1395
|
-
|
|
1396
|
-
|
|
1408
|
+
...baseRequestConfig.headers,
|
|
1409
|
+
// 只有在外部配置没有Referer时才设置内部的Referer
|
|
1410
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1411
|
+
Referer: `https://www.douyin.com/user/${data2.sec_uid}`
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
};
|
|
1415
|
+
const UserInfoData = await GlobalGetData2(data2.methodType, {
|
|
1416
|
+
...customConfig,
|
|
1417
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1397
1418
|
});
|
|
1398
1419
|
return UserInfoData;
|
|
1399
1420
|
}
|
|
1400
1421
|
case "Emoji\u6570\u636E": {
|
|
1401
1422
|
const url = douyinApiUrls.\u8868\u60C5();
|
|
1402
|
-
const EmojiData = await GlobalGetData2({
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
...data2
|
|
1423
|
+
const EmojiData = await GlobalGetData2(data2.methodType, {
|
|
1424
|
+
...baseRequestConfig,
|
|
1425
|
+
url
|
|
1406
1426
|
});
|
|
1407
1427
|
return EmojiData;
|
|
1408
1428
|
}
|
|
1409
1429
|
case "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E": {
|
|
1410
1430
|
const url = douyinApiUrls.\u7528\u6237\u4E3B\u9875\u89C6\u9891({ sec_uid: data2.sec_uid });
|
|
1411
|
-
const
|
|
1412
|
-
|
|
1431
|
+
const customConfig = {
|
|
1432
|
+
...baseRequestConfig,
|
|
1413
1433
|
headers: {
|
|
1414
|
-
...
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1434
|
+
...baseRequestConfig.headers,
|
|
1435
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1436
|
+
Referer: `https://www.douyin.com/user/${data2.sec_uid}`
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
};
|
|
1440
|
+
const UserVideoListData = await GlobalGetData2(data2.methodType, {
|
|
1441
|
+
...customConfig,
|
|
1442
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1418
1443
|
});
|
|
1419
1444
|
return UserVideoListData;
|
|
1420
1445
|
}
|
|
1421
1446
|
case "\u70ED\u70B9\u8BCD\u6570\u636E": {
|
|
1422
1447
|
const url = douyinApiUrls.\u70ED\u70B9\u8BCD({ query: data2.query, number: data2.number ?? 10 });
|
|
1423
|
-
const
|
|
1424
|
-
|
|
1448
|
+
const customConfig = {
|
|
1449
|
+
...baseRequestConfig,
|
|
1425
1450
|
headers: {
|
|
1426
|
-
...
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1451
|
+
...baseRequestConfig.headers,
|
|
1452
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1453
|
+
Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data2.query))}`
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
};
|
|
1457
|
+
const SuggestWordsData = await GlobalGetData2(data2.methodType, {
|
|
1458
|
+
...customConfig,
|
|
1459
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1430
1460
|
});
|
|
1431
1461
|
return SuggestWordsData;
|
|
1432
1462
|
}
|
|
@@ -1435,6 +1465,15 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1435
1465
|
const maxPageSize = 15;
|
|
1436
1466
|
let fetchedSearchList = [];
|
|
1437
1467
|
let tmpresp = {};
|
|
1468
|
+
const customConfig = {
|
|
1469
|
+
...baseRequestConfig,
|
|
1470
|
+
headers: {
|
|
1471
|
+
...baseRequestConfig.headers,
|
|
1472
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1473
|
+
Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data2.query))}`
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
};
|
|
1438
1477
|
while (fetchedSearchList.length < Number(data2.number ?? 10)) {
|
|
1439
1478
|
const requestCount = Math.min(Number(data2.number ?? 50) - fetchedSearchList.length, maxPageSize);
|
|
1440
1479
|
const url = douyinApiUrls.\u641C\u7D22({
|
|
@@ -1442,15 +1481,11 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1442
1481
|
number: requestCount,
|
|
1443
1482
|
search_id: search_id === "" ? void 0 : search_id
|
|
1444
1483
|
});
|
|
1445
|
-
const response = await GlobalGetData2({
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
...headers2,
|
|
1449
|
-
Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data2.query))}`
|
|
1450
|
-
},
|
|
1451
|
-
...data2
|
|
1484
|
+
const response = await GlobalGetData2(data2.methodType, {
|
|
1485
|
+
...customConfig,
|
|
1486
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1452
1487
|
});
|
|
1453
|
-
if (response.data.length === 0) {
|
|
1488
|
+
if (((_a = response.data) == null ? void 0 : _a.length) === 0) {
|
|
1454
1489
|
logger.warn("\u83B7\u53D6\u641C\u7D22\u6570\u636E\u5931\u8D25\uFF01\u8BF7\u6C42\u6210\u529F\u4F46\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\n\u4F60\u7684\u6296\u97F3ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01\n\u8BF7\u6C42\u7C7B\u578B\uFF1A" + data2.methodType);
|
|
1455
1490
|
return false;
|
|
1456
1491
|
}
|
|
@@ -1459,7 +1494,7 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1459
1494
|
}
|
|
1460
1495
|
fetchedSearchList.push(...response.data);
|
|
1461
1496
|
tmpresp = response;
|
|
1462
|
-
search_id = response.log_pb.impr_id;
|
|
1497
|
+
search_id = (_b = response.log_pb) == null ? void 0 : _b.impr_id;
|
|
1463
1498
|
}
|
|
1464
1499
|
const finalResponse = {
|
|
1465
1500
|
...tmpresp,
|
|
@@ -1469,35 +1504,38 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1469
1504
|
}
|
|
1470
1505
|
case "\u52A8\u6001\u8868\u60C5\u6570\u636E": {
|
|
1471
1506
|
const url = douyinApiUrls.\u4E92\u52A8\u8868\u60C5();
|
|
1472
|
-
const ExpressionPlusData = await GlobalGetData2({
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
...data2
|
|
1507
|
+
const ExpressionPlusData = await GlobalGetData2(data2.methodType, {
|
|
1508
|
+
...baseRequestConfig,
|
|
1509
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1476
1510
|
});
|
|
1477
1511
|
return ExpressionPlusData;
|
|
1478
1512
|
}
|
|
1479
1513
|
case "\u97F3\u4E50\u6570\u636E": {
|
|
1480
1514
|
const url = douyinApiUrls.\u80CC\u666F\u97F3\u4E50({ music_id: data2.music_id });
|
|
1481
|
-
const MusicData = await GlobalGetData2({
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
...data2
|
|
1515
|
+
const MusicData = await GlobalGetData2(data2.methodType, {
|
|
1516
|
+
...baseRequestConfig,
|
|
1517
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1485
1518
|
});
|
|
1486
1519
|
return MusicData;
|
|
1487
1520
|
}
|
|
1488
1521
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E": {
|
|
1489
1522
|
let url = douyinApiUrls.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1490
1523
|
const fetchUrl = `${url}&a_bogus=${douyinSign.AB(url)}`;
|
|
1491
|
-
const
|
|
1492
|
-
|
|
1524
|
+
const customConfig = {
|
|
1525
|
+
...baseRequestConfig,
|
|
1493
1526
|
headers: {
|
|
1494
|
-
...
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1527
|
+
...baseRequestConfig.headers,
|
|
1528
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1529
|
+
Referer: `https://www.douyin.com/user/${data2.sec_uid}`
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
};
|
|
1533
|
+
const UserInfoData = await GlobalGetData2(data2.methodType, {
|
|
1534
|
+
...customConfig,
|
|
1535
|
+
url: fetchUrl
|
|
1498
1536
|
});
|
|
1499
|
-
if (!((
|
|
1500
|
-
logger.error((((
|
|
1537
|
+
if (!((_c = UserInfoData == null ? void 0 : UserInfoData.user) == null ? void 0 : _c.live_status) || UserInfoData.user.live_status !== 1) {
|
|
1538
|
+
logger.error((((_d = UserInfoData == null ? void 0 : UserInfoData.user) == null ? void 0 : _d.nickname) || "\u7528\u6237") + "\u5F53\u524D\u672A\u5728\u76F4\u64AD");
|
|
1501
1539
|
const Err = {
|
|
1502
1540
|
errorDescription: "\u68C0\u67E5\u5931\u8D25\uFF01\u8BE5\u7528\u6237\u5F53\u524D\u672A\u5728\u76F4\u64AD\uFF01 TypeError: Cannot read properties of undefined (reading 'live_status')",
|
|
1503
1541
|
requestType: data2.methodType ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
@@ -1520,31 +1558,36 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1520
1558
|
}
|
|
1521
1559
|
const room_data = JSON.parse(UserInfoData.user.room_data);
|
|
1522
1560
|
url = douyinApiUrls.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: UserInfoData.user.room_id_str, web_rid: room_data.owner.web_rid });
|
|
1523
|
-
const
|
|
1524
|
-
|
|
1561
|
+
const liveCustomConfig = {
|
|
1562
|
+
...baseRequestConfig,
|
|
1525
1563
|
headers: {
|
|
1526
|
-
...
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1564
|
+
...baseRequestConfig.headers,
|
|
1565
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1566
|
+
Referer: `https://live.douyin.com/${room_data.owner.web_rid}`
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1569
|
+
};
|
|
1570
|
+
const LiveRoomData = await GlobalGetData2(data2.methodType, {
|
|
1571
|
+
...liveCustomConfig,
|
|
1572
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1530
1573
|
});
|
|
1531
1574
|
return LiveRoomData;
|
|
1532
1575
|
}
|
|
1533
1576
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E": {
|
|
1534
1577
|
const url = douyinApiUrls.\u7533\u8BF7\u4E8C\u7EF4\u7801({ verify_fp: data2.verify_fp });
|
|
1535
|
-
const LoginQrcodeStatusData = await GlobalGetData2({
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
...data2
|
|
1578
|
+
const LoginQrcodeStatusData = await GlobalGetData2(data2.methodType, {
|
|
1579
|
+
...baseRequestConfig,
|
|
1580
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1539
1581
|
});
|
|
1540
1582
|
return LoginQrcodeStatusData;
|
|
1541
1583
|
}
|
|
1542
|
-
default:
|
|
1543
|
-
logger.warn(`\u672A\u77E5\
|
|
1584
|
+
default: {
|
|
1585
|
+
logger.warn(`\u672A\u77E5\u7684\u6296\u97F3\u6570\u636E\u63A5\u53E3\uFF1A\u300C${logger.red(data2.methodType)}\u300D`);
|
|
1544
1586
|
return null;
|
|
1587
|
+
}
|
|
1545
1588
|
}
|
|
1546
1589
|
};
|
|
1547
|
-
var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize,
|
|
1590
|
+
var fetchPaginatedData = async (type, apiUrlGenerator, params, maxPageSize, requestConfig) => {
|
|
1548
1591
|
let cursor = params.cursor ?? 0;
|
|
1549
1592
|
let fetchedData = [];
|
|
1550
1593
|
let tmpresp = {};
|
|
@@ -1555,10 +1598,9 @@ var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize, headers2)
|
|
|
1555
1598
|
number: requestCount,
|
|
1556
1599
|
cursor
|
|
1557
1600
|
});
|
|
1558
|
-
const response = await GlobalGetData2({
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
...params
|
|
1601
|
+
const response = await GlobalGetData2(type, {
|
|
1602
|
+
...requestConfig,
|
|
1603
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1562
1604
|
});
|
|
1563
1605
|
fetchedData.push(...response.comments || response.data || []);
|
|
1564
1606
|
tmpresp = response;
|
|
@@ -1574,20 +1616,20 @@ var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize, headers2)
|
|
|
1574
1616
|
};
|
|
1575
1617
|
return finalResponse;
|
|
1576
1618
|
};
|
|
1577
|
-
var GlobalGetData2 = async (
|
|
1619
|
+
var GlobalGetData2 = async (type, config) => {
|
|
1578
1620
|
let warningMessage = "";
|
|
1579
1621
|
try {
|
|
1580
|
-
const result = await
|
|
1622
|
+
const result = await fetchData(config);
|
|
1581
1623
|
if (!result || result === "") {
|
|
1582
1624
|
const Err = {
|
|
1583
1625
|
errorDescription: "\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684\u6296\u97F3ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01",
|
|
1584
|
-
requestType:
|
|
1585
|
-
requestUrl:
|
|
1626
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1627
|
+
requestUrl: config.url
|
|
1586
1628
|
};
|
|
1587
1629
|
warningMessage = `
|
|
1588
1630
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow("\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684\u6296\u97F3ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01")}
|
|
1589
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1590
|
-
\u8BF7\u6C42URL\uFF1A${
|
|
1631
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1632
|
+
\u8BF7\u6C42URL\uFF1A${config.url}
|
|
1591
1633
|
`;
|
|
1592
1634
|
logger.warn(warningMessage);
|
|
1593
1635
|
throw {
|
|
@@ -1600,13 +1642,13 @@ var GlobalGetData2 = async (options) => {
|
|
|
1600
1642
|
const filterReason = result.filter_detail.filter_reason;
|
|
1601
1643
|
const Err = {
|
|
1602
1644
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${filterReason}\uFF01`,
|
|
1603
|
-
requestType:
|
|
1604
|
-
requestUrl:
|
|
1645
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1646
|
+
requestUrl: config.url
|
|
1605
1647
|
};
|
|
1606
1648
|
warningMessage = `
|
|
1607
1649
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow(filterReason)}
|
|
1608
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1609
|
-
\u8BF7\u6C42URL\uFF1A${
|
|
1650
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1651
|
+
\u8BF7\u6C42URL\uFF1A${config.url}
|
|
1610
1652
|
`;
|
|
1611
1653
|
logger.warn(warningMessage);
|
|
1612
1654
|
throw {
|
|
@@ -1626,8 +1668,8 @@ var GlobalGetData2 = async (options) => {
|
|
|
1626
1668
|
data: null,
|
|
1627
1669
|
amagiError: {
|
|
1628
1670
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
1629
|
-
requestType:
|
|
1630
|
-
requestUrl:
|
|
1671
|
+
requestType: type,
|
|
1672
|
+
requestUrl: config.url
|
|
1631
1673
|
},
|
|
1632
1674
|
amagiMessage: warningMessage
|
|
1633
1675
|
};
|
|
@@ -1684,50 +1726,42 @@ var API = class {
|
|
|
1684
1726
|
var kuaishouApiUrls = new API();
|
|
1685
1727
|
|
|
1686
1728
|
// src/platform/kuaishou/getdata.ts
|
|
1687
|
-
var
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
...defheaders3,
|
|
1698
|
-
cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
1729
|
+
var KuaishouData = async (data2, cookie, requestConfig) => {
|
|
1730
|
+
const defHeaders = getKuaishouDefaultConfig(cookie)["headers"];
|
|
1731
|
+
const baseRequestConfig = {
|
|
1732
|
+
method: "POST",
|
|
1733
|
+
timeout: 1e4,
|
|
1734
|
+
...requestConfig,
|
|
1735
|
+
headers: {
|
|
1736
|
+
...defHeaders,
|
|
1737
|
+
...{}
|
|
1738
|
+
}
|
|
1699
1739
|
};
|
|
1700
1740
|
switch (data2.methodType) {
|
|
1701
1741
|
case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": {
|
|
1702
1742
|
const body = kuaishouApiUrls.\u5355\u4E2A\u4F5C\u54C1\u4FE1\u606F({ photoId: data2.photoId });
|
|
1703
|
-
const VideoData = await GlobalGetData3({
|
|
1743
|
+
const VideoData = await GlobalGetData3(data2.methodType, {
|
|
1744
|
+
...baseRequestConfig,
|
|
1704
1745
|
url: body.url,
|
|
1705
|
-
|
|
1706
|
-
headers: headers2,
|
|
1707
|
-
body: body.body,
|
|
1708
|
-
...data2
|
|
1746
|
+
data: body.body
|
|
1709
1747
|
});
|
|
1710
1748
|
return VideoData;
|
|
1711
1749
|
}
|
|
1712
1750
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1713
1751
|
const body = kuaishouApiUrls.\u4F5C\u54C1\u8BC4\u8BBA\u4FE1\u606F({ photoId: data2.photoId });
|
|
1714
|
-
const VideoData = await GlobalGetData3({
|
|
1752
|
+
const VideoData = await GlobalGetData3(data2.methodType, {
|
|
1753
|
+
...baseRequestConfig,
|
|
1715
1754
|
url: body.url,
|
|
1716
|
-
|
|
1717
|
-
headers: headers2,
|
|
1718
|
-
body: body.body,
|
|
1719
|
-
...data2
|
|
1755
|
+
data: body.body
|
|
1720
1756
|
});
|
|
1721
1757
|
return VideoData;
|
|
1722
1758
|
}
|
|
1723
1759
|
case "Emoji\u6570\u636E": {
|
|
1724
1760
|
const body = kuaishouApiUrls.\u8868\u60C5();
|
|
1725
|
-
const EmojiData = await GlobalGetData3({
|
|
1761
|
+
const EmojiData = await GlobalGetData3(data2.methodType, {
|
|
1762
|
+
...baseRequestConfig,
|
|
1726
1763
|
url: body.url,
|
|
1727
|
-
|
|
1728
|
-
headers: headers2,
|
|
1729
|
-
body: body.body,
|
|
1730
|
-
...data2
|
|
1764
|
+
data: body.body
|
|
1731
1765
|
});
|
|
1732
1766
|
return EmojiData;
|
|
1733
1767
|
}
|
|
@@ -1736,22 +1770,22 @@ var KuaishouData = async (data2, cookie) => {
|
|
|
1736
1770
|
return null;
|
|
1737
1771
|
}
|
|
1738
1772
|
};
|
|
1739
|
-
var GlobalGetData3 = async (options) => {
|
|
1773
|
+
var GlobalGetData3 = async (type, options) => {
|
|
1740
1774
|
let warningMessage = "";
|
|
1741
1775
|
try {
|
|
1742
|
-
const result = await
|
|
1776
|
+
const result = await fetchData(options);
|
|
1743
1777
|
if (result === "" || !result || result.result === 2) {
|
|
1744
1778
|
const Err = {
|
|
1745
1779
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF01`,
|
|
1746
|
-
requestType:
|
|
1780
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1747
1781
|
requestUrl: options.url,
|
|
1748
|
-
requestBody: JSON.stringify(options.
|
|
1782
|
+
requestBody: JSON.stringify(options.data)
|
|
1749
1783
|
};
|
|
1750
1784
|
warningMessage = `
|
|
1751
1785
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow("\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684\u5FEB\u624Bck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01")}
|
|
1752
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1786
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1753
1787
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
1754
|
-
\u8BF7\u6C42\u53C2\u6570\uFF1A${JSON.stringify(options.
|
|
1788
|
+
\u8BF7\u6C42\u53C2\u6570\uFF1A${JSON.stringify(options.data, null, 2)}
|
|
1755
1789
|
`;
|
|
1756
1790
|
logger.warn(warningMessage);
|
|
1757
1791
|
throw {
|
|
@@ -1771,7 +1805,7 @@ var GlobalGetData3 = async (options) => {
|
|
|
1771
1805
|
data: null,
|
|
1772
1806
|
amagiError: {
|
|
1773
1807
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
1774
|
-
requestType:
|
|
1808
|
+
requestType: type,
|
|
1775
1809
|
requestUrl: options.url
|
|
1776
1810
|
},
|
|
1777
1811
|
amagiMessage: warningMessage
|
|
@@ -1859,7 +1893,7 @@ var BilibiliVideoDownloadParamsSchema = zod.z.object({
|
|
|
1859
1893
|
});
|
|
1860
1894
|
var BilibiliCommentParamsSchema = zod.z.object({
|
|
1861
1895
|
methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E"),
|
|
1862
|
-
oid:
|
|
1896
|
+
oid: zod.z.string({ required_error: "OID\u4E0D\u80FD\u4E3A\u7A7A" }).min(1, "OID\u4E0D\u80FD\u4E3A\u7A7A"),
|
|
1863
1897
|
type: smartNumber("\u8BC4\u8BBA\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A", 1, true).refine(
|
|
1864
1898
|
(val) => [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 33].includes(val),
|
|
1865
1899
|
{ message: "\u65E0\u6548\u7684\u8BC4\u8BBA\u533A\u7C7B\u578B" }
|
|
@@ -1995,23 +2029,26 @@ var createErrorResponse = (error, message, code = 500) => {
|
|
|
1995
2029
|
};
|
|
1996
2030
|
|
|
1997
2031
|
// src/model/DataFetchers.ts
|
|
1998
|
-
async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2032
|
+
async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
1999
2033
|
try {
|
|
2000
2034
|
let options;
|
|
2001
2035
|
let cookie;
|
|
2036
|
+
let config;
|
|
2002
2037
|
if (typeof optionsOrCookie === "string") {
|
|
2003
2038
|
cookie = optionsOrCookie;
|
|
2004
2039
|
options = cookieOrOptions;
|
|
2040
|
+
config = requestConfig;
|
|
2005
2041
|
} else {
|
|
2006
2042
|
options = optionsOrCookie;
|
|
2007
2043
|
cookie = cookieOrOptions;
|
|
2044
|
+
config = requestConfig;
|
|
2008
2045
|
}
|
|
2009
2046
|
const { typeMode: _, ...validationOptions } = options || {};
|
|
2010
2047
|
const validatedParams = validateDouyinParams(methodType, validationOptions);
|
|
2011
2048
|
const apiParams = {
|
|
2012
2049
|
...validatedParams
|
|
2013
2050
|
};
|
|
2014
|
-
const rawData = await DouyinData(apiParams, cookie);
|
|
2051
|
+
const rawData = await DouyinData(apiParams, cookie, config);
|
|
2015
2052
|
if (rawData.data === "") {
|
|
2016
2053
|
return createErrorResponse(rawData.amagiError, "\u6296\u97F3\u6570\u636E\u83B7\u53D6\u5931\u8D25");
|
|
2017
2054
|
}
|
|
@@ -2021,7 +2058,7 @@ async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
|
2021
2058
|
throw new Error(`\u6296\u97F3\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
2022
2059
|
}
|
|
2023
2060
|
}
|
|
2024
|
-
async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2061
|
+
async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2025
2062
|
try {
|
|
2026
2063
|
let options;
|
|
2027
2064
|
let cookie;
|
|
@@ -2047,7 +2084,7 @@ async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
|
2047
2084
|
throw new Error(`B\u7AD9\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
2048
2085
|
}
|
|
2049
2086
|
}
|
|
2050
|
-
async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2087
|
+
async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2051
2088
|
try {
|
|
2052
2089
|
let options;
|
|
2053
2090
|
let cookie;
|
|
@@ -2213,7 +2250,7 @@ var bilibili = {
|
|
|
2213
2250
|
*/
|
|
2214
2251
|
convertBvToAv: createBilibiliApiMethod("BV\u8F6CAV")
|
|
2215
2252
|
};
|
|
2216
|
-
var createBoundBilibiliApi = (cookie) => {
|
|
2253
|
+
var createBoundBilibiliApi = (cookie, requestConfig) => {
|
|
2217
2254
|
return {
|
|
2218
2255
|
/**
|
|
2219
2256
|
* 获取单个视频作品数据
|
|
@@ -2419,10 +2456,10 @@ var createValidationMiddleware = (validateFn, methodType) => {
|
|
|
2419
2456
|
var createDouyinValidationMiddleware = (methodType) => createValidationMiddleware(validateDouyinParams, methodType);
|
|
2420
2457
|
var createBilibiliValidationMiddleware = (methodType) => createValidationMiddleware(validateBilibiliParams, methodType);
|
|
2421
2458
|
var createKuaishouValidationMiddleware = (methodType) => createValidationMiddleware(validateKuaishouParams, methodType);
|
|
2422
|
-
var createBilibiliRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
2459
|
+
var createBilibiliRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
|
|
2423
2460
|
return async (req, res) => {
|
|
2424
2461
|
try {
|
|
2425
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
2462
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2426
2463
|
res.json({
|
|
2427
2464
|
...result,
|
|
2428
2465
|
requestPath: req.originalUrl
|
|
@@ -2436,97 +2473,97 @@ var createBilibiliRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2436
2473
|
}
|
|
2437
2474
|
};
|
|
2438
2475
|
};
|
|
2439
|
-
var createBilibiliRoutes = (cookie) => {
|
|
2476
|
+
var createBilibiliRoutes = (cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
|
|
2440
2477
|
const router = express.Router();
|
|
2441
2478
|
router.get(
|
|
2442
2479
|
"/fetch_one_video",
|
|
2443
2480
|
createBilibiliValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2444
|
-
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2481
|
+
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2445
2482
|
);
|
|
2446
2483
|
router.get(
|
|
2447
2484
|
"/fetch_video_playurl",
|
|
2448
2485
|
createBilibiliValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"),
|
|
2449
|
-
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie)
|
|
2486
|
+
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2450
2487
|
);
|
|
2451
2488
|
router.get(
|
|
2452
2489
|
"/fetch_work_comments",
|
|
2453
2490
|
createBilibiliValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2454
|
-
createBilibiliRouteHandler(getBilibiliData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
2491
|
+
createBilibiliRouteHandler(getBilibiliData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2455
2492
|
);
|
|
2456
2493
|
router.get(
|
|
2457
2494
|
"/fetch_user_profile",
|
|
2458
2495
|
createBilibiliValidationMiddleware("\u7528\u6237\u4E3B\u9875\u6570\u636E"),
|
|
2459
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie)
|
|
2496
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig)
|
|
2460
2497
|
);
|
|
2461
2498
|
router.get(
|
|
2462
2499
|
"/fetch_user_dynamic",
|
|
2463
2500
|
createBilibiliValidationMiddleware("\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E"),
|
|
2464
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E", cookie)
|
|
2501
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E", cookie, requestConfig)
|
|
2465
2502
|
);
|
|
2466
2503
|
router.get(
|
|
2467
2504
|
"/fetch_emoji_list",
|
|
2468
2505
|
createBilibiliValidationMiddleware("Emoji\u6570\u636E"),
|
|
2469
|
-
createBilibiliRouteHandler(getBilibiliData, "Emoji\u6570\u636E", cookie)
|
|
2506
|
+
createBilibiliRouteHandler(getBilibiliData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2470
2507
|
);
|
|
2471
2508
|
router.get(
|
|
2472
2509
|
"/fetch_bangumi_video_info",
|
|
2473
2510
|
createBilibiliValidationMiddleware("\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E"),
|
|
2474
|
-
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", cookie)
|
|
2511
|
+
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2475
2512
|
);
|
|
2476
2513
|
router.get(
|
|
2477
2514
|
"/fetch_bangumi_video_playurl",
|
|
2478
2515
|
createBilibiliValidationMiddleware("\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"),
|
|
2479
|
-
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie)
|
|
2516
|
+
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2480
2517
|
);
|
|
2481
2518
|
router.get(
|
|
2482
2519
|
"/fetch_dynamic_info",
|
|
2483
2520
|
createBilibiliValidationMiddleware("\u52A8\u6001\u8BE6\u60C5\u6570\u636E"),
|
|
2484
|
-
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u8BE6\u60C5\u6570\u636E", cookie)
|
|
2521
|
+
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u8BE6\u60C5\u6570\u636E", cookie, requestConfig)
|
|
2485
2522
|
);
|
|
2486
2523
|
router.get(
|
|
2487
2524
|
"/fetch_dynamic_card",
|
|
2488
2525
|
createBilibiliValidationMiddleware("\u52A8\u6001\u5361\u7247\u6570\u636E"),
|
|
2489
|
-
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u5361\u7247\u6570\u636E", cookie)
|
|
2526
|
+
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u5361\u7247\u6570\u636E", cookie, requestConfig)
|
|
2490
2527
|
);
|
|
2491
2528
|
router.get(
|
|
2492
2529
|
"/fetch_live_room_detail",
|
|
2493
2530
|
createBilibiliValidationMiddleware("\u76F4\u64AD\u95F4\u4FE1\u606F"),
|
|
2494
|
-
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u4FE1\u606F", cookie)
|
|
2531
|
+
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u4FE1\u606F", cookie, requestConfig)
|
|
2495
2532
|
);
|
|
2496
2533
|
router.get(
|
|
2497
2534
|
"/fetch_liveroom_def",
|
|
2498
2535
|
createBilibiliValidationMiddleware("\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"),
|
|
2499
|
-
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F", cookie)
|
|
2536
|
+
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F", cookie, requestConfig)
|
|
2500
2537
|
);
|
|
2501
2538
|
router.get(
|
|
2502
2539
|
"/login_basic_info",
|
|
2503
2540
|
createBilibiliValidationMiddleware("\u767B\u5F55\u57FA\u672C\u4FE1\u606F"),
|
|
2504
|
-
createBilibiliRouteHandler(getBilibiliData, "\u767B\u5F55\u57FA\u672C\u4FE1\u606F", cookie)
|
|
2541
|
+
createBilibiliRouteHandler(getBilibiliData, "\u767B\u5F55\u57FA\u672C\u4FE1\u606F", cookie, requestConfig)
|
|
2505
2542
|
);
|
|
2506
2543
|
router.get(
|
|
2507
2544
|
"/new_login_qrcode",
|
|
2508
2545
|
createBilibiliValidationMiddleware("\u7533\u8BF7\u4E8C\u7EF4\u7801"),
|
|
2509
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7533\u8BF7\u4E8C\u7EF4\u7801", cookie)
|
|
2546
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7533\u8BF7\u4E8C\u7EF4\u7801", cookie, requestConfig)
|
|
2510
2547
|
);
|
|
2511
2548
|
router.get(
|
|
2512
2549
|
"/check_qrcode",
|
|
2513
2550
|
createBilibiliValidationMiddleware("\u4E8C\u7EF4\u7801\u72B6\u6001"),
|
|
2514
|
-
createBilibiliRouteHandler(getBilibiliData, "\u4E8C\u7EF4\u7801\u72B6\u6001", cookie)
|
|
2551
|
+
createBilibiliRouteHandler(getBilibiliData, "\u4E8C\u7EF4\u7801\u72B6\u6001", cookie, requestConfig)
|
|
2515
2552
|
);
|
|
2516
2553
|
router.get(
|
|
2517
2554
|
"/fetch_user_full_view",
|
|
2518
2555
|
createBilibiliValidationMiddleware("\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF"),
|
|
2519
|
-
createBilibiliRouteHandler(getBilibiliData, "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF", cookie)
|
|
2556
|
+
createBilibiliRouteHandler(getBilibiliData, "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF", cookie, requestConfig)
|
|
2520
2557
|
);
|
|
2521
2558
|
router.get(
|
|
2522
2559
|
"/av_to_bv",
|
|
2523
2560
|
createBilibiliValidationMiddleware("AV\u8F6CBV"),
|
|
2524
|
-
createBilibiliRouteHandler(getBilibiliData, "AV\u8F6CBV", cookie)
|
|
2561
|
+
createBilibiliRouteHandler(getBilibiliData, "AV\u8F6CBV", cookie, requestConfig)
|
|
2525
2562
|
);
|
|
2526
2563
|
router.get(
|
|
2527
2564
|
"/bv_to_av",
|
|
2528
2565
|
createBilibiliValidationMiddleware("BV\u8F6CAV"),
|
|
2529
|
-
createBilibiliRouteHandler(getBilibiliData, "BV\u8F6CAV", cookie)
|
|
2566
|
+
createBilibiliRouteHandler(getBilibiliData, "BV\u8F6CAV", cookie, requestConfig)
|
|
2530
2567
|
);
|
|
2531
2568
|
return router;
|
|
2532
2569
|
};
|
|
@@ -2544,13 +2581,13 @@ var bilibiliUtils = {
|
|
|
2544
2581
|
|
|
2545
2582
|
// src/platform/douyin/DouyinApi.ts
|
|
2546
2583
|
var createDouyinApiMethod = (methodType) => {
|
|
2547
|
-
return async (options, cookie) => {
|
|
2548
|
-
return await getDouyinData(methodType, options, cookie);
|
|
2584
|
+
return async (options, cookie, requestConfig) => {
|
|
2585
|
+
return await getDouyinData(methodType, options, cookie, requestConfig);
|
|
2549
2586
|
};
|
|
2550
2587
|
};
|
|
2551
|
-
var createBoundDouyinApiMethod = (methodType, cookie) => {
|
|
2588
|
+
var createBoundDouyinApiMethod = (methodType, cookie, requestConfig) => {
|
|
2552
2589
|
return async (options) => {
|
|
2553
|
-
return await getDouyinData(methodType, options, cookie);
|
|
2590
|
+
return await getDouyinData(methodType, options, cookie, requestConfig);
|
|
2554
2591
|
};
|
|
2555
2592
|
};
|
|
2556
2593
|
var douyin = {
|
|
@@ -2653,98 +2690,98 @@ var douyin = {
|
|
|
2653
2690
|
*/
|
|
2654
2691
|
getLiveRoomInfo: createDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E")
|
|
2655
2692
|
};
|
|
2656
|
-
var createBoundDouyinApi = (cookie) => {
|
|
2693
|
+
var createBoundDouyinApi = (cookie, requestConfig) => {
|
|
2657
2694
|
return {
|
|
2658
2695
|
/**
|
|
2659
2696
|
* 聚合解析 (视频/图集/合辑)
|
|
2660
2697
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2661
2698
|
* @returns 统一格式的API响应,包含视频、图集或合辑数据
|
|
2662
2699
|
*/
|
|
2663
|
-
getWorkInfo: createBoundDouyinApiMethod("\u805A\u5408\u89E3\u6790", cookie),
|
|
2700
|
+
getWorkInfo: createBoundDouyinApiMethod("\u805A\u5408\u89E3\u6790", cookie, requestConfig),
|
|
2664
2701
|
/**
|
|
2665
2702
|
* 获取视频作品数据
|
|
2666
2703
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2667
2704
|
* @returns 统一格式的API响应,包含视频作品详细信息
|
|
2668
2705
|
*/
|
|
2669
|
-
getVideoWorkInfo: createBoundDouyinApiMethod("\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie),
|
|
2706
|
+
getVideoWorkInfo: createBoundDouyinApiMethod("\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2670
2707
|
/**
|
|
2671
2708
|
* 获取图集作品数据
|
|
2672
2709
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2673
2710
|
* @returns 统一格式的API响应,包含图集作品详细信息
|
|
2674
2711
|
*/
|
|
2675
|
-
getImageAlbumWorkInfo: createBoundDouyinApiMethod("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie),
|
|
2712
|
+
getImageAlbumWorkInfo: createBoundDouyinApiMethod("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2676
2713
|
/**
|
|
2677
2714
|
* 获取合辑作品数据
|
|
2678
2715
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2679
2716
|
* @returns 统一格式的API响应,包含合辑作品详细信息
|
|
2680
2717
|
*/
|
|
2681
|
-
getSlidesWorkInfo: createBoundDouyinApiMethod("\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie),
|
|
2718
|
+
getSlidesWorkInfo: createBoundDouyinApiMethod("\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2682
2719
|
/**
|
|
2683
2720
|
* 获取评论数据
|
|
2684
2721
|
* @param options 请求参数,包含 aweme_id, 可选的 number, cursor 和 typeMode
|
|
2685
2722
|
* @returns 统一格式的API响应,包含评论列表数据
|
|
2686
2723
|
*/
|
|
2687
|
-
getComments: createBoundDouyinApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie),
|
|
2724
|
+
getComments: createBoundDouyinApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig),
|
|
2688
2725
|
/**
|
|
2689
2726
|
* 获取指定评论回复数据
|
|
2690
2727
|
* @param options 请求参数,包含 aweme_id, comment_id, 可选的 number, cursor 和 typeMode
|
|
2691
2728
|
* @returns 统一格式的API响应,包含评论回复数据
|
|
2692
2729
|
*/
|
|
2693
|
-
getCommentReplies: createBoundDouyinApiMethod("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie),
|
|
2730
|
+
getCommentReplies: createBoundDouyinApiMethod("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie, requestConfig),
|
|
2694
2731
|
/**
|
|
2695
2732
|
* 获取用户主页数据
|
|
2696
2733
|
* @param options 请求参数,包含 sec_uid 和可选的 typeMode
|
|
2697
2734
|
* @returns 统一格式的API响应,包含用户详细信息
|
|
2698
2735
|
*/
|
|
2699
|
-
getUserProfile: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie),
|
|
2736
|
+
getUserProfile: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig),
|
|
2700
2737
|
/**
|
|
2701
2738
|
* 获取 Emoji 数据
|
|
2702
2739
|
* @param options 可选的请求参数 (主要用于 typeMode)
|
|
2703
2740
|
* @returns 统一格式的API响应,包含Emoji列表数据
|
|
2704
2741
|
*/
|
|
2705
|
-
getEmojiList: createBoundDouyinApiMethod("Emoji\u6570\u636E", cookie),
|
|
2742
|
+
getEmojiList: createBoundDouyinApiMethod("Emoji\u6570\u636E", cookie, requestConfig),
|
|
2706
2743
|
/**
|
|
2707
2744
|
* 获取动态表情数据
|
|
2708
2745
|
* @param options 可选的请求参数 (主要用于 typeMode)
|
|
2709
2746
|
* @returns 统一格式的API响应,包含动态表情数据
|
|
2710
2747
|
*/
|
|
2711
|
-
getEmojiProList: createBoundDouyinApiMethod("\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie),
|
|
2748
|
+
getEmojiProList: createBoundDouyinApiMethod("\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie, requestConfig),
|
|
2712
2749
|
/**
|
|
2713
2750
|
* 获取用户主页视频列表数据
|
|
2714
2751
|
* @param options 请求参数,包含 sec_uid, 可选的 number, max_cursor 和 typeMode
|
|
2715
2752
|
* @returns 统一格式的API响应,包含用户发布的视频列表
|
|
2716
2753
|
*/
|
|
2717
|
-
getUserVideos: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie),
|
|
2754
|
+
getUserVideos: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie, requestConfig),
|
|
2718
2755
|
/**
|
|
2719
2756
|
* 获取音乐数据
|
|
2720
2757
|
* @param options 请求参数,包含 music_id 和可选的 typeMode
|
|
2721
2758
|
* @returns 统一格式的API响应,包含音乐详细信息
|
|
2722
2759
|
*/
|
|
2723
|
-
getMusicInfo: createBoundDouyinApiMethod("\u97F3\u4E50\u6570\u636E", cookie),
|
|
2760
|
+
getMusicInfo: createBoundDouyinApiMethod("\u97F3\u4E50\u6570\u636E", cookie, requestConfig),
|
|
2724
2761
|
/**
|
|
2725
2762
|
* 获取热点词数据
|
|
2726
2763
|
* @param options 请求参数,包含 query, 可选的 number 和 typeMode
|
|
2727
2764
|
* @returns 统一格式的API响应,包含热点搜索词列表
|
|
2728
2765
|
*/
|
|
2729
|
-
getSuggestWords: createBoundDouyinApiMethod("\u70ED\u70B9\u8BCD\u6570\u636E", cookie),
|
|
2766
|
+
getSuggestWords: createBoundDouyinApiMethod("\u70ED\u70B9\u8BCD\u6570\u636E", cookie, requestConfig),
|
|
2730
2767
|
/**
|
|
2731
2768
|
* 获取搜索数据
|
|
2732
2769
|
* @param options 请求参数,包含 query, 可选的 number, search_id, cursor 和 typeMode
|
|
2733
2770
|
* @returns 统一格式的API响应,包含搜索结果数据
|
|
2734
2771
|
*/
|
|
2735
|
-
search: createBoundDouyinApiMethod("\u641C\u7D22\u6570\u636E", cookie),
|
|
2772
|
+
search: createBoundDouyinApiMethod("\u641C\u7D22\u6570\u636E", cookie, requestConfig),
|
|
2736
2773
|
/**
|
|
2737
2774
|
* 获取直播间信息
|
|
2738
2775
|
* @param options 请求参数,包含 sec_uid 和可选的 typeMode
|
|
2739
2776
|
* @returns 统一格式的API响应,包含直播间详细信息
|
|
2740
2777
|
*/
|
|
2741
|
-
getLiveRoomInfo: createBoundDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie)
|
|
2778
|
+
getLiveRoomInfo: createBoundDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2742
2779
|
};
|
|
2743
2780
|
};
|
|
2744
|
-
var createDouyinRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
2781
|
+
var createDouyinRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getDouyinDefaultConfig(cookie)) => {
|
|
2745
2782
|
return async (req, res) => {
|
|
2746
2783
|
try {
|
|
2747
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
2784
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2748
2785
|
res.json({
|
|
2749
2786
|
...result,
|
|
2750
2787
|
requestPath: req.originalUrl
|
|
@@ -2758,77 +2795,77 @@ var createDouyinRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2758
2795
|
}
|
|
2759
2796
|
};
|
|
2760
2797
|
};
|
|
2761
|
-
var createDouyinRoutes = (cookie) => {
|
|
2798
|
+
var createDouyinRoutes = (cookie, requestConfig = getDouyinDefaultConfig(cookie)) => {
|
|
2762
2799
|
const router = express.Router();
|
|
2763
2800
|
router.get(
|
|
2764
2801
|
"/fetch_one_work",
|
|
2765
2802
|
createDouyinValidationMiddleware("\u805A\u5408\u89E3\u6790"),
|
|
2766
|
-
createDouyinRouteHandler(getDouyinData, "\u805A\u5408\u89E3\u6790", cookie)
|
|
2803
|
+
createDouyinRouteHandler(getDouyinData, "\u805A\u5408\u89E3\u6790", cookie, requestConfig)
|
|
2767
2804
|
);
|
|
2768
2805
|
router.get(
|
|
2769
2806
|
"/fetch_one_work",
|
|
2770
2807
|
createDouyinValidationMiddleware("\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2771
|
-
createDouyinRouteHandler(getDouyinData, "\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2808
|
+
createDouyinRouteHandler(getDouyinData, "\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2772
2809
|
);
|
|
2773
2810
|
router.get(
|
|
2774
2811
|
"/fetch_one_work",
|
|
2775
2812
|
createDouyinValidationMiddleware("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E"),
|
|
2776
|
-
createDouyinRouteHandler(getDouyinData, "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2813
|
+
createDouyinRouteHandler(getDouyinData, "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2777
2814
|
);
|
|
2778
2815
|
router.get(
|
|
2779
2816
|
"/fetch_one_work",
|
|
2780
2817
|
createDouyinValidationMiddleware("\u5408\u8F91\u4F5C\u54C1\u6570\u636E"),
|
|
2781
|
-
createDouyinRouteHandler(getDouyinData, "\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2818
|
+
createDouyinRouteHandler(getDouyinData, "\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2782
2819
|
);
|
|
2783
2820
|
router.get(
|
|
2784
2821
|
"/fetch_work_comments",
|
|
2785
2822
|
createDouyinValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2786
|
-
createDouyinRouteHandler(getDouyinData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
2823
|
+
createDouyinRouteHandler(getDouyinData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2787
2824
|
);
|
|
2788
2825
|
router.get(
|
|
2789
2826
|
"/fetch_user_info",
|
|
2790
2827
|
createDouyinValidationMiddleware("\u7528\u6237\u4E3B\u9875\u6570\u636E"),
|
|
2791
|
-
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie)
|
|
2828
|
+
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig)
|
|
2792
2829
|
);
|
|
2793
2830
|
router.get(
|
|
2794
2831
|
"/fetch_user_post_videos",
|
|
2795
2832
|
createDouyinValidationMiddleware("\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E"),
|
|
2796
|
-
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie)
|
|
2833
|
+
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie, requestConfig)
|
|
2797
2834
|
);
|
|
2798
2835
|
router.get(
|
|
2799
2836
|
"/fetch_search_info",
|
|
2800
2837
|
createDouyinValidationMiddleware("\u641C\u7D22\u6570\u636E"),
|
|
2801
|
-
createDouyinRouteHandler(getDouyinData, "\u641C\u7D22\u6570\u636E", cookie)
|
|
2838
|
+
createDouyinRouteHandler(getDouyinData, "\u641C\u7D22\u6570\u636E", cookie, requestConfig)
|
|
2802
2839
|
);
|
|
2803
2840
|
router.get(
|
|
2804
2841
|
"/fetch_suggest_words",
|
|
2805
2842
|
createDouyinValidationMiddleware("\u70ED\u70B9\u8BCD\u6570\u636E"),
|
|
2806
|
-
createDouyinRouteHandler(getDouyinData, "\u70ED\u70B9\u8BCD\u6570\u636E", cookie)
|
|
2843
|
+
createDouyinRouteHandler(getDouyinData, "\u70ED\u70B9\u8BCD\u6570\u636E", cookie, requestConfig)
|
|
2807
2844
|
);
|
|
2808
2845
|
router.get(
|
|
2809
2846
|
"/fetch_music_work",
|
|
2810
2847
|
createDouyinValidationMiddleware("\u97F3\u4E50\u6570\u636E"),
|
|
2811
|
-
createDouyinRouteHandler(getDouyinData, "\u97F3\u4E50\u6570\u636E", cookie)
|
|
2848
|
+
createDouyinRouteHandler(getDouyinData, "\u97F3\u4E50\u6570\u636E", cookie, requestConfig)
|
|
2812
2849
|
);
|
|
2813
2850
|
router.get(
|
|
2814
2851
|
"/fetch_emoji_list",
|
|
2815
2852
|
createDouyinValidationMiddleware("Emoji\u6570\u636E"),
|
|
2816
|
-
createDouyinRouteHandler(getDouyinData, "Emoji\u6570\u636E", cookie)
|
|
2853
|
+
createDouyinRouteHandler(getDouyinData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2817
2854
|
);
|
|
2818
2855
|
router.get(
|
|
2819
2856
|
"/fetch_emoji_pro_list",
|
|
2820
2857
|
createDouyinValidationMiddleware("\u52A8\u6001\u8868\u60C5\u6570\u636E"),
|
|
2821
|
-
createDouyinRouteHandler(getDouyinData, "\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie)
|
|
2858
|
+
createDouyinRouteHandler(getDouyinData, "\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie, requestConfig)
|
|
2822
2859
|
);
|
|
2823
2860
|
router.get(
|
|
2824
2861
|
"/fetch_user_live_videos",
|
|
2825
2862
|
createDouyinValidationMiddleware("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E"),
|
|
2826
|
-
createDouyinRouteHandler(getDouyinData, "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie)
|
|
2863
|
+
createDouyinRouteHandler(getDouyinData, "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2827
2864
|
);
|
|
2828
2865
|
router.get(
|
|
2829
2866
|
"/fetch_video_comment_replies",
|
|
2830
2867
|
createDouyinValidationMiddleware("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E"),
|
|
2831
|
-
createDouyinRouteHandler(getDouyinData, "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie)
|
|
2868
|
+
createDouyinRouteHandler(getDouyinData, "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie, requestConfig)
|
|
2832
2869
|
);
|
|
2833
2870
|
return router;
|
|
2834
2871
|
};
|
|
@@ -2839,10 +2876,10 @@ var douyinUtils = {
|
|
|
2839
2876
|
douyinApiUrls,
|
|
2840
2877
|
api: douyin
|
|
2841
2878
|
};
|
|
2842
|
-
var createKuaishouRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
2879
|
+
var createKuaishouRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getKuaishouDefaultConfig(cookie)) => {
|
|
2843
2880
|
return async (req, res) => {
|
|
2844
2881
|
try {
|
|
2845
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
2882
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2846
2883
|
res.json({
|
|
2847
2884
|
...result,
|
|
2848
2885
|
requestPath: req.originalUrl
|
|
@@ -2856,22 +2893,22 @@ var createKuaishouRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2856
2893
|
}
|
|
2857
2894
|
};
|
|
2858
2895
|
};
|
|
2859
|
-
var createKuaishouRoutes = (cookie) => {
|
|
2896
|
+
var createKuaishouRoutes = (cookie, requestConfig = getKuaishouDefaultConfig(cookie)) => {
|
|
2860
2897
|
const router = express.Router();
|
|
2861
2898
|
router.get(
|
|
2862
2899
|
"/fetch_one_work",
|
|
2863
2900
|
createKuaishouValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2864
|
-
createKuaishouRouteHandler(getKuaishouData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2901
|
+
createKuaishouRouteHandler(getKuaishouData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2865
2902
|
);
|
|
2866
2903
|
router.get(
|
|
2867
2904
|
"/fetch_work_comments",
|
|
2868
2905
|
createKuaishouValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2869
|
-
createKuaishouRouteHandler(getKuaishouData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
2906
|
+
createKuaishouRouteHandler(getKuaishouData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2870
2907
|
);
|
|
2871
2908
|
router.get(
|
|
2872
2909
|
"/fetch_emoji_list",
|
|
2873
2910
|
createKuaishouValidationMiddleware("Emoji\u6570\u636E"),
|
|
2874
|
-
createKuaishouRouteHandler(getKuaishouData, "Emoji\u6570\u636E", cookie)
|
|
2911
|
+
createKuaishouRouteHandler(getKuaishouData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2875
2912
|
);
|
|
2876
2913
|
return router;
|
|
2877
2914
|
};
|
|
@@ -2910,7 +2947,7 @@ var kuaishou = {
|
|
|
2910
2947
|
*/
|
|
2911
2948
|
getEmojiList: createKuaishouApiMethod("Emoji\u6570\u636E")
|
|
2912
2949
|
};
|
|
2913
|
-
var createBoundKuaishouApi = (cookie) => {
|
|
2950
|
+
var createBoundKuaishouApi = (cookie, requestConfig) => {
|
|
2914
2951
|
return {
|
|
2915
2952
|
/**
|
|
2916
2953
|
* 获取单个视频作品数据
|
|
@@ -2938,161 +2975,83 @@ var kuaishouUtils = {
|
|
|
2938
2975
|
kuaishouApiUrls,
|
|
2939
2976
|
api: kuaishou
|
|
2940
2977
|
};
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
options = arg3;
|
|
2949
|
-
} else {
|
|
2950
|
-
options = arg2;
|
|
2951
|
-
cookie = arg3;
|
|
2952
|
-
}
|
|
2953
|
-
const data2 = await DouyinData({ ...options, methodType: type }, cookie);
|
|
2954
|
-
return data2;
|
|
2955
|
-
}
|
|
2956
|
-
async function getBilibiliData2(methodType, arg2, arg3) {
|
|
2957
|
-
let cookie;
|
|
2958
|
-
let options;
|
|
2959
|
-
if (typeof arg2 === "string") {
|
|
2960
|
-
cookie = arg2;
|
|
2961
|
-
options = arg3;
|
|
2962
|
-
} else {
|
|
2963
|
-
options = arg2;
|
|
2964
|
-
cookie = arg3;
|
|
2965
|
-
}
|
|
2966
|
-
const data2 = await fetchBilibili({ ...options, methodType }, cookie);
|
|
2967
|
-
return data2;
|
|
2968
|
-
}
|
|
2969
|
-
async function getKuaishouData2(methodType, arg2, arg3) {
|
|
2970
|
-
let cookie;
|
|
2971
|
-
let options;
|
|
2972
|
-
if (typeof arg2 === "string") {
|
|
2973
|
-
cookie = arg2;
|
|
2974
|
-
options = arg3;
|
|
2975
|
-
} else {
|
|
2976
|
-
options = arg2;
|
|
2977
|
-
cookie = arg3;
|
|
2978
|
-
}
|
|
2979
|
-
const data2 = await KuaishouData({ ...options, methodType }, cookie);
|
|
2980
|
-
return data2;
|
|
2981
|
-
}
|
|
2982
|
-
var fetchDouyinData = getDouyinData2;
|
|
2983
|
-
var fetchBilibiliData = getBilibiliData2;
|
|
2984
|
-
var fetchKuaishouData = getKuaishouData2;
|
|
2985
|
-
var v4CompatibilityMiddleware = (req, res, next) => {
|
|
2986
|
-
const originalJson = res.json;
|
|
2987
|
-
res.json = (data2) => {
|
|
2988
|
-
if (data2 && typeof data2 === "object" && "data" in data2 && "message" in data2 && "code" in data2) {
|
|
2989
|
-
const v4Response = {
|
|
2990
|
-
...data2.data,
|
|
2991
|
-
...data2.requestPath && { requestPath: data2.requestPath }
|
|
2992
|
-
};
|
|
2993
|
-
return originalJson.call(void 0, v4Response);
|
|
2994
|
-
}
|
|
2995
|
-
return originalJson.call(void 0, data2);
|
|
2996
|
-
};
|
|
2997
|
-
next();
|
|
2998
|
-
};
|
|
2999
|
-
var amagiClient = class {
|
|
3000
|
-
#douyin;
|
|
3001
|
-
#bilibili;
|
|
3002
|
-
#kuaishou;
|
|
3003
|
-
/**
|
|
3004
|
-
*
|
|
3005
|
-
* @param cookie - 包含抖音ck、B站ck、快手ck的对象
|
|
3006
|
-
*/
|
|
3007
|
-
constructor(options) {
|
|
3008
|
-
this.#douyin = (options == null ? void 0 : options.douyin) ?? "";
|
|
3009
|
-
this.#bilibili = (options == null ? void 0 : options.bilibili) ?? "";
|
|
3010
|
-
this.#kuaishou = (options == null ? void 0 : options.kuaishou) ?? "";
|
|
3011
|
-
}
|
|
3012
|
-
/**
|
|
3013
|
-
* 启动本地 HTTP 服务
|
|
3014
|
-
* @param port - 监听端口
|
|
3015
|
-
* @defaultValue `port` 4567
|
|
3016
|
-
* @returns Express 应用实例
|
|
3017
|
-
*/
|
|
3018
|
-
startClient = (port = 4567) => {
|
|
2978
|
+
var createAmagiClient = (options) => {
|
|
2979
|
+
var _a, _b, _c;
|
|
2980
|
+
const douyinCookie = ((_a = options == null ? void 0 : options.cookies) == null ? void 0 : _a.douyin) ?? "";
|
|
2981
|
+
const bilibiliCookie = ((_b = options == null ? void 0 : options.cookies) == null ? void 0 : _b.bilibili) ?? "";
|
|
2982
|
+
const kuaishouCookie = ((_c = options == null ? void 0 : options.cookies) == null ? void 0 : _c.kuaishou) ?? "";
|
|
2983
|
+
const requestConfig = (options == null ? void 0 : options.request) ?? {};
|
|
2984
|
+
const startServer = (port = 4567) => {
|
|
3019
2985
|
const app = express__default.default();
|
|
2986
|
+
app.use(express__default.default.json());
|
|
2987
|
+
app.use(express__default.default.urlencoded({ extended: true }));
|
|
3020
2988
|
app.get("/", (_req, res) => {
|
|
3021
2989
|
res.redirect(301, "https://amagi.apifox.cn");
|
|
3022
2990
|
});
|
|
3023
2991
|
app.get("/docs", (_req, res) => {
|
|
3024
2992
|
res.redirect(301, "https://amagi.apifox.cn");
|
|
3025
2993
|
});
|
|
3026
|
-
app.use(
|
|
3027
|
-
app.use("/api/
|
|
3028
|
-
app.use("/api/
|
|
3029
|
-
app.use("/api/kuaishou", v4CompatibilityMiddleware);
|
|
3030
|
-
app.use("/api/douyin", createDouyinRoutes(this.#douyin));
|
|
3031
|
-
app.use("/api/bilibili", createBilibiliRoutes(this.#bilibili));
|
|
3032
|
-
app.use("/api/kuaishou", createKuaishouRoutes(this.#kuaishou));
|
|
2994
|
+
app.use("/api/douyin", createDouyinRoutes(douyinCookie, requestConfig));
|
|
2995
|
+
app.use("/api/bilibili", createBilibiliRoutes(bilibiliCookie, requestConfig));
|
|
2996
|
+
app.use("/api/kuaishou", createKuaishouRoutes(kuaishouCookie, requestConfig));
|
|
3033
2997
|
app.listen(port, "::", () => {
|
|
3034
2998
|
logger.mark(`Amagi server listening on ${logger.green(`http://localhost:${port}`)} ${logger.yellow("API docs: https://amagi.apifox.cn ")}`);
|
|
3035
2999
|
});
|
|
3036
3000
|
return app;
|
|
3037
3001
|
};
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
* @param type - 请求数据类型
|
|
3041
|
-
* @param options - 请求参数,是一个对象
|
|
3042
|
-
* @returns 返回接口的原始数据
|
|
3043
|
-
*/
|
|
3044
|
-
getDouyinData = async (methodType, options) => {
|
|
3045
|
-
const fullOptions = {
|
|
3046
|
-
methodType,
|
|
3047
|
-
...options
|
|
3048
|
-
};
|
|
3049
|
-
const result = await getDouyinData2(methodType, this.#douyin, fullOptions);
|
|
3050
|
-
return result && typeof result === "object" && "data" in result ? result.data : result;
|
|
3002
|
+
const startClient = (port = 4567) => {
|
|
3003
|
+
return startServer(port);
|
|
3051
3004
|
};
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
* @param type - 请求数据类型
|
|
3055
|
-
* @param options - 请求参数,是一个对象
|
|
3056
|
-
* @returns 返回接口的原始数据
|
|
3057
|
-
*/
|
|
3058
|
-
getBilibiliData = async (methodType, options) => {
|
|
3059
|
-
const fullOptions = {
|
|
3060
|
-
methodType,
|
|
3061
|
-
...options
|
|
3062
|
-
};
|
|
3063
|
-
const result = await getBilibiliData2(methodType, this.#bilibili, fullOptions);
|
|
3064
|
-
return result && typeof result === "object" && "data" in result ? result.data : result;
|
|
3005
|
+
const getDouyinDataWithCookie = async (methodType, options2) => {
|
|
3006
|
+
return await getDouyinData(methodType, options2, douyinCookie, requestConfig);
|
|
3065
3007
|
};
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3008
|
+
const getBilibiliDataWithCookie = async (methodType, options2) => {
|
|
3009
|
+
return await getBilibiliData(methodType, options2, bilibiliCookie);
|
|
3010
|
+
};
|
|
3011
|
+
const getKuaishouDataWithCookie = async (methodType, options2) => {
|
|
3012
|
+
return await getKuaishouData(methodType, options2, kuaishouCookie);
|
|
3013
|
+
};
|
|
3014
|
+
return {
|
|
3015
|
+
/** 启动本地HTTP服务 */
|
|
3016
|
+
startServer,
|
|
3017
|
+
/** @deprecated 此方法已废弃,请使用 startServer 方法代替 */
|
|
3018
|
+
startClient,
|
|
3019
|
+
getDouyinData: getDouyinDataWithCookie,
|
|
3020
|
+
getBilibiliData: getBilibiliDataWithCookie,
|
|
3021
|
+
getKuaishouData: getKuaishouDataWithCookie,
|
|
3022
|
+
douyin: {
|
|
3023
|
+
...douyinUtils,
|
|
3024
|
+
/** 绑定了cookie和请求配置的抖音API对象,调用时不需要传递cookie */
|
|
3025
|
+
api: createBoundDouyinApi(douyinCookie, requestConfig)
|
|
3026
|
+
},
|
|
3027
|
+
bilibili: {
|
|
3028
|
+
...bilibiliUtils,
|
|
3029
|
+
/** 绑定了cookie和请求配置的B站API对象,调用时不需要传递cookie */
|
|
3030
|
+
api: createBoundBilibiliApi(bilibiliCookie)
|
|
3031
|
+
},
|
|
3032
|
+
kuaishou: {
|
|
3033
|
+
...kuaishouUtils,
|
|
3034
|
+
/** 绑定了cookie和请求配置的快手API对象,调用时不需要传递cookie */
|
|
3035
|
+
api: createBoundKuaishouApi(kuaishouCookie)
|
|
3036
|
+
}
|
|
3079
3037
|
};
|
|
3080
3038
|
};
|
|
3081
3039
|
|
|
3082
3040
|
// src/index.ts
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3041
|
+
var amagiClient = createAmagiClient;
|
|
3042
|
+
function CreateAmagiApp(options = {}) {
|
|
3043
|
+
if (!(this instanceof CreateAmagiApp)) {
|
|
3044
|
+
return createAmagiClient(options);
|
|
3086
3045
|
}
|
|
3087
|
-
return
|
|
3046
|
+
return createAmagiClient(options);
|
|
3088
3047
|
}
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
var CreateApp =
|
|
3048
|
+
CreateAmagiApp.douyin = douyinUtils;
|
|
3049
|
+
CreateAmagiApp.bilibili = bilibiliUtils;
|
|
3050
|
+
CreateAmagiApp.kuaishou = kuaishouUtils;
|
|
3051
|
+
CreateAmagiApp.getDouyinData = getDouyinData;
|
|
3052
|
+
CreateAmagiApp.getBilibiliData = getBilibiliData;
|
|
3053
|
+
CreateAmagiApp.getKuaishouData = getKuaishouData;
|
|
3054
|
+
var CreateApp = CreateAmagiApp;
|
|
3096
3055
|
var Client = CreateApp;
|
|
3097
3056
|
var amagi = Client;
|
|
3098
3057
|
/*!
|
|
@@ -3101,8 +3060,38 @@ var amagi = Client;
|
|
|
3101
3060
|
* GPL-3.0 Licensed
|
|
3102
3061
|
*/
|
|
3103
3062
|
|
|
3063
|
+
exports.ApiError = ApiError;
|
|
3064
|
+
exports.BilibiliAv2BvParamsSchema = BilibiliAv2BvParamsSchema;
|
|
3065
|
+
exports.BilibiliBangumiInfoParamsSchema = BilibiliBangumiInfoParamsSchema;
|
|
3066
|
+
exports.BilibiliBangumiStreamParamsSchema = BilibiliBangumiStreamParamsSchema;
|
|
3067
|
+
exports.BilibiliBv2AvParamsSchema = BilibiliBv2AvParamsSchema;
|
|
3068
|
+
exports.BilibiliCommentParamsSchema = BilibiliCommentParamsSchema;
|
|
3069
|
+
exports.BilibiliDynamicParamsSchema = BilibiliDynamicParamsSchema;
|
|
3070
|
+
exports.BilibiliEmojiParamsSchema = BilibiliEmojiParamsSchema;
|
|
3071
|
+
exports.BilibiliLiveParamsSchema = BilibiliLiveParamsSchema;
|
|
3072
|
+
exports.BilibiliLoginParamsSchema = BilibiliLoginParamsSchema;
|
|
3073
|
+
exports.BilibiliQrcodeParamsSchema = BilibiliQrcodeParamsSchema;
|
|
3074
|
+
exports.BilibiliQrcodeStatusParamsSchema = BilibiliQrcodeStatusParamsSchema;
|
|
3075
|
+
exports.BilibiliUserParamsSchema = BilibiliUserParamsSchema;
|
|
3076
|
+
exports.BilibiliValidationSchemas = BilibiliValidationSchemas2;
|
|
3077
|
+
exports.BilibiliVideoDownloadParamsSchema = BilibiliVideoDownloadParamsSchema;
|
|
3078
|
+
exports.BilibiliVideoParamsSchema = BilibiliVideoParamsSchema;
|
|
3104
3079
|
exports.CreateApp = CreateApp;
|
|
3105
|
-
exports.
|
|
3080
|
+
exports.DouyinCommentParamsSchema = DouyinCommentParamsSchema;
|
|
3081
|
+
exports.DouyinCommentReplyParamsSchema = DouyinCommentReplyParamsSchema;
|
|
3082
|
+
exports.DouyinEmojiListParamsSchema = DouyinEmojiListParamsSchema;
|
|
3083
|
+
exports.DouyinEmojiProParamsSchema = DouyinEmojiProParamsSchema;
|
|
3084
|
+
exports.DouyinMusicParamsSchema = DouyinMusicParamsSchema;
|
|
3085
|
+
exports.DouyinQrcodeParamsSchema = DouyinQrcodeParamsSchema;
|
|
3086
|
+
exports.DouyinSearchParamsSchema = DouyinSearchParamsSchema;
|
|
3087
|
+
exports.DouyinUserParamsSchema = DouyinUserParamsSchema;
|
|
3088
|
+
exports.DouyinValidationSchemas = DouyinValidationSchemas2;
|
|
3089
|
+
exports.DouyinWorkParamsSchema = DouyinWorkParamsSchema;
|
|
3090
|
+
exports.KuaishouCommentParamsSchema = KuaishouCommentParamsSchema;
|
|
3091
|
+
exports.KuaishouEmojiParamsSchema = KuaishouEmojiParamsSchema;
|
|
3092
|
+
exports.KuaishouValidationSchemas = KuaishouValidationSchemas2;
|
|
3093
|
+
exports.KuaishouVideoParamsSchema = KuaishouVideoParamsSchema;
|
|
3094
|
+
exports.ValidationError = ValidationError;
|
|
3106
3095
|
exports.amagi = amagi;
|
|
3107
3096
|
exports.amagiClient = amagiClient;
|
|
3108
3097
|
exports.av2bv = av2bv;
|
|
@@ -3111,23 +3100,27 @@ exports.bilibiliApiUrls = bilibiliApiUrls;
|
|
|
3111
3100
|
exports.bilibiliErrorCodeMap = bilibiliErrorCodeMap;
|
|
3112
3101
|
exports.bilibiliUtils = bilibiliUtils;
|
|
3113
3102
|
exports.bv2av = bv2av;
|
|
3103
|
+
exports.createAmagiClient = createAmagiClient;
|
|
3114
3104
|
exports.createBilibiliRoutes = createBilibiliRoutes;
|
|
3115
3105
|
exports.createBoundBilibiliApi = createBoundBilibiliApi;
|
|
3116
3106
|
exports.createBoundDouyinApi = createBoundDouyinApi;
|
|
3117
3107
|
exports.createBoundKuaishouApi = createBoundKuaishouApi;
|
|
3118
3108
|
exports.createDouyinRoutes = createDouyinRoutes;
|
|
3109
|
+
exports.createErrorResponse = createErrorResponse;
|
|
3119
3110
|
exports.createKuaishouRoutes = createKuaishouRoutes;
|
|
3111
|
+
exports.createSuccessResponse = createSuccessResponse;
|
|
3120
3112
|
exports.default = Client;
|
|
3121
3113
|
exports.douyin = douyin;
|
|
3122
3114
|
exports.douyinApiUrls = douyinApiUrls;
|
|
3123
3115
|
exports.douyinSign = douyinSign;
|
|
3124
3116
|
exports.douyinUtils = douyinUtils;
|
|
3125
|
-
exports.
|
|
3126
|
-
exports.
|
|
3127
|
-
exports.
|
|
3128
|
-
exports.
|
|
3129
|
-
exports.
|
|
3130
|
-
exports.getKuaishouData =
|
|
3117
|
+
exports.fetchData = fetchData;
|
|
3118
|
+
exports.fetchResponse = fetchResponse;
|
|
3119
|
+
exports.getBilibiliData = getBilibiliData;
|
|
3120
|
+
exports.getDouyinData = getDouyinData;
|
|
3121
|
+
exports.getHeadersAndData = getHeadersAndData;
|
|
3122
|
+
exports.getKuaishouData = getKuaishouData;
|
|
3123
|
+
exports.handleError = handleError;
|
|
3131
3124
|
exports.httpLogger = httpLogger;
|
|
3132
3125
|
exports.kuaishou = kuaishou;
|
|
3133
3126
|
exports.kuaishouApiUrls = kuaishouApiUrls;
|
|
@@ -3135,7 +3128,10 @@ exports.kuaishouUtils = kuaishouUtils;
|
|
|
3135
3128
|
exports.logMiddleware = logMiddleware;
|
|
3136
3129
|
exports.logger = logger;
|
|
3137
3130
|
exports.qtparam = qtparam;
|
|
3138
|
-
exports.registerBilibiliRoutes =
|
|
3139
|
-
exports.registerDouyinRoutes =
|
|
3131
|
+
exports.registerBilibiliRoutes = createBilibiliRoutes;
|
|
3132
|
+
exports.registerDouyinRoutes = createDouyinRoutes;
|
|
3140
3133
|
exports.registerKuaishouRoutes = createKuaishouRoutes;
|
|
3134
|
+
exports.validateBilibiliParams = validateBilibiliParams;
|
|
3135
|
+
exports.validateDouyinParams = validateDouyinParams;
|
|
3136
|
+
exports.validateKuaishouParams = validateKuaishouParams;
|
|
3141
3137
|
exports.wbi_sign = wbi_sign;
|