@ikenxuan/amagi 4.5.2 → 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/dist/default/cjs/index.cjs +560 -576
- package/dist/default/esm/index.mjs +514 -567
- package/dist/default/index.d.ts +16486 -117
- package/package.json +1 -6
- package/dist/default/cjs/v5.cjs +0 -3105
- package/dist/default/esm/v5.mjs +0 -3020
- package/dist/default/index-2b526zmm.d.ts +0 -15752
- package/dist/default/v5.d.ts +0 -766
|
@@ -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;
|
|
@@ -513,43 +420,117 @@ var wbi_sign = async (BASEURL, cookie) => {
|
|
|
513
420
|
return query;
|
|
514
421
|
};
|
|
515
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
|
+
};
|
|
506
|
+
|
|
516
507
|
// src/platform/bilibili/getdata.ts
|
|
517
|
-
var
|
|
518
|
-
|
|
519
|
-
"
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
"sec-fetch-user": "?1",
|
|
529
|
-
"upgrade-insecure-requests": "1",
|
|
530
|
-
referer: "https://www.bilibili.com/"
|
|
531
|
-
};
|
|
532
|
-
var fetchBilibili = async (data2, cookie) => {
|
|
533
|
-
var _a, _b, _c;
|
|
534
|
-
const headers2 = {
|
|
535
|
-
...defheaders,
|
|
536
|
-
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
|
+
}
|
|
537
519
|
};
|
|
538
520
|
switch (data2.methodType) {
|
|
539
521
|
case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": {
|
|
540
|
-
const INFODATA = await GlobalGetData({
|
|
541
|
-
|
|
542
|
-
|
|
522
|
+
const INFODATA = await GlobalGetData(data2.methodType, {
|
|
523
|
+
...baseRequestConfig,
|
|
524
|
+
url: bilibiliApiUrls.\u89C6\u9891\u8BE6\u7EC6\u4FE1\u606F({ bvid: data2.bvid })
|
|
543
525
|
});
|
|
544
526
|
return INFODATA;
|
|
545
527
|
}
|
|
546
528
|
case "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E": {
|
|
547
529
|
const BASEURL = bilibiliApiUrls.\u89C6\u9891\u6D41\u4FE1\u606F({ avid: data2.avid, cid: data2.cid });
|
|
548
|
-
const SIGN = await qtparam(BASEURL,
|
|
549
|
-
const DATA = await GlobalGetData({
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
...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
|
|
553
534
|
});
|
|
554
535
|
return DATA;
|
|
555
536
|
}
|
|
@@ -562,10 +543,9 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
562
543
|
let nextPaginationStr = pagination_str;
|
|
563
544
|
let isEnd = false;
|
|
564
545
|
const checkStatusUrl = bilibiliApiUrls.\u8BC4\u8BBA\u533A\u72B6\u6001({ oid, type });
|
|
565
|
-
const checkStatusRes = await GlobalGetData({
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
...data2
|
|
546
|
+
const checkStatusRes = await GlobalGetData(data2.methodType, {
|
|
547
|
+
...baseRequestConfig,
|
|
548
|
+
url: checkStatusUrl
|
|
569
549
|
});
|
|
570
550
|
if (checkStatusRes.data === null) {
|
|
571
551
|
logger.error("\u8BC4\u8BBA\u533A\u672A\u5F00\u653E");
|
|
@@ -585,18 +565,17 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
585
565
|
seek_rpid,
|
|
586
566
|
web_location: web_location ?? "1315875"
|
|
587
567
|
});
|
|
588
|
-
const wbiSignQuery = await wbi_sign(baseUrl,
|
|
568
|
+
const wbiSignQuery = await wbi_sign(baseUrl, (_b = baseRequestConfig.headers) == null ? void 0 : _b.cookie);
|
|
589
569
|
const finalUrl = baseUrl + wbiSignQuery;
|
|
590
|
-
const response = await GlobalGetData({
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
...data2
|
|
570
|
+
const response = await GlobalGetData(data2.methodType, {
|
|
571
|
+
...baseRequestConfig,
|
|
572
|
+
url: finalUrl
|
|
594
573
|
});
|
|
595
574
|
tmpresp = response;
|
|
596
|
-
const currentComments = ((
|
|
575
|
+
const currentComments = ((_c = response.data) == null ? void 0 : _c.replies) || [];
|
|
597
576
|
fetchedComments.push(...currentComments);
|
|
598
|
-
if ((
|
|
599
|
-
nextPaginationStr = (
|
|
577
|
+
if ((_d = response.data) == null ? void 0 : _d.cursor) {
|
|
578
|
+
nextPaginationStr = (_e = response.data.cursor.pagination_reply) == null ? void 0 : _e.next_offset;
|
|
600
579
|
isEnd = response.data.cursor.is_end;
|
|
601
580
|
} else {
|
|
602
581
|
isEnd = true;
|
|
@@ -618,9 +597,9 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
618
597
|
return finalResponse;
|
|
619
598
|
}
|
|
620
599
|
case "Emoji\u6570\u636E": {
|
|
621
|
-
return await GlobalGetData({
|
|
622
|
-
|
|
623
|
-
|
|
600
|
+
return await GlobalGetData(data2.methodType, {
|
|
601
|
+
...baseRequestConfig,
|
|
602
|
+
url: bilibiliApiUrls.\u8868\u60C5\u5217\u8868()
|
|
624
603
|
});
|
|
625
604
|
}
|
|
626
605
|
case "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E": {
|
|
@@ -630,106 +609,121 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
630
609
|
}
|
|
631
610
|
const idType = id ? id.startsWith("ep") ? "ep_id" : "season_id" : "ep_id";
|
|
632
611
|
const newId = idType === "ep_id" ? id.replace("ep", "") : id.replace("ss", "");
|
|
633
|
-
const INFO = await GlobalGetData({
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
...data2
|
|
612
|
+
const INFO = await GlobalGetData(data2.methodType, {
|
|
613
|
+
...baseRequestConfig,
|
|
614
|
+
url: bilibiliApiUrls.\u756A\u5267\u660E\u7EC6({ [idType]: newId })
|
|
637
615
|
});
|
|
638
616
|
return INFO;
|
|
639
617
|
}
|
|
640
618
|
case "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E": {
|
|
641
619
|
const BASEURL = bilibiliApiUrls.\u756A\u5267\u89C6\u9891\u6D41\u4FE1\u606F({ cid: data2.cid, ep_id: data2.ep_id.replace("ep", "") });
|
|
642
|
-
const SIGN = await qtparam(BASEURL,
|
|
643
|
-
const DATA = await GlobalGetData({
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
...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
|
|
647
624
|
});
|
|
648
625
|
return DATA;
|
|
649
626
|
}
|
|
650
627
|
case "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E": {
|
|
651
|
-
|
|
628
|
+
const customConfig = {
|
|
629
|
+
...baseRequestConfig,
|
|
630
|
+
headers: {
|
|
631
|
+
...baseRequestConfig.headers,
|
|
632
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
633
|
+
...{
|
|
634
|
+
referer: void 0
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
};
|
|
652
638
|
const { host_mid } = data2;
|
|
653
|
-
const result = await GlobalGetData({
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
...data2
|
|
639
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
640
|
+
...customConfig,
|
|
641
|
+
url: bilibiliApiUrls.\u7528\u6237\u7A7A\u95F4\u52A8\u6001({ host_mid })
|
|
657
642
|
});
|
|
658
643
|
return result;
|
|
659
644
|
}
|
|
660
645
|
case "\u52A8\u6001\u8BE6\u60C5\u6570\u636E": {
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
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 })
|
|
666
659
|
});
|
|
667
660
|
return dynamicINFO;
|
|
668
661
|
}
|
|
669
662
|
case "\u52A8\u6001\u5361\u7247\u6570\u636E": {
|
|
670
|
-
|
|
663
|
+
const customConfig = {
|
|
664
|
+
...baseRequestConfig,
|
|
665
|
+
headers: {
|
|
666
|
+
...baseRequestConfig.headers,
|
|
667
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
668
|
+
...{
|
|
669
|
+
referer: void 0
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
};
|
|
671
673
|
const { dynamic_id } = data2;
|
|
672
|
-
const dynamicINFO_CARD = await GlobalGetData({
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
...data2
|
|
674
|
+
const dynamicINFO_CARD = await GlobalGetData(data2.methodType, {
|
|
675
|
+
...customConfig,
|
|
676
|
+
url: bilibiliApiUrls.\u52A8\u6001\u5361\u7247\u4FE1\u606F({ dynamic_id })
|
|
676
677
|
});
|
|
677
678
|
return dynamicINFO_CARD;
|
|
678
679
|
}
|
|
679
680
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
680
681
|
const { host_mid } = data2;
|
|
681
|
-
const result = await GlobalGetData({
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
...data2
|
|
682
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
683
|
+
...baseRequestConfig,
|
|
684
|
+
url: bilibiliApiUrls.\u7528\u6237\u540D\u7247\u4FE1\u606F({ host_mid })
|
|
685
685
|
});
|
|
686
686
|
return result;
|
|
687
687
|
}
|
|
688
688
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F": {
|
|
689
|
-
const result = await GlobalGetData({
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
...data2
|
|
689
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
690
|
+
...baseRequestConfig,
|
|
691
|
+
url: bilibiliApiUrls.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: data2.room_id })
|
|
693
692
|
});
|
|
694
693
|
return result;
|
|
695
694
|
}
|
|
696
695
|
case "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F": {
|
|
697
|
-
const result = await GlobalGetData({
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
...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 })
|
|
701
699
|
});
|
|
702
700
|
return result;
|
|
703
701
|
}
|
|
704
702
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801": {
|
|
705
|
-
const result = await GlobalGetData({
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
...data2
|
|
703
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
704
|
+
...baseRequestConfig,
|
|
705
|
+
url: bilibiliApiUrls.\u7533\u8BF7\u4E8C\u7EF4\u7801()
|
|
709
706
|
});
|
|
710
707
|
return result;
|
|
711
708
|
}
|
|
712
709
|
case "\u4E8C\u7EF4\u7801\u72B6\u6001": {
|
|
713
|
-
const result = await
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
}).getHeadersAndData();
|
|
710
|
+
const result = await getHeadersAndData({
|
|
711
|
+
...baseRequestConfig,
|
|
712
|
+
url: bilibiliApiUrls.\u4E8C\u7EF4\u7801\u72B6\u6001({ qrcode_key: data2.qrcode_key })
|
|
713
|
+
});
|
|
718
714
|
return result;
|
|
719
715
|
}
|
|
720
716
|
case "\u767B\u5F55\u57FA\u672C\u4FE1\u606F": {
|
|
721
|
-
const result = await GlobalGetData({
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
...data2
|
|
717
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
718
|
+
...baseRequestConfig,
|
|
719
|
+
url: bilibiliApiUrls.\u767B\u5F55\u57FA\u672C\u4FE1\u606F()
|
|
725
720
|
});
|
|
726
721
|
return result;
|
|
727
722
|
}
|
|
728
723
|
case "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF": {
|
|
729
|
-
const result = await GlobalGetData({
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
...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 })
|
|
733
727
|
});
|
|
734
728
|
return result;
|
|
735
729
|
}
|
|
@@ -758,19 +752,19 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
758
752
|
return null;
|
|
759
753
|
}
|
|
760
754
|
};
|
|
761
|
-
var GlobalGetData = async (options) => {
|
|
755
|
+
var GlobalGetData = async (type, options) => {
|
|
762
756
|
let warningMessage = "";
|
|
763
757
|
try {
|
|
764
|
-
const result = await
|
|
758
|
+
const result = await fetchData(options);
|
|
765
759
|
if (!result || result === "") {
|
|
766
760
|
const Err = {
|
|
767
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",
|
|
768
|
-
requestType:
|
|
762
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
769
763
|
requestUrl: options.url
|
|
770
764
|
};
|
|
771
765
|
warningMessage = `
|
|
772
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")}
|
|
773
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
767
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
774
768
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
775
769
|
`;
|
|
776
770
|
logger.warn(warningMessage);
|
|
@@ -784,13 +778,13 @@ var GlobalGetData = async (options) => {
|
|
|
784
778
|
const errorMessage = bilibiliErrorCodeMap[result.code] || result.message || "\u672A\u77E5\u9519\u8BEF";
|
|
785
779
|
const Err = {
|
|
786
780
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${errorMessage}\uFF01`,
|
|
787
|
-
requestType:
|
|
781
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
788
782
|
requestUrl: options.url
|
|
789
783
|
};
|
|
790
784
|
warningMessage = `
|
|
791
785
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow(errorMessage)}
|
|
792
786
|
\u9519\u8BEF\u4EE3\u7801\uFF1A${result.code}
|
|
793
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
787
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
794
788
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
795
789
|
`;
|
|
796
790
|
logger.warn(warningMessage);
|
|
@@ -811,7 +805,7 @@ var GlobalGetData = async (options) => {
|
|
|
811
805
|
data: error.data,
|
|
812
806
|
amagiError: {
|
|
813
807
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
814
|
-
requestType:
|
|
808
|
+
requestType: type,
|
|
815
809
|
requestUrl: options.url
|
|
816
810
|
},
|
|
817
811
|
amagiMessage: warningMessage
|
|
@@ -1334,21 +1328,17 @@ var DouyinAPI = class {
|
|
|
1334
1328
|
var douyinApiUrls = new DouyinAPI();
|
|
1335
1329
|
|
|
1336
1330
|
// src/platform/douyin/getdata.ts
|
|
1337
|
-
var
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
}
|
|
1347
|
-
|
|
1348
|
-
var _a, _b;
|
|
1349
|
-
const headers2 = {
|
|
1350
|
-
...defheaders2,
|
|
1351
|
-
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
|
+
}
|
|
1352
1342
|
};
|
|
1353
1343
|
switch (data2.methodType) {
|
|
1354
1344
|
case "\u805A\u5408\u89E3\u6790":
|
|
@@ -1356,73 +1346,101 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1356
1346
|
case "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E":
|
|
1357
1347
|
case "\u5408\u8F91\u4F5C\u54C1\u6570\u636E": {
|
|
1358
1348
|
const url = douyinApiUrls.\u89C6\u9891\u6216\u56FE\u96C6({ aweme_id: data2.aweme_id });
|
|
1359
|
-
const VideoData = await GlobalGetData2({
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
...data2
|
|
1349
|
+
const VideoData = await GlobalGetData2(data2.methodType, {
|
|
1350
|
+
...baseRequestConfig,
|
|
1351
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1363
1352
|
});
|
|
1364
1353
|
return VideoData;
|
|
1365
1354
|
}
|
|
1366
1355
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1367
1356
|
const urlGenerator = (params) => douyinApiUrls.\u8BC4\u8BBA(params);
|
|
1368
|
-
const response = await fetchPaginatedData(
|
|
1357
|
+
const response = await fetchPaginatedData(
|
|
1358
|
+
data2.methodType,
|
|
1359
|
+
urlGenerator,
|
|
1360
|
+
data2,
|
|
1361
|
+
50,
|
|
1362
|
+
baseRequestConfig
|
|
1363
|
+
);
|
|
1369
1364
|
return response;
|
|
1370
1365
|
}
|
|
1371
1366
|
case "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E": {
|
|
1372
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
|
+
};
|
|
1373
1378
|
const response = await fetchPaginatedData(
|
|
1379
|
+
data2.methodType,
|
|
1374
1380
|
urlGenerator,
|
|
1375
1381
|
data2,
|
|
1376
1382
|
3,
|
|
1377
|
-
|
|
1378
|
-
...headers2,
|
|
1379
|
-
referer: `https://www.douyin.com/note/${data2.aweme_id}`
|
|
1380
|
-
}
|
|
1383
|
+
customConfig
|
|
1381
1384
|
);
|
|
1382
1385
|
return response;
|
|
1383
1386
|
}
|
|
1384
1387
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
1385
1388
|
const url = douyinApiUrls.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1386
|
-
const
|
|
1387
|
-
|
|
1389
|
+
const customConfig = {
|
|
1390
|
+
...baseRequestConfig,
|
|
1388
1391
|
headers: {
|
|
1389
|
-
...
|
|
1390
|
-
Referer
|
|
1391
|
-
|
|
1392
|
-
|
|
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)}`
|
|
1393
1402
|
});
|
|
1394
1403
|
return UserInfoData;
|
|
1395
1404
|
}
|
|
1396
1405
|
case "Emoji\u6570\u636E": {
|
|
1397
1406
|
const url = douyinApiUrls.\u8868\u60C5();
|
|
1398
|
-
const EmojiData = await GlobalGetData2({
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
...data2
|
|
1407
|
+
const EmojiData = await GlobalGetData2(data2.methodType, {
|
|
1408
|
+
...baseRequestConfig,
|
|
1409
|
+
url
|
|
1402
1410
|
});
|
|
1403
1411
|
return EmojiData;
|
|
1404
1412
|
}
|
|
1405
1413
|
case "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E": {
|
|
1406
1414
|
const url = douyinApiUrls.\u7528\u6237\u4E3B\u9875\u89C6\u9891({ sec_uid: data2.sec_uid });
|
|
1407
|
-
const
|
|
1408
|
-
|
|
1415
|
+
const customConfig = {
|
|
1416
|
+
...baseRequestConfig,
|
|
1409
1417
|
headers: {
|
|
1410
|
-
...
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
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)}`
|
|
1414
1427
|
});
|
|
1415
1428
|
return UserVideoListData;
|
|
1416
1429
|
}
|
|
1417
1430
|
case "\u70ED\u70B9\u8BCD\u6570\u636E": {
|
|
1418
1431
|
const url = douyinApiUrls.\u70ED\u70B9\u8BCD({ query: data2.query, number: data2.number ?? 10 });
|
|
1419
|
-
const
|
|
1420
|
-
|
|
1432
|
+
const customConfig = {
|
|
1433
|
+
...baseRequestConfig,
|
|
1421
1434
|
headers: {
|
|
1422
|
-
...
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
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)}`
|
|
1426
1444
|
});
|
|
1427
1445
|
return SuggestWordsData;
|
|
1428
1446
|
}
|
|
@@ -1431,6 +1449,15 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1431
1449
|
const maxPageSize = 15;
|
|
1432
1450
|
let fetchedSearchList = [];
|
|
1433
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
|
+
};
|
|
1434
1461
|
while (fetchedSearchList.length < Number(data2.number ?? 10)) {
|
|
1435
1462
|
const requestCount = Math.min(Number(data2.number ?? 50) - fetchedSearchList.length, maxPageSize);
|
|
1436
1463
|
const url = douyinApiUrls.\u641C\u7D22({
|
|
@@ -1438,15 +1465,11 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1438
1465
|
number: requestCount,
|
|
1439
1466
|
search_id: search_id === "" ? void 0 : search_id
|
|
1440
1467
|
});
|
|
1441
|
-
const response = await GlobalGetData2({
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
...headers2,
|
|
1445
|
-
Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data2.query))}`
|
|
1446
|
-
},
|
|
1447
|
-
...data2
|
|
1468
|
+
const response = await GlobalGetData2(data2.methodType, {
|
|
1469
|
+
...customConfig,
|
|
1470
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1448
1471
|
});
|
|
1449
|
-
if (response.data.length === 0) {
|
|
1472
|
+
if (((_a = response.data) == null ? void 0 : _a.length) === 0) {
|
|
1450
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);
|
|
1451
1474
|
return false;
|
|
1452
1475
|
}
|
|
@@ -1455,7 +1478,7 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1455
1478
|
}
|
|
1456
1479
|
fetchedSearchList.push(...response.data);
|
|
1457
1480
|
tmpresp = response;
|
|
1458
|
-
search_id = response.log_pb.impr_id;
|
|
1481
|
+
search_id = (_b = response.log_pb) == null ? void 0 : _b.impr_id;
|
|
1459
1482
|
}
|
|
1460
1483
|
const finalResponse = {
|
|
1461
1484
|
...tmpresp,
|
|
@@ -1465,35 +1488,38 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1465
1488
|
}
|
|
1466
1489
|
case "\u52A8\u6001\u8868\u60C5\u6570\u636E": {
|
|
1467
1490
|
const url = douyinApiUrls.\u4E92\u52A8\u8868\u60C5();
|
|
1468
|
-
const ExpressionPlusData = await GlobalGetData2({
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
...data2
|
|
1491
|
+
const ExpressionPlusData = await GlobalGetData2(data2.methodType, {
|
|
1492
|
+
...baseRequestConfig,
|
|
1493
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1472
1494
|
});
|
|
1473
1495
|
return ExpressionPlusData;
|
|
1474
1496
|
}
|
|
1475
1497
|
case "\u97F3\u4E50\u6570\u636E": {
|
|
1476
1498
|
const url = douyinApiUrls.\u80CC\u666F\u97F3\u4E50({ music_id: data2.music_id });
|
|
1477
|
-
const MusicData = await GlobalGetData2({
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
...data2
|
|
1499
|
+
const MusicData = await GlobalGetData2(data2.methodType, {
|
|
1500
|
+
...baseRequestConfig,
|
|
1501
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1481
1502
|
});
|
|
1482
1503
|
return MusicData;
|
|
1483
1504
|
}
|
|
1484
1505
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E": {
|
|
1485
1506
|
let url = douyinApiUrls.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1486
1507
|
const fetchUrl = `${url}&a_bogus=${douyinSign.AB(url)}`;
|
|
1487
|
-
const
|
|
1488
|
-
|
|
1508
|
+
const customConfig = {
|
|
1509
|
+
...baseRequestConfig,
|
|
1489
1510
|
headers: {
|
|
1490
|
-
...
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
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
|
|
1494
1520
|
});
|
|
1495
|
-
if (!((
|
|
1496
|
-
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");
|
|
1497
1523
|
const Err = {
|
|
1498
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')",
|
|
1499
1525
|
requestType: data2.methodType ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
@@ -1516,31 +1542,36 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1516
1542
|
}
|
|
1517
1543
|
const room_data = JSON.parse(UserInfoData.user.room_data);
|
|
1518
1544
|
url = douyinApiUrls.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: UserInfoData.user.room_id_str, web_rid: room_data.owner.web_rid });
|
|
1519
|
-
const
|
|
1520
|
-
|
|
1545
|
+
const liveCustomConfig = {
|
|
1546
|
+
...baseRequestConfig,
|
|
1521
1547
|
headers: {
|
|
1522
|
-
...
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
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)}`
|
|
1526
1557
|
});
|
|
1527
1558
|
return LiveRoomData;
|
|
1528
1559
|
}
|
|
1529
1560
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E": {
|
|
1530
1561
|
const url = douyinApiUrls.\u7533\u8BF7\u4E8C\u7EF4\u7801({ verify_fp: data2.verify_fp });
|
|
1531
|
-
const LoginQrcodeStatusData = await GlobalGetData2({
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
...data2
|
|
1562
|
+
const LoginQrcodeStatusData = await GlobalGetData2(data2.methodType, {
|
|
1563
|
+
...baseRequestConfig,
|
|
1564
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1535
1565
|
});
|
|
1536
1566
|
return LoginQrcodeStatusData;
|
|
1537
1567
|
}
|
|
1538
|
-
default:
|
|
1539
|
-
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`);
|
|
1540
1570
|
return null;
|
|
1571
|
+
}
|
|
1541
1572
|
}
|
|
1542
1573
|
};
|
|
1543
|
-
var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize,
|
|
1574
|
+
var fetchPaginatedData = async (type, apiUrlGenerator, params, maxPageSize, requestConfig) => {
|
|
1544
1575
|
let cursor = params.cursor ?? 0;
|
|
1545
1576
|
let fetchedData = [];
|
|
1546
1577
|
let tmpresp = {};
|
|
@@ -1551,10 +1582,9 @@ var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize, headers2)
|
|
|
1551
1582
|
number: requestCount,
|
|
1552
1583
|
cursor
|
|
1553
1584
|
});
|
|
1554
|
-
const response = await GlobalGetData2({
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
...params
|
|
1585
|
+
const response = await GlobalGetData2(type, {
|
|
1586
|
+
...requestConfig,
|
|
1587
|
+
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1558
1588
|
});
|
|
1559
1589
|
fetchedData.push(...response.comments || response.data || []);
|
|
1560
1590
|
tmpresp = response;
|
|
@@ -1570,20 +1600,20 @@ var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize, headers2)
|
|
|
1570
1600
|
};
|
|
1571
1601
|
return finalResponse;
|
|
1572
1602
|
};
|
|
1573
|
-
var GlobalGetData2 = async (
|
|
1603
|
+
var GlobalGetData2 = async (type, config) => {
|
|
1574
1604
|
let warningMessage = "";
|
|
1575
1605
|
try {
|
|
1576
|
-
const result = await
|
|
1606
|
+
const result = await fetchData(config);
|
|
1577
1607
|
if (!result || result === "") {
|
|
1578
1608
|
const Err = {
|
|
1579
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",
|
|
1580
|
-
requestType:
|
|
1581
|
-
requestUrl:
|
|
1610
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1611
|
+
requestUrl: config.url
|
|
1582
1612
|
};
|
|
1583
1613
|
warningMessage = `
|
|
1584
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")}
|
|
1585
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1586
|
-
\u8BF7\u6C42URL\uFF1A${
|
|
1615
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1616
|
+
\u8BF7\u6C42URL\uFF1A${config.url}
|
|
1587
1617
|
`;
|
|
1588
1618
|
logger.warn(warningMessage);
|
|
1589
1619
|
throw {
|
|
@@ -1596,13 +1626,13 @@ var GlobalGetData2 = async (options) => {
|
|
|
1596
1626
|
const filterReason = result.filter_detail.filter_reason;
|
|
1597
1627
|
const Err = {
|
|
1598
1628
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${filterReason}\uFF01`,
|
|
1599
|
-
requestType:
|
|
1600
|
-
requestUrl:
|
|
1629
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1630
|
+
requestUrl: config.url
|
|
1601
1631
|
};
|
|
1602
1632
|
warningMessage = `
|
|
1603
1633
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow(filterReason)}
|
|
1604
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1605
|
-
\u8BF7\u6C42URL\uFF1A${
|
|
1634
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1635
|
+
\u8BF7\u6C42URL\uFF1A${config.url}
|
|
1606
1636
|
`;
|
|
1607
1637
|
logger.warn(warningMessage);
|
|
1608
1638
|
throw {
|
|
@@ -1622,8 +1652,8 @@ var GlobalGetData2 = async (options) => {
|
|
|
1622
1652
|
data: null,
|
|
1623
1653
|
amagiError: {
|
|
1624
1654
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
1625
|
-
requestType:
|
|
1626
|
-
requestUrl:
|
|
1655
|
+
requestType: type,
|
|
1656
|
+
requestUrl: config.url
|
|
1627
1657
|
},
|
|
1628
1658
|
amagiMessage: warningMessage
|
|
1629
1659
|
};
|
|
@@ -1680,50 +1710,42 @@ var API = class {
|
|
|
1680
1710
|
var kuaishouApiUrls = new API();
|
|
1681
1711
|
|
|
1682
1712
|
// src/platform/kuaishou/getdata.ts
|
|
1683
|
-
var
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
...defheaders3,
|
|
1694
|
-
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
|
+
}
|
|
1695
1723
|
};
|
|
1696
1724
|
switch (data2.methodType) {
|
|
1697
1725
|
case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": {
|
|
1698
1726
|
const body = kuaishouApiUrls.\u5355\u4E2A\u4F5C\u54C1\u4FE1\u606F({ photoId: data2.photoId });
|
|
1699
|
-
const VideoData = await GlobalGetData3({
|
|
1727
|
+
const VideoData = await GlobalGetData3(data2.methodType, {
|
|
1728
|
+
...baseRequestConfig,
|
|
1700
1729
|
url: body.url,
|
|
1701
|
-
|
|
1702
|
-
headers: headers2,
|
|
1703
|
-
body: body.body,
|
|
1704
|
-
...data2
|
|
1730
|
+
data: body.body
|
|
1705
1731
|
});
|
|
1706
1732
|
return VideoData;
|
|
1707
1733
|
}
|
|
1708
1734
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1709
1735
|
const body = kuaishouApiUrls.\u4F5C\u54C1\u8BC4\u8BBA\u4FE1\u606F({ photoId: data2.photoId });
|
|
1710
|
-
const VideoData = await GlobalGetData3({
|
|
1736
|
+
const VideoData = await GlobalGetData3(data2.methodType, {
|
|
1737
|
+
...baseRequestConfig,
|
|
1711
1738
|
url: body.url,
|
|
1712
|
-
|
|
1713
|
-
headers: headers2,
|
|
1714
|
-
body: body.body,
|
|
1715
|
-
...data2
|
|
1739
|
+
data: body.body
|
|
1716
1740
|
});
|
|
1717
1741
|
return VideoData;
|
|
1718
1742
|
}
|
|
1719
1743
|
case "Emoji\u6570\u636E": {
|
|
1720
1744
|
const body = kuaishouApiUrls.\u8868\u60C5();
|
|
1721
|
-
const EmojiData = await GlobalGetData3({
|
|
1745
|
+
const EmojiData = await GlobalGetData3(data2.methodType, {
|
|
1746
|
+
...baseRequestConfig,
|
|
1722
1747
|
url: body.url,
|
|
1723
|
-
|
|
1724
|
-
headers: headers2,
|
|
1725
|
-
body: body.body,
|
|
1726
|
-
...data2
|
|
1748
|
+
data: body.body
|
|
1727
1749
|
});
|
|
1728
1750
|
return EmojiData;
|
|
1729
1751
|
}
|
|
@@ -1732,22 +1754,22 @@ var KuaishouData = async (data2, cookie) => {
|
|
|
1732
1754
|
return null;
|
|
1733
1755
|
}
|
|
1734
1756
|
};
|
|
1735
|
-
var GlobalGetData3 = async (options) => {
|
|
1757
|
+
var GlobalGetData3 = async (type, options) => {
|
|
1736
1758
|
let warningMessage = "";
|
|
1737
1759
|
try {
|
|
1738
|
-
const result = await
|
|
1760
|
+
const result = await fetchData(options);
|
|
1739
1761
|
if (result === "" || !result || result.result === 2) {
|
|
1740
1762
|
const Err = {
|
|
1741
1763
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF01`,
|
|
1742
|
-
requestType:
|
|
1764
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1743
1765
|
requestUrl: options.url,
|
|
1744
|
-
requestBody: JSON.stringify(options.
|
|
1766
|
+
requestBody: JSON.stringify(options.data)
|
|
1745
1767
|
};
|
|
1746
1768
|
warningMessage = `
|
|
1747
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")}
|
|
1748
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1770
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1749
1771
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
1750
|
-
\u8BF7\u6C42\u53C2\u6570\uFF1A${JSON.stringify(options.
|
|
1772
|
+
\u8BF7\u6C42\u53C2\u6570\uFF1A${JSON.stringify(options.data, null, 2)}
|
|
1751
1773
|
`;
|
|
1752
1774
|
logger.warn(warningMessage);
|
|
1753
1775
|
throw {
|
|
@@ -1767,7 +1789,7 @@ var GlobalGetData3 = async (options) => {
|
|
|
1767
1789
|
data: null,
|
|
1768
1790
|
amagiError: {
|
|
1769
1791
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
1770
|
-
requestType:
|
|
1792
|
+
requestType: type,
|
|
1771
1793
|
requestUrl: options.url
|
|
1772
1794
|
},
|
|
1773
1795
|
amagiMessage: warningMessage
|
|
@@ -1991,23 +2013,26 @@ var createErrorResponse = (error, message, code = 500) => {
|
|
|
1991
2013
|
};
|
|
1992
2014
|
|
|
1993
2015
|
// src/model/DataFetchers.ts
|
|
1994
|
-
async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2016
|
+
async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
1995
2017
|
try {
|
|
1996
2018
|
let options;
|
|
1997
2019
|
let cookie;
|
|
2020
|
+
let config;
|
|
1998
2021
|
if (typeof optionsOrCookie === "string") {
|
|
1999
2022
|
cookie = optionsOrCookie;
|
|
2000
2023
|
options = cookieOrOptions;
|
|
2024
|
+
config = requestConfig;
|
|
2001
2025
|
} else {
|
|
2002
2026
|
options = optionsOrCookie;
|
|
2003
2027
|
cookie = cookieOrOptions;
|
|
2028
|
+
config = requestConfig;
|
|
2004
2029
|
}
|
|
2005
2030
|
const { typeMode: _, ...validationOptions } = options || {};
|
|
2006
2031
|
const validatedParams = validateDouyinParams(methodType, validationOptions);
|
|
2007
2032
|
const apiParams = {
|
|
2008
2033
|
...validatedParams
|
|
2009
2034
|
};
|
|
2010
|
-
const rawData = await DouyinData(apiParams, cookie);
|
|
2035
|
+
const rawData = await DouyinData(apiParams, cookie, config);
|
|
2011
2036
|
if (rawData.data === "") {
|
|
2012
2037
|
return createErrorResponse(rawData.amagiError, "\u6296\u97F3\u6570\u636E\u83B7\u53D6\u5931\u8D25");
|
|
2013
2038
|
}
|
|
@@ -2017,7 +2042,7 @@ async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
|
2017
2042
|
throw new Error(`\u6296\u97F3\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
2018
2043
|
}
|
|
2019
2044
|
}
|
|
2020
|
-
async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2045
|
+
async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2021
2046
|
try {
|
|
2022
2047
|
let options;
|
|
2023
2048
|
let cookie;
|
|
@@ -2043,7 +2068,7 @@ async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
|
2043
2068
|
throw new Error(`B\u7AD9\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
2044
2069
|
}
|
|
2045
2070
|
}
|
|
2046
|
-
async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2071
|
+
async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2047
2072
|
try {
|
|
2048
2073
|
let options;
|
|
2049
2074
|
let cookie;
|
|
@@ -2209,7 +2234,7 @@ var bilibili = {
|
|
|
2209
2234
|
*/
|
|
2210
2235
|
convertBvToAv: createBilibiliApiMethod("BV\u8F6CAV")
|
|
2211
2236
|
};
|
|
2212
|
-
var createBoundBilibiliApi = (cookie) => {
|
|
2237
|
+
var createBoundBilibiliApi = (cookie, requestConfig) => {
|
|
2213
2238
|
return {
|
|
2214
2239
|
/**
|
|
2215
2240
|
* 获取单个视频作品数据
|
|
@@ -2415,10 +2440,10 @@ var createValidationMiddleware = (validateFn, methodType) => {
|
|
|
2415
2440
|
var createDouyinValidationMiddleware = (methodType) => createValidationMiddleware(validateDouyinParams, methodType);
|
|
2416
2441
|
var createBilibiliValidationMiddleware = (methodType) => createValidationMiddleware(validateBilibiliParams, methodType);
|
|
2417
2442
|
var createKuaishouValidationMiddleware = (methodType) => createValidationMiddleware(validateKuaishouParams, methodType);
|
|
2418
|
-
var createBilibiliRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
2443
|
+
var createBilibiliRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
|
|
2419
2444
|
return async (req, res) => {
|
|
2420
2445
|
try {
|
|
2421
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
2446
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2422
2447
|
res.json({
|
|
2423
2448
|
...result,
|
|
2424
2449
|
requestPath: req.originalUrl
|
|
@@ -2432,97 +2457,97 @@ var createBilibiliRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2432
2457
|
}
|
|
2433
2458
|
};
|
|
2434
2459
|
};
|
|
2435
|
-
var createBilibiliRoutes = (cookie) => {
|
|
2460
|
+
var createBilibiliRoutes = (cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
|
|
2436
2461
|
const router = Router();
|
|
2437
2462
|
router.get(
|
|
2438
2463
|
"/fetch_one_video",
|
|
2439
2464
|
createBilibiliValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2440
|
-
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2465
|
+
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2441
2466
|
);
|
|
2442
2467
|
router.get(
|
|
2443
2468
|
"/fetch_video_playurl",
|
|
2444
2469
|
createBilibiliValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"),
|
|
2445
|
-
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)
|
|
2446
2471
|
);
|
|
2447
2472
|
router.get(
|
|
2448
2473
|
"/fetch_work_comments",
|
|
2449
2474
|
createBilibiliValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2450
|
-
createBilibiliRouteHandler(getBilibiliData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
2475
|
+
createBilibiliRouteHandler(getBilibiliData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2451
2476
|
);
|
|
2452
2477
|
router.get(
|
|
2453
2478
|
"/fetch_user_profile",
|
|
2454
2479
|
createBilibiliValidationMiddleware("\u7528\u6237\u4E3B\u9875\u6570\u636E"),
|
|
2455
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie)
|
|
2480
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig)
|
|
2456
2481
|
);
|
|
2457
2482
|
router.get(
|
|
2458
2483
|
"/fetch_user_dynamic",
|
|
2459
2484
|
createBilibiliValidationMiddleware("\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E"),
|
|
2460
|
-
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)
|
|
2461
2486
|
);
|
|
2462
2487
|
router.get(
|
|
2463
2488
|
"/fetch_emoji_list",
|
|
2464
2489
|
createBilibiliValidationMiddleware("Emoji\u6570\u636E"),
|
|
2465
|
-
createBilibiliRouteHandler(getBilibiliData, "Emoji\u6570\u636E", cookie)
|
|
2490
|
+
createBilibiliRouteHandler(getBilibiliData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2466
2491
|
);
|
|
2467
2492
|
router.get(
|
|
2468
2493
|
"/fetch_bangumi_video_info",
|
|
2469
2494
|
createBilibiliValidationMiddleware("\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E"),
|
|
2470
|
-
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", cookie)
|
|
2495
|
+
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2471
2496
|
);
|
|
2472
2497
|
router.get(
|
|
2473
2498
|
"/fetch_bangumi_video_playurl",
|
|
2474
2499
|
createBilibiliValidationMiddleware("\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"),
|
|
2475
|
-
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie)
|
|
2500
|
+
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2476
2501
|
);
|
|
2477
2502
|
router.get(
|
|
2478
2503
|
"/fetch_dynamic_info",
|
|
2479
2504
|
createBilibiliValidationMiddleware("\u52A8\u6001\u8BE6\u60C5\u6570\u636E"),
|
|
2480
|
-
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u8BE6\u60C5\u6570\u636E", cookie)
|
|
2505
|
+
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u8BE6\u60C5\u6570\u636E", cookie, requestConfig)
|
|
2481
2506
|
);
|
|
2482
2507
|
router.get(
|
|
2483
2508
|
"/fetch_dynamic_card",
|
|
2484
2509
|
createBilibiliValidationMiddleware("\u52A8\u6001\u5361\u7247\u6570\u636E"),
|
|
2485
|
-
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u5361\u7247\u6570\u636E", cookie)
|
|
2510
|
+
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u5361\u7247\u6570\u636E", cookie, requestConfig)
|
|
2486
2511
|
);
|
|
2487
2512
|
router.get(
|
|
2488
2513
|
"/fetch_live_room_detail",
|
|
2489
2514
|
createBilibiliValidationMiddleware("\u76F4\u64AD\u95F4\u4FE1\u606F"),
|
|
2490
|
-
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u4FE1\u606F", cookie)
|
|
2515
|
+
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u4FE1\u606F", cookie, requestConfig)
|
|
2491
2516
|
);
|
|
2492
2517
|
router.get(
|
|
2493
2518
|
"/fetch_liveroom_def",
|
|
2494
2519
|
createBilibiliValidationMiddleware("\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"),
|
|
2495
|
-
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F", cookie)
|
|
2520
|
+
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F", cookie, requestConfig)
|
|
2496
2521
|
);
|
|
2497
2522
|
router.get(
|
|
2498
2523
|
"/login_basic_info",
|
|
2499
2524
|
createBilibiliValidationMiddleware("\u767B\u5F55\u57FA\u672C\u4FE1\u606F"),
|
|
2500
|
-
createBilibiliRouteHandler(getBilibiliData, "\u767B\u5F55\u57FA\u672C\u4FE1\u606F", cookie)
|
|
2525
|
+
createBilibiliRouteHandler(getBilibiliData, "\u767B\u5F55\u57FA\u672C\u4FE1\u606F", cookie, requestConfig)
|
|
2501
2526
|
);
|
|
2502
2527
|
router.get(
|
|
2503
2528
|
"/new_login_qrcode",
|
|
2504
2529
|
createBilibiliValidationMiddleware("\u7533\u8BF7\u4E8C\u7EF4\u7801"),
|
|
2505
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7533\u8BF7\u4E8C\u7EF4\u7801", cookie)
|
|
2530
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7533\u8BF7\u4E8C\u7EF4\u7801", cookie, requestConfig)
|
|
2506
2531
|
);
|
|
2507
2532
|
router.get(
|
|
2508
2533
|
"/check_qrcode",
|
|
2509
2534
|
createBilibiliValidationMiddleware("\u4E8C\u7EF4\u7801\u72B6\u6001"),
|
|
2510
|
-
createBilibiliRouteHandler(getBilibiliData, "\u4E8C\u7EF4\u7801\u72B6\u6001", cookie)
|
|
2535
|
+
createBilibiliRouteHandler(getBilibiliData, "\u4E8C\u7EF4\u7801\u72B6\u6001", cookie, requestConfig)
|
|
2511
2536
|
);
|
|
2512
2537
|
router.get(
|
|
2513
2538
|
"/fetch_user_full_view",
|
|
2514
2539
|
createBilibiliValidationMiddleware("\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF"),
|
|
2515
|
-
createBilibiliRouteHandler(getBilibiliData, "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF", cookie)
|
|
2540
|
+
createBilibiliRouteHandler(getBilibiliData, "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF", cookie, requestConfig)
|
|
2516
2541
|
);
|
|
2517
2542
|
router.get(
|
|
2518
2543
|
"/av_to_bv",
|
|
2519
2544
|
createBilibiliValidationMiddleware("AV\u8F6CBV"),
|
|
2520
|
-
createBilibiliRouteHandler(getBilibiliData, "AV\u8F6CBV", cookie)
|
|
2545
|
+
createBilibiliRouteHandler(getBilibiliData, "AV\u8F6CBV", cookie, requestConfig)
|
|
2521
2546
|
);
|
|
2522
2547
|
router.get(
|
|
2523
2548
|
"/bv_to_av",
|
|
2524
2549
|
createBilibiliValidationMiddleware("BV\u8F6CAV"),
|
|
2525
|
-
createBilibiliRouteHandler(getBilibiliData, "BV\u8F6CAV", cookie)
|
|
2550
|
+
createBilibiliRouteHandler(getBilibiliData, "BV\u8F6CAV", cookie, requestConfig)
|
|
2526
2551
|
);
|
|
2527
2552
|
return router;
|
|
2528
2553
|
};
|
|
@@ -2540,13 +2565,13 @@ var bilibiliUtils = {
|
|
|
2540
2565
|
|
|
2541
2566
|
// src/platform/douyin/DouyinApi.ts
|
|
2542
2567
|
var createDouyinApiMethod = (methodType) => {
|
|
2543
|
-
return async (options, cookie) => {
|
|
2544
|
-
return await getDouyinData(methodType, options, cookie);
|
|
2568
|
+
return async (options, cookie, requestConfig) => {
|
|
2569
|
+
return await getDouyinData(methodType, options, cookie, requestConfig);
|
|
2545
2570
|
};
|
|
2546
2571
|
};
|
|
2547
|
-
var createBoundDouyinApiMethod = (methodType, cookie) => {
|
|
2572
|
+
var createBoundDouyinApiMethod = (methodType, cookie, requestConfig) => {
|
|
2548
2573
|
return async (options) => {
|
|
2549
|
-
return await getDouyinData(methodType, options, cookie);
|
|
2574
|
+
return await getDouyinData(methodType, options, cookie, requestConfig);
|
|
2550
2575
|
};
|
|
2551
2576
|
};
|
|
2552
2577
|
var douyin = {
|
|
@@ -2649,98 +2674,98 @@ var douyin = {
|
|
|
2649
2674
|
*/
|
|
2650
2675
|
getLiveRoomInfo: createDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E")
|
|
2651
2676
|
};
|
|
2652
|
-
var createBoundDouyinApi = (cookie) => {
|
|
2677
|
+
var createBoundDouyinApi = (cookie, requestConfig) => {
|
|
2653
2678
|
return {
|
|
2654
2679
|
/**
|
|
2655
2680
|
* 聚合解析 (视频/图集/合辑)
|
|
2656
2681
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2657
2682
|
* @returns 统一格式的API响应,包含视频、图集或合辑数据
|
|
2658
2683
|
*/
|
|
2659
|
-
getWorkInfo: createBoundDouyinApiMethod("\u805A\u5408\u89E3\u6790", cookie),
|
|
2684
|
+
getWorkInfo: createBoundDouyinApiMethod("\u805A\u5408\u89E3\u6790", cookie, requestConfig),
|
|
2660
2685
|
/**
|
|
2661
2686
|
* 获取视频作品数据
|
|
2662
2687
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2663
2688
|
* @returns 统一格式的API响应,包含视频作品详细信息
|
|
2664
2689
|
*/
|
|
2665
|
-
getVideoWorkInfo: createBoundDouyinApiMethod("\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie),
|
|
2690
|
+
getVideoWorkInfo: createBoundDouyinApiMethod("\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2666
2691
|
/**
|
|
2667
2692
|
* 获取图集作品数据
|
|
2668
2693
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2669
2694
|
* @returns 统一格式的API响应,包含图集作品详细信息
|
|
2670
2695
|
*/
|
|
2671
|
-
getImageAlbumWorkInfo: createBoundDouyinApiMethod("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie),
|
|
2696
|
+
getImageAlbumWorkInfo: createBoundDouyinApiMethod("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2672
2697
|
/**
|
|
2673
2698
|
* 获取合辑作品数据
|
|
2674
2699
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2675
2700
|
* @returns 统一格式的API响应,包含合辑作品详细信息
|
|
2676
2701
|
*/
|
|
2677
|
-
getSlidesWorkInfo: createBoundDouyinApiMethod("\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie),
|
|
2702
|
+
getSlidesWorkInfo: createBoundDouyinApiMethod("\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2678
2703
|
/**
|
|
2679
2704
|
* 获取评论数据
|
|
2680
2705
|
* @param options 请求参数,包含 aweme_id, 可选的 number, cursor 和 typeMode
|
|
2681
2706
|
* @returns 统一格式的API响应,包含评论列表数据
|
|
2682
2707
|
*/
|
|
2683
|
-
getComments: createBoundDouyinApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie),
|
|
2708
|
+
getComments: createBoundDouyinApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig),
|
|
2684
2709
|
/**
|
|
2685
2710
|
* 获取指定评论回复数据
|
|
2686
2711
|
* @param options 请求参数,包含 aweme_id, comment_id, 可选的 number, cursor 和 typeMode
|
|
2687
2712
|
* @returns 统一格式的API响应,包含评论回复数据
|
|
2688
2713
|
*/
|
|
2689
|
-
getCommentReplies: createBoundDouyinApiMethod("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie),
|
|
2714
|
+
getCommentReplies: createBoundDouyinApiMethod("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie, requestConfig),
|
|
2690
2715
|
/**
|
|
2691
2716
|
* 获取用户主页数据
|
|
2692
2717
|
* @param options 请求参数,包含 sec_uid 和可选的 typeMode
|
|
2693
2718
|
* @returns 统一格式的API响应,包含用户详细信息
|
|
2694
2719
|
*/
|
|
2695
|
-
getUserProfile: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie),
|
|
2720
|
+
getUserProfile: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig),
|
|
2696
2721
|
/**
|
|
2697
2722
|
* 获取 Emoji 数据
|
|
2698
2723
|
* @param options 可选的请求参数 (主要用于 typeMode)
|
|
2699
2724
|
* @returns 统一格式的API响应,包含Emoji列表数据
|
|
2700
2725
|
*/
|
|
2701
|
-
getEmojiList: createBoundDouyinApiMethod("Emoji\u6570\u636E", cookie),
|
|
2726
|
+
getEmojiList: createBoundDouyinApiMethod("Emoji\u6570\u636E", cookie, requestConfig),
|
|
2702
2727
|
/**
|
|
2703
2728
|
* 获取动态表情数据
|
|
2704
2729
|
* @param options 可选的请求参数 (主要用于 typeMode)
|
|
2705
2730
|
* @returns 统一格式的API响应,包含动态表情数据
|
|
2706
2731
|
*/
|
|
2707
|
-
getEmojiProList: createBoundDouyinApiMethod("\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie),
|
|
2732
|
+
getEmojiProList: createBoundDouyinApiMethod("\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie, requestConfig),
|
|
2708
2733
|
/**
|
|
2709
2734
|
* 获取用户主页视频列表数据
|
|
2710
2735
|
* @param options 请求参数,包含 sec_uid, 可选的 number, max_cursor 和 typeMode
|
|
2711
2736
|
* @returns 统一格式的API响应,包含用户发布的视频列表
|
|
2712
2737
|
*/
|
|
2713
|
-
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),
|
|
2714
2739
|
/**
|
|
2715
2740
|
* 获取音乐数据
|
|
2716
2741
|
* @param options 请求参数,包含 music_id 和可选的 typeMode
|
|
2717
2742
|
* @returns 统一格式的API响应,包含音乐详细信息
|
|
2718
2743
|
*/
|
|
2719
|
-
getMusicInfo: createBoundDouyinApiMethod("\u97F3\u4E50\u6570\u636E", cookie),
|
|
2744
|
+
getMusicInfo: createBoundDouyinApiMethod("\u97F3\u4E50\u6570\u636E", cookie, requestConfig),
|
|
2720
2745
|
/**
|
|
2721
2746
|
* 获取热点词数据
|
|
2722
2747
|
* @param options 请求参数,包含 query, 可选的 number 和 typeMode
|
|
2723
2748
|
* @returns 统一格式的API响应,包含热点搜索词列表
|
|
2724
2749
|
*/
|
|
2725
|
-
getSuggestWords: createBoundDouyinApiMethod("\u70ED\u70B9\u8BCD\u6570\u636E", cookie),
|
|
2750
|
+
getSuggestWords: createBoundDouyinApiMethod("\u70ED\u70B9\u8BCD\u6570\u636E", cookie, requestConfig),
|
|
2726
2751
|
/**
|
|
2727
2752
|
* 获取搜索数据
|
|
2728
2753
|
* @param options 请求参数,包含 query, 可选的 number, search_id, cursor 和 typeMode
|
|
2729
2754
|
* @returns 统一格式的API响应,包含搜索结果数据
|
|
2730
2755
|
*/
|
|
2731
|
-
search: createBoundDouyinApiMethod("\u641C\u7D22\u6570\u636E", cookie),
|
|
2756
|
+
search: createBoundDouyinApiMethod("\u641C\u7D22\u6570\u636E", cookie, requestConfig),
|
|
2732
2757
|
/**
|
|
2733
2758
|
* 获取直播间信息
|
|
2734
2759
|
* @param options 请求参数,包含 sec_uid 和可选的 typeMode
|
|
2735
2760
|
* @returns 统一格式的API响应,包含直播间详细信息
|
|
2736
2761
|
*/
|
|
2737
|
-
getLiveRoomInfo: createBoundDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie)
|
|
2762
|
+
getLiveRoomInfo: createBoundDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2738
2763
|
};
|
|
2739
2764
|
};
|
|
2740
|
-
var createDouyinRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
2765
|
+
var createDouyinRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getDouyinDefaultConfig(cookie)) => {
|
|
2741
2766
|
return async (req, res) => {
|
|
2742
2767
|
try {
|
|
2743
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
2768
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2744
2769
|
res.json({
|
|
2745
2770
|
...result,
|
|
2746
2771
|
requestPath: req.originalUrl
|
|
@@ -2754,77 +2779,77 @@ var createDouyinRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2754
2779
|
}
|
|
2755
2780
|
};
|
|
2756
2781
|
};
|
|
2757
|
-
var createDouyinRoutes = (cookie) => {
|
|
2782
|
+
var createDouyinRoutes = (cookie, requestConfig = getDouyinDefaultConfig(cookie)) => {
|
|
2758
2783
|
const router = Router();
|
|
2759
2784
|
router.get(
|
|
2760
2785
|
"/fetch_one_work",
|
|
2761
2786
|
createDouyinValidationMiddleware("\u805A\u5408\u89E3\u6790"),
|
|
2762
|
-
createDouyinRouteHandler(getDouyinData, "\u805A\u5408\u89E3\u6790", cookie)
|
|
2787
|
+
createDouyinRouteHandler(getDouyinData, "\u805A\u5408\u89E3\u6790", cookie, requestConfig)
|
|
2763
2788
|
);
|
|
2764
2789
|
router.get(
|
|
2765
2790
|
"/fetch_one_work",
|
|
2766
2791
|
createDouyinValidationMiddleware("\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2767
|
-
createDouyinRouteHandler(getDouyinData, "\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2792
|
+
createDouyinRouteHandler(getDouyinData, "\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2768
2793
|
);
|
|
2769
2794
|
router.get(
|
|
2770
2795
|
"/fetch_one_work",
|
|
2771
2796
|
createDouyinValidationMiddleware("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E"),
|
|
2772
|
-
createDouyinRouteHandler(getDouyinData, "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2797
|
+
createDouyinRouteHandler(getDouyinData, "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2773
2798
|
);
|
|
2774
2799
|
router.get(
|
|
2775
2800
|
"/fetch_one_work",
|
|
2776
2801
|
createDouyinValidationMiddleware("\u5408\u8F91\u4F5C\u54C1\u6570\u636E"),
|
|
2777
|
-
createDouyinRouteHandler(getDouyinData, "\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2802
|
+
createDouyinRouteHandler(getDouyinData, "\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2778
2803
|
);
|
|
2779
2804
|
router.get(
|
|
2780
2805
|
"/fetch_work_comments",
|
|
2781
2806
|
createDouyinValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2782
|
-
createDouyinRouteHandler(getDouyinData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
2807
|
+
createDouyinRouteHandler(getDouyinData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2783
2808
|
);
|
|
2784
2809
|
router.get(
|
|
2785
2810
|
"/fetch_user_info",
|
|
2786
2811
|
createDouyinValidationMiddleware("\u7528\u6237\u4E3B\u9875\u6570\u636E"),
|
|
2787
|
-
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie)
|
|
2812
|
+
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig)
|
|
2788
2813
|
);
|
|
2789
2814
|
router.get(
|
|
2790
2815
|
"/fetch_user_post_videos",
|
|
2791
2816
|
createDouyinValidationMiddleware("\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E"),
|
|
2792
|
-
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)
|
|
2793
2818
|
);
|
|
2794
2819
|
router.get(
|
|
2795
2820
|
"/fetch_search_info",
|
|
2796
2821
|
createDouyinValidationMiddleware("\u641C\u7D22\u6570\u636E"),
|
|
2797
|
-
createDouyinRouteHandler(getDouyinData, "\u641C\u7D22\u6570\u636E", cookie)
|
|
2822
|
+
createDouyinRouteHandler(getDouyinData, "\u641C\u7D22\u6570\u636E", cookie, requestConfig)
|
|
2798
2823
|
);
|
|
2799
2824
|
router.get(
|
|
2800
2825
|
"/fetch_suggest_words",
|
|
2801
2826
|
createDouyinValidationMiddleware("\u70ED\u70B9\u8BCD\u6570\u636E"),
|
|
2802
|
-
createDouyinRouteHandler(getDouyinData, "\u70ED\u70B9\u8BCD\u6570\u636E", cookie)
|
|
2827
|
+
createDouyinRouteHandler(getDouyinData, "\u70ED\u70B9\u8BCD\u6570\u636E", cookie, requestConfig)
|
|
2803
2828
|
);
|
|
2804
2829
|
router.get(
|
|
2805
2830
|
"/fetch_music_work",
|
|
2806
2831
|
createDouyinValidationMiddleware("\u97F3\u4E50\u6570\u636E"),
|
|
2807
|
-
createDouyinRouteHandler(getDouyinData, "\u97F3\u4E50\u6570\u636E", cookie)
|
|
2832
|
+
createDouyinRouteHandler(getDouyinData, "\u97F3\u4E50\u6570\u636E", cookie, requestConfig)
|
|
2808
2833
|
);
|
|
2809
2834
|
router.get(
|
|
2810
2835
|
"/fetch_emoji_list",
|
|
2811
2836
|
createDouyinValidationMiddleware("Emoji\u6570\u636E"),
|
|
2812
|
-
createDouyinRouteHandler(getDouyinData, "Emoji\u6570\u636E", cookie)
|
|
2837
|
+
createDouyinRouteHandler(getDouyinData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2813
2838
|
);
|
|
2814
2839
|
router.get(
|
|
2815
2840
|
"/fetch_emoji_pro_list",
|
|
2816
2841
|
createDouyinValidationMiddleware("\u52A8\u6001\u8868\u60C5\u6570\u636E"),
|
|
2817
|
-
createDouyinRouteHandler(getDouyinData, "\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie)
|
|
2842
|
+
createDouyinRouteHandler(getDouyinData, "\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie, requestConfig)
|
|
2818
2843
|
);
|
|
2819
2844
|
router.get(
|
|
2820
2845
|
"/fetch_user_live_videos",
|
|
2821
2846
|
createDouyinValidationMiddleware("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E"),
|
|
2822
|
-
createDouyinRouteHandler(getDouyinData, "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie)
|
|
2847
|
+
createDouyinRouteHandler(getDouyinData, "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2823
2848
|
);
|
|
2824
2849
|
router.get(
|
|
2825
2850
|
"/fetch_video_comment_replies",
|
|
2826
2851
|
createDouyinValidationMiddleware("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E"),
|
|
2827
|
-
createDouyinRouteHandler(getDouyinData, "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie)
|
|
2852
|
+
createDouyinRouteHandler(getDouyinData, "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie, requestConfig)
|
|
2828
2853
|
);
|
|
2829
2854
|
return router;
|
|
2830
2855
|
};
|
|
@@ -2835,10 +2860,10 @@ var douyinUtils = {
|
|
|
2835
2860
|
douyinApiUrls,
|
|
2836
2861
|
api: douyin
|
|
2837
2862
|
};
|
|
2838
|
-
var createKuaishouRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
2863
|
+
var createKuaishouRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getKuaishouDefaultConfig(cookie)) => {
|
|
2839
2864
|
return async (req, res) => {
|
|
2840
2865
|
try {
|
|
2841
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
2866
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2842
2867
|
res.json({
|
|
2843
2868
|
...result,
|
|
2844
2869
|
requestPath: req.originalUrl
|
|
@@ -2852,22 +2877,22 @@ var createKuaishouRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2852
2877
|
}
|
|
2853
2878
|
};
|
|
2854
2879
|
};
|
|
2855
|
-
var createKuaishouRoutes = (cookie) => {
|
|
2880
|
+
var createKuaishouRoutes = (cookie, requestConfig = getKuaishouDefaultConfig(cookie)) => {
|
|
2856
2881
|
const router = Router();
|
|
2857
2882
|
router.get(
|
|
2858
2883
|
"/fetch_one_work",
|
|
2859
2884
|
createKuaishouValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2860
|
-
createKuaishouRouteHandler(getKuaishouData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2885
|
+
createKuaishouRouteHandler(getKuaishouData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2861
2886
|
);
|
|
2862
2887
|
router.get(
|
|
2863
2888
|
"/fetch_work_comments",
|
|
2864
2889
|
createKuaishouValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2865
|
-
createKuaishouRouteHandler(getKuaishouData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
2890
|
+
createKuaishouRouteHandler(getKuaishouData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2866
2891
|
);
|
|
2867
2892
|
router.get(
|
|
2868
2893
|
"/fetch_emoji_list",
|
|
2869
2894
|
createKuaishouValidationMiddleware("Emoji\u6570\u636E"),
|
|
2870
|
-
createKuaishouRouteHandler(getKuaishouData, "Emoji\u6570\u636E", cookie)
|
|
2895
|
+
createKuaishouRouteHandler(getKuaishouData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2871
2896
|
);
|
|
2872
2897
|
return router;
|
|
2873
2898
|
};
|
|
@@ -2906,7 +2931,7 @@ var kuaishou = {
|
|
|
2906
2931
|
*/
|
|
2907
2932
|
getEmojiList: createKuaishouApiMethod("Emoji\u6570\u636E")
|
|
2908
2933
|
};
|
|
2909
|
-
var createBoundKuaishouApi = (cookie) => {
|
|
2934
|
+
var createBoundKuaishouApi = (cookie, requestConfig) => {
|
|
2910
2935
|
return {
|
|
2911
2936
|
/**
|
|
2912
2937
|
* 获取单个视频作品数据
|
|
@@ -2934,161 +2959,83 @@ var kuaishouUtils = {
|
|
|
2934
2959
|
kuaishouApiUrls,
|
|
2935
2960
|
api: kuaishou
|
|
2936
2961
|
};
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
options = arg3;
|
|
2945
|
-
} else {
|
|
2946
|
-
options = arg2;
|
|
2947
|
-
cookie = arg3;
|
|
2948
|
-
}
|
|
2949
|
-
const data2 = await DouyinData({ ...options, methodType: type }, cookie);
|
|
2950
|
-
return data2;
|
|
2951
|
-
}
|
|
2952
|
-
async function getBilibiliData2(methodType, arg2, arg3) {
|
|
2953
|
-
let cookie;
|
|
2954
|
-
let options;
|
|
2955
|
-
if (typeof arg2 === "string") {
|
|
2956
|
-
cookie = arg2;
|
|
2957
|
-
options = arg3;
|
|
2958
|
-
} else {
|
|
2959
|
-
options = arg2;
|
|
2960
|
-
cookie = arg3;
|
|
2961
|
-
}
|
|
2962
|
-
const data2 = await fetchBilibili({ ...options, methodType }, cookie);
|
|
2963
|
-
return data2;
|
|
2964
|
-
}
|
|
2965
|
-
async function getKuaishouData2(methodType, arg2, arg3) {
|
|
2966
|
-
let cookie;
|
|
2967
|
-
let options;
|
|
2968
|
-
if (typeof arg2 === "string") {
|
|
2969
|
-
cookie = arg2;
|
|
2970
|
-
options = arg3;
|
|
2971
|
-
} else {
|
|
2972
|
-
options = arg2;
|
|
2973
|
-
cookie = arg3;
|
|
2974
|
-
}
|
|
2975
|
-
const data2 = await KuaishouData({ ...options, methodType }, cookie);
|
|
2976
|
-
return data2;
|
|
2977
|
-
}
|
|
2978
|
-
var fetchDouyinData = getDouyinData2;
|
|
2979
|
-
var fetchBilibiliData = getBilibiliData2;
|
|
2980
|
-
var fetchKuaishouData = getKuaishouData2;
|
|
2981
|
-
var v4CompatibilityMiddleware = (req, res, next) => {
|
|
2982
|
-
const originalJson = res.json;
|
|
2983
|
-
res.json = (data2) => {
|
|
2984
|
-
if (data2 && typeof data2 === "object" && "data" in data2 && "message" in data2 && "code" in data2) {
|
|
2985
|
-
const v4Response = {
|
|
2986
|
-
...data2.data,
|
|
2987
|
-
...data2.requestPath && { requestPath: data2.requestPath }
|
|
2988
|
-
};
|
|
2989
|
-
return originalJson.call(void 0, v4Response);
|
|
2990
|
-
}
|
|
2991
|
-
return originalJson.call(void 0, data2);
|
|
2992
|
-
};
|
|
2993
|
-
next();
|
|
2994
|
-
};
|
|
2995
|
-
var amagiClient = class {
|
|
2996
|
-
#douyin;
|
|
2997
|
-
#bilibili;
|
|
2998
|
-
#kuaishou;
|
|
2999
|
-
/**
|
|
3000
|
-
*
|
|
3001
|
-
* @param cookie - 包含抖音ck、B站ck、快手ck的对象
|
|
3002
|
-
*/
|
|
3003
|
-
constructor(options) {
|
|
3004
|
-
this.#douyin = (options == null ? void 0 : options.douyin) ?? "";
|
|
3005
|
-
this.#bilibili = (options == null ? void 0 : options.bilibili) ?? "";
|
|
3006
|
-
this.#kuaishou = (options == null ? void 0 : options.kuaishou) ?? "";
|
|
3007
|
-
}
|
|
3008
|
-
/**
|
|
3009
|
-
* 启动本地 HTTP 服务
|
|
3010
|
-
* @param port - 监听端口
|
|
3011
|
-
* @defaultValue `port` 4567
|
|
3012
|
-
* @returns Express 应用实例
|
|
3013
|
-
*/
|
|
3014
|
-
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) => {
|
|
3015
2969
|
const app = express();
|
|
2970
|
+
app.use(express.json());
|
|
2971
|
+
app.use(express.urlencoded({ extended: true }));
|
|
3016
2972
|
app.get("/", (_req, res) => {
|
|
3017
2973
|
res.redirect(301, "https://amagi.apifox.cn");
|
|
3018
2974
|
});
|
|
3019
2975
|
app.get("/docs", (_req, res) => {
|
|
3020
2976
|
res.redirect(301, "https://amagi.apifox.cn");
|
|
3021
2977
|
});
|
|
3022
|
-
app.use(
|
|
3023
|
-
app.use("/api/
|
|
3024
|
-
app.use("/api/
|
|
3025
|
-
app.use("/api/kuaishou", v4CompatibilityMiddleware);
|
|
3026
|
-
app.use("/api/douyin", createDouyinRoutes(this.#douyin));
|
|
3027
|
-
app.use("/api/bilibili", createBilibiliRoutes(this.#bilibili));
|
|
3028
|
-
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));
|
|
3029
2981
|
app.listen(port, "::", () => {
|
|
3030
2982
|
logger.mark(`Amagi server listening on ${logger.green(`http://localhost:${port}`)} ${logger.yellow("API docs: https://amagi.apifox.cn ")}`);
|
|
3031
2983
|
});
|
|
3032
2984
|
return app;
|
|
3033
2985
|
};
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
* @param type - 请求数据类型
|
|
3037
|
-
* @param options - 请求参数,是一个对象
|
|
3038
|
-
* @returns 返回接口的原始数据
|
|
3039
|
-
*/
|
|
3040
|
-
getDouyinData = async (methodType, options) => {
|
|
3041
|
-
const fullOptions = {
|
|
3042
|
-
methodType,
|
|
3043
|
-
...options
|
|
3044
|
-
};
|
|
3045
|
-
const result = await getDouyinData2(methodType, this.#douyin, fullOptions);
|
|
3046
|
-
return result && typeof result === "object" && "data" in result ? result.data : result;
|
|
2986
|
+
const startClient = (port = 4567) => {
|
|
2987
|
+
return startServer(port);
|
|
3047
2988
|
};
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
* @param type - 请求数据类型
|
|
3051
|
-
* @param options - 请求参数,是一个对象
|
|
3052
|
-
* @returns 返回接口的原始数据
|
|
3053
|
-
*/
|
|
3054
|
-
getBilibiliData = async (methodType, options) => {
|
|
3055
|
-
const fullOptions = {
|
|
3056
|
-
methodType,
|
|
3057
|
-
...options
|
|
3058
|
-
};
|
|
3059
|
-
const result = await getBilibiliData2(methodType, this.#bilibili, fullOptions);
|
|
3060
|
-
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);
|
|
3061
2991
|
};
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
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
|
+
}
|
|
3075
3021
|
};
|
|
3076
3022
|
};
|
|
3077
3023
|
|
|
3078
3024
|
// src/index.ts
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3025
|
+
var amagiClient = createAmagiClient;
|
|
3026
|
+
function CreateAmagiApp(options = {}) {
|
|
3027
|
+
if (!(this instanceof CreateAmagiApp)) {
|
|
3028
|
+
return createAmagiClient(options);
|
|
3082
3029
|
}
|
|
3083
|
-
return
|
|
3030
|
+
return createAmagiClient(options);
|
|
3084
3031
|
}
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
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;
|
|
3092
3039
|
var Client = CreateApp;
|
|
3093
3040
|
var amagi = Client;
|
|
3094
3041
|
/*!
|
|
@@ -3097,4 +3044,4 @@ var amagi = Client;
|
|
|
3097
3044
|
* GPL-3.0 Licensed
|
|
3098
3045
|
*/
|
|
3099
3046
|
|
|
3100
|
-
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 };
|