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