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