@ikenxuan/amagi 5.4.2 → 5.5.1

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.
@@ -10,6 +10,7 @@ var fs = require('fs');
10
10
  var axios = require('axios');
11
11
  var crypto = require('crypto');
12
12
  var zod = require('zod');
13
+ var xhshowTs = require('@ikenxuan/xhshow-ts');
13
14
  var express = require('express');
14
15
 
15
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -27,7 +28,7 @@ var express__default = /*#__PURE__*/_interopDefault(express);
27
28
  * GPL-3.0 Licensed
28
29
  */
29
30
 
30
- // node_modules/.pnpm/tsup@8.5.0_@swc+core@1.13.5_tsx@4.20.5_typescript@5.9.2_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js
31
+ // node_modules/.pnpm/tsup@8.5.0_@swc+core@1.13.20_tsx@4.20.6_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js
31
32
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
32
33
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
33
34
  var getPackageLogsPath = () => {
@@ -356,6 +357,16 @@ var kuaishouAPIErrorCode = /* @__PURE__ */ ((kuaishouAPIErrorCode2) => {
356
357
  kuaishouAPIErrorCode2["UNKNOWN"] = "UNKNOWN_ERROR" /* UNKNOWN */;
357
358
  return kuaishouAPIErrorCode2;
358
359
  })(kuaishouAPIErrorCode || {});
360
+ var xiaohongshuAPIErrorCode = /* @__PURE__ */ ((xiaohongshuAPIErrorCode2) => {
361
+ xiaohongshuAPIErrorCode2["COOKIE"] = "INVALID_COOKIE";
362
+ xiaohongshuAPIErrorCode2["UNKNOWN"] = "UNKNOWN_ERROR" /* UNKNOWN */;
363
+ xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["ILLEGAL_REQUEST"] = 500] = "ILLEGAL_REQUEST";
364
+ xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["ACCOUNT_ABNORMAL"] = 300011] = "ACCOUNT_ABNORMAL";
365
+ xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["NETWORK_ERROR"] = 300012] = "NETWORK_ERROR";
366
+ xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["FREQUENCY_ERROR"] = 300013] = "FREQUENCY_ERROR";
367
+ xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["BROWSER_ERROR"] = 300015] = "BROWSER_ERROR";
368
+ return xiaohongshuAPIErrorCode2;
369
+ })(xiaohongshuAPIErrorCode || {});
359
370
  var mixinKeyEncTab = [
360
371
  46,
361
372
  47,
@@ -547,6 +558,27 @@ var getKuaishouDefaultConfig = (cookie, requestConfig) => {
547
558
  }
548
559
  };
549
560
  };
561
+ var getXiaohongshuDefaultConfig = (cookie) => {
562
+ return {
563
+ headers: {
564
+ "accept": "application/json, text/plain, */*",
565
+ "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
566
+ "cache-control": "no-cache",
567
+ "content-type": "application/json;charset=UTF-8",
568
+ "pragma": "no-cache",
569
+ "priority": "u=1, i",
570
+ "referer": "https://www.xiaohongshu.com/",
571
+ "sec-ch-ua": '"Microsoft Edge";v="141", "Not?A_Brand";v="8", "Chromium";v="141"',
572
+ "sec-ch-ua-mobile": "?0",
573
+ "sec-ch-ua-platform": '"Windows"',
574
+ "sec-fetch-dest": "empty",
575
+ "sec-fetch-mode": "cors",
576
+ "sec-fetch-site": "same-site",
577
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0",
578
+ "cookie": cookie || ""
579
+ }
580
+ };
581
+ };
550
582
 
551
583
  // src/platform/bilibili/getdata.ts
552
584
  var fetchBilibili = async (data2, cookie, requestConfig) => {
@@ -2343,75 +2375,84 @@ var GlobalGetData3 = async (type, options) => {
2343
2375
  };
2344
2376
  function smartNumber(errorMessage, minValue = 1, isInteger = false) {
2345
2377
  if (isInteger) {
2346
- return zod.z.coerce.number({ required_error: errorMessage }).int(`${errorMessage.replace("\u4E0D\u80FD\u4E3A\u7A7A", "")}\u5FC5\u987B\u662F\u6574\u6570\uFF0C\u4E0D\u80FD\u5305\u542B\u5C0F\u6570`).min(minValue, `${errorMessage.replace("\u4E0D\u80FD\u4E3A\u7A7A", "")}\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E${minValue}`);
2378
+ return zod.z.coerce.number({ error: errorMessage }).int({ error: `${errorMessage.replace("\u4E0D\u80FD\u4E3A\u7A7A", "")}\u5FC5\u987B\u662F\u6574\u6570\uFF0C\u4E0D\u80FD\u5305\u542B\u5C0F\u6570` }).min(minValue, { error: `${errorMessage.replace("\u4E0D\u80FD\u4E3A\u7A7A", "")}\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E${minValue}` });
2347
2379
  } else {
2348
- return zod.z.coerce.number({ required_error: errorMessage }).min(minValue, `${errorMessage.replace("\u4E0D\u80FD\u4E3A\u7A7A", "")}\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E${minValue}`);
2380
+ return zod.z.coerce.number({ error: errorMessage }).min(minValue, { error: `${errorMessage.replace("\u4E0D\u80FD\u4E3A\u7A7A", "")}\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E${minValue}` });
2349
2381
  }
2350
2382
  }
2351
2383
  var smartPositiveInteger = (errorMessage) => {
2352
2384
  return smartNumber(errorMessage, 1, true);
2353
2385
  };
2386
+ var extractCreatorInfoFromHtml = (html) => {
2387
+ var _a;
2388
+ const match = html.match(/<script>window\.__INITIAL_STATE__=(.+)<\/script>/m);
2389
+ if (!match) {
2390
+ return null;
2391
+ }
2392
+ try {
2393
+ const jsonStr = match[1].replace(/:undefined/g, ":null");
2394
+ const info = JSON.parse(jsonStr);
2395
+ return ((_a = info == null ? void 0 : info.user) == null ? void 0 : _a.userPageData) || null;
2396
+ } catch (error) {
2397
+ console.error("\u89E3\u6790\u7528\u6237\u4FE1\u606F\u5931\u8D25:", error);
2398
+ return null;
2399
+ }
2400
+ };
2354
2401
 
2355
2402
  // src/validation/douyin.ts
2356
2403
  var DouyinWorkParamsSchema = zod.z.object({
2357
2404
  methodType: zod.z.enum(["\u6587\u5B57\u4F5C\u54C1\u6570\u636E", "\u89C6\u9891\u4F5C\u54C1\u6570\u636E", "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", "\u5408\u8F91\u4F5C\u54C1\u6570\u636E", "\u805A\u5408\u89E3\u6790"], {
2358
- invalid_type_error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00",
2359
- required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
2405
+ error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00"
2360
2406
  }),
2361
- aweme_id: zod.z.string({ required_error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A")
2407
+ aweme_id: zod.z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" })
2362
2408
  });
2363
2409
  var DouyinCommentParamsSchema = zod.z.object({
2364
- methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
2365
- aweme_id: zod.z.string({ required_error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A"),
2410
+ methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
2411
+ aweme_id: zod.z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" }),
2366
2412
  number: smartPositiveInteger("\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6574\u6570").optional().default(50),
2367
- cursor: zod.z.coerce.number({ invalid_type_error: "\u6E38\u6807\u5FC5\u987B\u662F\u6570\u5B57" }).int({ message: "\u6E38\u6807\u5FC5\u987B\u662F\u6574\u6570" }).min(0, "\u6E38\u6807\u4E0D\u80FD\u5C0F\u4E8E0").default(0).optional()
2413
+ cursor: zod.z.coerce.number({ error: "\u6E38\u6807\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "\u6E38\u6807\u5FC5\u987B\u662F\u6574\u6570" }).min(0, { error: "\u6E38\u6807\u4E0D\u80FD\u5C0F\u4E8E0" }).default(0).optional()
2368
2414
  });
2369
2415
  var DouyinSearchParamsSchema = zod.z.object({
2370
2416
  methodType: zod.z.enum(["\u70ED\u70B9\u8BCD\u6570\u636E", "\u641C\u7D22\u6570\u636E"], {
2371
- invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u70ED\u70B9\u8BCD\u6570\u636E"\u6216"\u641C\u7D22\u6570\u636E"',
2372
- required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
2417
+ error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u70ED\u70B9\u8BCD\u6570\u636E"\u6216"\u641C\u7D22\u6570\u636E"'
2373
2418
  }),
2374
- query: zod.z.string({ required_error: "\u641C\u7D22\u8BCD\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u641C\u7D22\u8BCD\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u641C\u7D22\u8BCD\u4E0D\u80FD\u4E3A\u7A7A"),
2419
+ query: zod.z.string({ error: "\u641C\u7D22\u8BCD\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u641C\u7D22\u8BCD\u4E0D\u80FD\u4E3A\u7A7A" }),
2375
2420
  number: smartPositiveInteger("\u641C\u7D22\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6574\u6570").optional().default(10),
2376
- search_id: zod.z.string({ invalid_type_error: "\u641C\u7D22ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
2421
+ search_id: zod.z.string({ error: "\u641C\u7D22ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
2377
2422
  });
2378
2423
  var DouyinCommentReplyParamsSchema = zod.z.object({
2379
- methodType: zod.z.literal("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E"' }),
2380
- aweme_id: zod.z.string({ required_error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A"),
2381
- comment_id: zod.z.string({ required_error: "\u8BC4\u8BBAID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u8BC4\u8BBAID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u8BC4\u8BBAID\u4E0D\u80FD\u4E3A\u7A7A"),
2424
+ methodType: zod.z.literal("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E"' }),
2425
+ aweme_id: zod.z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" }),
2426
+ comment_id: zod.z.string({ error: "\u8BC4\u8BBAID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u8BC4\u8BBAID\u4E0D\u80FD\u4E3A\u7A7A" }),
2382
2427
  number: smartPositiveInteger("\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6574\u6570").optional().default(5),
2383
- cursor: zod.z.coerce.number({ invalid_type_error: "\u6E38\u6807\u5FC5\u987B\u662F\u6570\u5B57" }).int({ message: "\u6E38\u6807\u5FC5\u987B\u662F\u6574\u6570" }).min(0, "\u6E38\u6807\u4E0D\u80FD\u5C0F\u4E8E0").default(0).optional()
2428
+ cursor: zod.z.coerce.number({ error: "\u6E38\u6807\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "\u6E38\u6807\u5FC5\u987B\u662F\u6574\u6570" }).min(0, { error: "\u6E38\u6807\u4E0D\u80FD\u5C0F\u4E8E0" }).default(0).optional()
2384
2429
  });
2385
2430
  var DouyinUserParamsSchema = zod.z.object({
2386
2431
  methodType: zod.z.enum(["\u7528\u6237\u4E3B\u9875\u6570\u636E", "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E"], {
2387
- invalid_type_error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00",
2388
- required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
2432
+ error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00"
2389
2433
  }),
2390
- sec_uid: zod.z.string({ required_error: "\u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u7528\u6237ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A")
2434
+ sec_uid: zod.z.string({ error: "\u7528\u6237ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A" })
2391
2435
  });
2392
2436
  var DouyinMusicParamsSchema = zod.z.object({
2393
- methodType: zod.z.literal("\u97F3\u4E50\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u97F3\u4E50\u6570\u636E"' }),
2394
- music_id: zod.z.string({ required_error: "\u97F3\u4E50ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u97F3\u4E50ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u97F3\u4E50ID\u4E0D\u80FD\u4E3A\u7A7A")
2437
+ methodType: zod.z.literal("\u97F3\u4E50\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u97F3\u4E50\u6570\u636E"' }),
2438
+ music_id: zod.z.string({ error: "\u97F3\u4E50ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u97F3\u4E50ID\u4E0D\u80FD\u4E3A\u7A7A" })
2395
2439
  });
2396
2440
  var DouyinQrcodeParamsSchema = zod.z.object({
2397
- methodType: zod.z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E"' }),
2398
- verify_fp: zod.z.string({ required_error: "fp\u6307\u7EB9\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "fp\u6307\u7EB9\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "fp\u6307\u7EB9\u4E0D\u80FD\u4E3A\u7A7A")
2441
+ methodType: zod.z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E"' }),
2442
+ verify_fp: zod.z.string({ error: "fp\u6307\u7EB9\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "fp\u6307\u7EB9\u4E0D\u80FD\u4E3A\u7A7A" })
2399
2443
  });
2400
2444
  var DouyinEmojiListParamsSchema = zod.z.object({
2401
- methodType: zod.z.literal("Emoji\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
2445
+ methodType: zod.z.literal("Emoji\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
2402
2446
  });
2403
2447
  var DouyinEmojiProParamsSchema = zod.z.object({
2404
- methodType: zod.z.literal("\u52A8\u6001\u8868\u60C5\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u52A8\u6001\u8868\u60C5\u6570\u636E"' })
2448
+ methodType: zod.z.literal("\u52A8\u6001\u8868\u60C5\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u52A8\u6001\u8868\u60C5\u6570\u636E"' })
2405
2449
  });
2406
2450
  var DouyinDanmakuParamsSchema = zod.z.object({
2407
- methodType: zod.z.literal("\u5F39\u5E55\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5F39\u5E55\u6570\u636E"' }),
2408
- aweme_id: zod.z.string({ required_error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A"),
2409
- start_time: zod.z.coerce.number({ invalid_type_error: "\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u662F\u6570\u5B57" }).int({ message: "\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u662F\u6574\u6570" }).min(0, "\u5F00\u59CB\u65F6\u95F4\u4E0D\u80FD\u5C0F\u4E8E0").optional(),
2410
- end_time: zod.z.coerce.number({ invalid_type_error: "\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u662F\u6570\u5B57" }).int({ message: "\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u662F\u6574\u6570" }).min(0, "\u7ED3\u675F\u65F6\u95F4\u4E0D\u80FD\u5C0F\u4E8E0").optional(),
2411
- duration: zod.z.number({
2412
- required_error: "\u89C6\u9891\u65F6\u957F\u4E0D\u80FD\u4E3A\u7A7A",
2413
- invalid_type_error: "\u89C6\u9891\u65F6\u957F\u5FC5\u987B\u662F\u6570\u5B57"
2414
- }).int({ message: "\u89C6\u9891\u65F6\u957F\u5FC5\u987B\u662F\u6574\u6570" }).min(0, "\u89C6\u9891\u65F6\u957F\u4E0D\u80FD\u5C0F\u4E8E0")
2451
+ methodType: zod.z.literal("\u5F39\u5E55\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5F39\u5E55\u6570\u636E"' }),
2452
+ aweme_id: zod.z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" }),
2453
+ start_time: zod.z.coerce.number({ error: "\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u662F\u6574\u6570" }).min(0, { error: "\u5F00\u59CB\u65F6\u95F4\u4E0D\u80FD\u5C0F\u4E8E0" }).optional(),
2454
+ end_time: zod.z.coerce.number({ error: "\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u662F\u6574\u6570" }).min(0, { error: "\u7ED3\u675F\u65F6\u95F4\u4E0D\u80FD\u5C0F\u4E8E0" }).optional(),
2455
+ duration: zod.z.number({ error: "\u89C6\u9891\u65F6\u957F\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "\u89C6\u9891\u65F6\u957F\u5FC5\u987B\u662F\u6574\u6570" }).min(0, { error: "\u89C6\u9891\u65F6\u957F\u4E0D\u80FD\u5C0F\u4E8E0" })
2415
2456
  }).refine(
2416
2457
  (data2) => {
2417
2458
  if (data2.end_time !== void 0) {
@@ -2420,7 +2461,7 @@ var DouyinDanmakuParamsSchema = zod.z.object({
2420
2461
  return true;
2421
2462
  },
2422
2463
  {
2423
- message: "\u83B7\u53D6\u5F39\u5E55\u533A\u95F4\u7684\u7ED3\u675F\u65F6\u95F4\u4E0D\u80FD\u8D85\u8FC7\u89C6\u9891\u603B\u65F6\u957F",
2464
+ error: "\u83B7\u53D6\u5F39\u5E55\u533A\u95F4\u7684\u7ED3\u675F\u65F6\u95F4\u4E0D\u80FD\u8D85\u8FC7\u89C6\u9891\u603B\u65F6\u957F",
2424
2465
  path: ["end_time"]
2425
2466
  }
2426
2467
  ).refine(
@@ -2431,7 +2472,7 @@ var DouyinDanmakuParamsSchema = zod.z.object({
2431
2472
  return true;
2432
2473
  },
2433
2474
  {
2434
- message: "\u83B7\u53D6\u5F39\u5E55\u533A\u95F4\u7684\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u5C0F\u4E8E\u7ED3\u675F\u65F6\u95F4",
2475
+ error: "\u83B7\u53D6\u5F39\u5E55\u533A\u95F4\u7684\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u5C0F\u4E8E\u7ED3\u675F\u65F6\u95F4",
2435
2476
  path: ["start_time"]
2436
2477
  }
2437
2478
  );
@@ -2455,84 +2496,78 @@ var DouyinValidationSchemas2 = {
2455
2496
  "\u5F39\u5E55\u6570\u636E": DouyinDanmakuParamsSchema
2456
2497
  };
2457
2498
  var BilibiliVideoParamsSchema = zod.z.object({
2458
- methodType: zod.z.literal("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"' }),
2459
- bvid: zod.z.string({ required_error: "BVID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "BVID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "BVID\u4E0D\u80FD\u4E3A\u7A7A")
2499
+ methodType: zod.z.literal("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"' }),
2500
+ bvid: zod.z.string({ error: "BVID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "BVID\u4E0D\u80FD\u4E3A\u7A7A" })
2460
2501
  });
2461
2502
  var BilibiliVideoDownloadParamsSchema = zod.z.object({
2462
- methodType: zod.z.literal("\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"' }),
2503
+ methodType: zod.z.literal("\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"' }),
2463
2504
  avid: smartNumber("AVID\u4E0D\u80FD\u4E3A\u7A7A", 1, true),
2464
2505
  cid: smartNumber("CID\u4E0D\u80FD\u4E3A\u7A7A", 1, true)
2465
2506
  });
2466
2507
  var BilibiliCommentParamsSchema = zod.z.object({
2467
- methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
2468
- oid: zod.z.string({ required_error: "OID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "OID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "OID\u4E0D\u80FD\u4E3A\u7A7A"),
2508
+ methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
2509
+ oid: zod.z.string({ error: "OID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "OID\u4E0D\u80FD\u4E3A\u7A7A" }),
2469
2510
  type: smartNumber("\u8BC4\u8BBA\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A", 1, true).refine(
2470
2511
  (val) => [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 33].includes(val),
2471
- { message: "\u65E0\u6548\u7684\u8BC4\u8BBA\u533A\u7C7B\u578B" }
2512
+ { error: "\u65E0\u6548\u7684\u8BC4\u8BBA\u533A\u7C7B\u578B" }
2472
2513
  ),
2473
- number: zod.z.coerce.number({ invalid_type_error: "\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6570\u5B57" }).int({ message: "\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6574\u6570" }).positive({ message: "\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6570" }).default(20).optional(),
2474
- pn: zod.z.coerce.number({ invalid_type_error: "\u9875\u7801\u5FC5\u987B\u662F\u6570\u5B57" }).int({ message: "\u9875\u7801\u5FC5\u987B\u662F\u6574\u6570" }).positive({ message: "\u9875\u7801\u5FC5\u987B\u662F\u6B63\u6570" }).default(1).optional()
2514
+ number: zod.z.coerce.number({ error: "\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6574\u6570" }).positive({ error: "\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6570" }).default(20).optional(),
2515
+ pn: zod.z.coerce.number({ error: "\u9875\u7801\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "\u9875\u7801\u5FC5\u987B\u662F\u6574\u6570" }).positive({ error: "\u9875\u7801\u5FC5\u987B\u662F\u6B63\u6570" }).default(1).optional()
2475
2516
  });
2476
2517
  var BilibiliUserParamsSchema = zod.z.object({
2477
2518
  methodType: zod.z.enum(["\u7528\u6237\u4E3B\u9875\u6570\u636E", "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E", "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF"], {
2478
- invalid_type_error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00",
2479
- required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
2519
+ error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00"
2480
2520
  }),
2481
2521
  host_mid: smartNumber("UP\u4E3BUID\u4E0D\u80FD\u4E3A\u7A7A", 1, true)
2482
2522
  });
2483
2523
  var BilibiliEmojiParamsSchema = zod.z.object({
2484
- methodType: zod.z.literal("Emoji\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
2524
+ methodType: zod.z.literal("Emoji\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
2485
2525
  });
2486
2526
  var BilibiliBangumiInfoParamsSchema = zod.z.object({
2487
- methodType: zod.z.literal("\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E"' }),
2488
- ep_id: zod.z.string({ invalid_type_error: "\u756A\u5267EP ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u756A\u5267EP ID\u4E0D\u80FD\u4E3A\u7A7A").optional(),
2489
- season_id: zod.z.string({ invalid_type_error: "\u756A\u5267\u5B63\u5EA6ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
2527
+ methodType: zod.z.literal("\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E"' }),
2528
+ ep_id: zod.z.string({ error: "\u756A\u5267EP ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u756A\u5267EP ID\u4E0D\u80FD\u4E3A\u7A7A" }).optional(),
2529
+ season_id: zod.z.string({ error: "\u756A\u5267\u5B63\u5EA6ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
2490
2530
  }).refine(
2491
2531
  (data2) => data2.ep_id || data2.season_id,
2492
2532
  {
2493
- message: "ep_id \u548C season_id \u81F3\u5C11\u9700\u8981\u63D0\u4F9B\u4E00\u4E2A",
2533
+ error: "ep_id \u548C season_id \u81F3\u5C11\u9700\u8981\u63D0\u4F9B\u4E00\u4E2A",
2494
2534
  path: ["ep_id"]
2495
2535
  }
2496
2536
  );
2497
2537
  var BilibiliBangumiStreamParamsSchema = zod.z.object({
2498
- methodType: zod.z.literal("\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"' }),
2538
+ methodType: zod.z.literal("\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"' }),
2499
2539
  cid: smartNumber("CID\u4E0D\u80FD\u4E3A\u7A7A", 1, true),
2500
- ep_id: zod.z.string({ required_error: "\u756A\u5267EP ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u756A\u5267EP ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u756A\u5267EP ID\u4E0D\u80FD\u4E3A\u7A7A")
2540
+ ep_id: zod.z.string({ error: "\u756A\u5267EP ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u756A\u5267EP ID\u4E0D\u80FD\u4E3A\u7A7A" })
2501
2541
  });
2502
2542
  var BilibiliDynamicParamsSchema = zod.z.object({
2503
2543
  methodType: zod.z.enum(["\u52A8\u6001\u8BE6\u60C5\u6570\u636E", "\u52A8\u6001\u5361\u7247\u6570\u636E"], {
2504
- invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u52A8\u6001\u8BE6\u60C5\u6570\u636E"\u6216"\u52A8\u6001\u5361\u7247\u6570\u636E"',
2505
- required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
2544
+ error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u52A8\u6001\u8BE6\u60C5\u6570\u636E"\u6216"\u52A8\u6001\u5361\u7247\u6570\u636E"'
2506
2545
  }),
2507
- dynamic_id: zod.z.string({ required_error: "\u52A8\u6001ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u52A8\u6001ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u52A8\u6001ID\u4E0D\u80FD\u4E3A\u7A7A")
2546
+ dynamic_id: zod.z.string({ error: "\u52A8\u6001ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u52A8\u6001ID\u4E0D\u80FD\u4E3A\u7A7A" })
2508
2547
  });
2509
2548
  var BilibiliLiveParamsSchema = zod.z.object({
2510
2549
  methodType: zod.z.enum(["\u76F4\u64AD\u95F4\u4FE1\u606F", "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"], {
2511
- invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u76F4\u64AD\u95F4\u4FE1\u606F"\u6216"\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"',
2512
- required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
2550
+ error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u76F4\u64AD\u95F4\u4FE1\u606F"\u6216"\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"'
2513
2551
  }),
2514
- room_id: zod.z.string({ required_error: "\u76F4\u64AD\u95F4ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u76F4\u64AD\u95F4ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u76F4\u64AD\u95F4ID\u4E0D\u80FD\u4E3A\u7A7A")
2552
+ room_id: zod.z.string({ error: "\u76F4\u64AD\u95F4ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u76F4\u64AD\u95F4ID\u4E0D\u80FD\u4E3A\u7A7A" })
2515
2553
  });
2516
2554
  var BilibiliLoginParamsSchema = zod.z.object({
2517
- methodType: zod.z.literal("\u767B\u5F55\u57FA\u672C\u4FE1\u606F", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u767B\u5F55\u57FA\u672C\u4FE1\u606F"' })
2555
+ methodType: zod.z.literal("\u767B\u5F55\u57FA\u672C\u4FE1\u606F", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u767B\u5F55\u57FA\u672C\u4FE1\u606F"' })
2518
2556
  });
2519
2557
  var BilibiliQrcodeParamsSchema = zod.z.object({
2520
- methodType: zod.z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7533\u8BF7\u4E8C\u7EF4\u7801"' })
2558
+ methodType: zod.z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7533\u8BF7\u4E8C\u7EF4\u7801"' })
2521
2559
  });
2522
2560
  var BilibiliQrcodeStatusParamsSchema = zod.z.object({
2523
- methodType: zod.z.literal("\u4E8C\u7EF4\u7801\u72B6\u6001", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u4E8C\u7EF4\u7801\u72B6\u6001"' }),
2524
- qrcode_key: zod.z.string({ required_error: "\u4E8C\u7EF4\u7801key\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u4E8C\u7EF4\u7801key\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u4E8C\u7EF4\u7801key\u4E0D\u80FD\u4E3A\u7A7A")
2561
+ methodType: zod.z.literal("\u4E8C\u7EF4\u7801\u72B6\u6001", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u4E8C\u7EF4\u7801\u72B6\u6001"' }),
2562
+ qrcode_key: zod.z.string({ error: "\u4E8C\u7EF4\u7801key\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u4E8C\u7EF4\u7801key\u4E0D\u80FD\u4E3A\u7A7A" })
2525
2563
  });
2526
2564
  var BilibiliAv2BvParamsSchema = zod.z.object({
2527
- methodType: zod.z.literal("AV\u8F6CBV", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"AV\u8F6CBV"' }),
2528
- avid: zod.z.coerce.number({
2529
- required_error: "AVID\u4E0D\u80FD\u4E3A\u7A7A",
2530
- invalid_type_error: "AVID\u5FC5\u987B\u662F\u6570\u5B57"
2531
- }).int({ message: "AVID\u5FC5\u987B\u662F\u6574\u6570" }).positive({ message: "AVID\u5FC5\u987B\u662F\u6B63\u6570" })
2565
+ methodType: zod.z.literal("AV\u8F6CBV", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"AV\u8F6CBV"' }),
2566
+ avid: zod.z.coerce.number({ error: "AVID\u5FC5\u987B\u662F\u6570\u5B57" }).int({ error: "AVID\u5FC5\u987B\u662F\u6574\u6570" }).positive({ error: "AVID\u5FC5\u987B\u662F\u6B63\u6570" })
2532
2567
  });
2533
2568
  var BilibiliBv2AvParamsSchema = zod.z.object({
2534
- methodType: zod.z.literal("BV\u8F6CAV", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"BV\u8F6CAV"' }),
2535
- bvid: zod.z.string({ required_error: "BVID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "BVID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "BVID\u4E0D\u80FD\u4E3A\u7A7A")
2569
+ methodType: zod.z.literal("BV\u8F6CAV", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"BV\u8F6CAV"' }),
2570
+ bvid: zod.z.string({ error: "BVID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "BVID\u4E0D\u80FD\u4E3A\u7A7A" })
2536
2571
  });
2537
2572
  var BilibiliValidationSchemas2 = {
2538
2573
  "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": BilibiliVideoParamsSchema,
@@ -2555,21 +2590,307 @@ var BilibiliValidationSchemas2 = {
2555
2590
  "BV\u8F6CAV": BilibiliBv2AvParamsSchema
2556
2591
  };
2557
2592
  var KuaishouVideoParamsSchema = zod.z.object({
2558
- methodType: zod.z.literal("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"' }),
2559
- photoId: zod.z.string({ required_error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A")
2593
+ methodType: zod.z.literal("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"' }),
2594
+ photoId: zod.z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" })
2560
2595
  });
2561
2596
  var KuaishouCommentParamsSchema = zod.z.object({
2562
- methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
2563
- photoId: zod.z.string({ required_error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A", invalid_type_error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A")
2597
+ methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
2598
+ photoId: zod.z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" })
2564
2599
  });
2565
2600
  var KuaishouEmojiParamsSchema = zod.z.object({
2566
- methodType: zod.z.literal("Emoji\u6570\u636E", { invalid_type_error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
2601
+ methodType: zod.z.literal("Emoji\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
2567
2602
  });
2568
2603
  var KuaishouValidationSchemas2 = {
2569
2604
  "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": KuaishouVideoParamsSchema,
2570
2605
  "\u8BC4\u8BBA\u6570\u636E": KuaishouCommentParamsSchema,
2571
2606
  "Emoji\u6570\u636E": KuaishouEmojiParamsSchema
2572
2607
  };
2608
+ var xiaohongshuSign = class {
2609
+ static client = new xhshowTs.Xhshow();
2610
+ /**
2611
+ * 生成GET请求的X-S签名
2612
+ * @param path - API路径
2613
+ * @param a1Cookie - a1 cookie值
2614
+ * @param clientType - 客户端类型,默认为 'xhs-pc-web'
2615
+ * @param params - 查询参数对象
2616
+ * @returns X-S签名
2617
+ */
2618
+ static generateXSGet(path2, a1Cookie, clientType = "xhs-pc-web", params = {}) {
2619
+ return this.client.signXsGet(path2, a1Cookie, clientType, params);
2620
+ }
2621
+ /**
2622
+ * 生成POST请求的X-S签名
2623
+ * @param path - API路径
2624
+ * @param a1Cookie - a1 cookie值
2625
+ * @param clientType - 客户端类型,默认为 'xhs-pc-web'
2626
+ * @param body - 请求体对象
2627
+ * @returns X-S签名
2628
+ */
2629
+ static generateXSPost(path2, a1Cookie, clientType = "xhs-pc-web", body = {}) {
2630
+ return this.client.signXsPost(path2, a1Cookie, clientType, body);
2631
+ }
2632
+ /**
2633
+ * 生成X-S签名(兼容旧接口)
2634
+ * @param url - 请求URL
2635
+ * @param body - 请求体
2636
+ * @param userAgent - User-Agent(暂未使用)
2637
+ * @param method - 请求方法,默认为 'POST'
2638
+ * @param a1Cookie - a1 cookie值
2639
+ * @returns X-S签名
2640
+ */
2641
+ static generateXS(url, body, userAgent, method = "POST", a1Cookie = "") {
2642
+ try {
2643
+ const urlObj = new URL(url);
2644
+ const path2 = urlObj.pathname + urlObj.search;
2645
+ if (method.toUpperCase() === "GET") {
2646
+ const params = typeof body === "object" ? body : {};
2647
+ return this.generateXSGet(path2, a1Cookie, "xhs-pc-web", params);
2648
+ } else {
2649
+ const requestBody = typeof body === "object" ? body : {};
2650
+ return this.generateXSPost(path2, a1Cookie, "xhs-pc-web", requestBody);
2651
+ }
2652
+ } catch (error) {
2653
+ console.error("\u751F\u6210X-S\u7B7E\u540D\u5931\u8D25:", error);
2654
+ throw new Error(`\u7B7E\u540D\u751F\u6210\u5931\u8D25: ${error}`);
2655
+ }
2656
+ }
2657
+ /**
2658
+ * 生成X-S-Common参数
2659
+ * @param length - 长度
2660
+ * @returns Base64编码的随机字符串
2661
+ */
2662
+ static generateXSCommon(length = 945) {
2663
+ return crypto__default.default.randomBytes(length).toString("base64").replace(/=+$/, "");
2664
+ }
2665
+ /**
2666
+ * 生成X-T时间戳
2667
+ * @returns 当前时间戳字符串
2668
+ */
2669
+ static generateXT() {
2670
+ return Date.now().toString();
2671
+ }
2672
+ /**
2673
+ * 生成X-B3-Traceid
2674
+ * @returns 16位随机字符串
2675
+ */
2676
+ static generateXB3Traceid() {
2677
+ return Array.from({ length: 16 }, () => "abcdef0123456789"[Math.floor(Math.random() * 16)]).join("");
2678
+ }
2679
+ /**
2680
+ * 从cookie字符串中提取a1值
2681
+ * @param cookieString - 完整的cookie字符串
2682
+ * @returns a1 cookie值
2683
+ */
2684
+ static extractA1FromCookie(cookieString) {
2685
+ const match = cookieString.match(/a1=([^;]+)/);
2686
+ return match ? match[1] : "";
2687
+ }
2688
+ /**
2689
+ * 生成搜索ID
2690
+ * @returns 搜索ID字符串
2691
+ */
2692
+ static getSearchId = () => (BigInt(Date.now()) << 64n) + BigInt(Math.floor(Math.random() * 2147483646)).toString(36);
2693
+ };
2694
+
2695
+ // src/platform/xiaohongshu/API.ts
2696
+ var SearchSortType = /* @__PURE__ */ ((SearchSortType2) => {
2697
+ SearchSortType2["GENERAL"] = "general";
2698
+ SearchSortType2["MOST_POPULAR"] = "popularity_descending";
2699
+ SearchSortType2["LATEST"] = "time_descending";
2700
+ return SearchSortType2;
2701
+ })(SearchSortType || {});
2702
+ var SearchNoteType = /* @__PURE__ */ ((SearchNoteType2) => {
2703
+ SearchNoteType2[SearchNoteType2["ALL"] = 0] = "ALL";
2704
+ SearchNoteType2[SearchNoteType2["VIDEO"] = 1] = "VIDEO";
2705
+ SearchNoteType2[SearchNoteType2["IMAGE"] = 2] = "IMAGE";
2706
+ return SearchNoteType2;
2707
+ })(SearchNoteType || {});
2708
+ var buildQueryString2 = (params) => {
2709
+ return Object.entries(params).filter(([_, value]) => value !== void 0 && value !== null).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join("&");
2710
+ };
2711
+ var xiaohongshuApiUrls = {
2712
+ /**
2713
+ * 获取首页推荐数据的接口地址
2714
+ * @param data - 请求参数
2715
+ * @returns 完整的接口URL
2716
+ */
2717
+ \u9996\u9875\u63A8\u8350\u6570\u636E(data2 = {}) {
2718
+ return {
2719
+ apiPath: "/api/sns/web/v1/homefeed",
2720
+ Url: "https://edith.xiaohongshu.com/api/sns/web/v1/homefeed",
2721
+ Body: {
2722
+ cursor_score: data2.cursor_score || "1.7599348899670024E9",
2723
+ num: data2.num || 33,
2724
+ refresh_type: data2.refresh_type || 3,
2725
+ note_index: data2.note_index || 33,
2726
+ category: data2.category || "homefeed_recommend",
2727
+ search_key: data2.search_key || "",
2728
+ image_formats: ["jpg", "webp", "avif"]
2729
+ }
2730
+ };
2731
+ },
2732
+ /**
2733
+ * 获取单个笔记数据的接口地址
2734
+ * @param data - 请求参数
2735
+ * @returns 完整的接口URL
2736
+ */
2737
+ \u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2) {
2738
+ return {
2739
+ apiPath: "/api/sns/web/v1/feed",
2740
+ Url: "https://edith.xiaohongshu.com/api/sns/web/v1/feed",
2741
+ Body: {
2742
+ source_note_id: data2.note_id,
2743
+ image_formats: ["jpg", "webp", "avif"],
2744
+ extra: {
2745
+ need_body_topic: "1"
2746
+ },
2747
+ xsec_source: "pc_feed",
2748
+ xsec_token: data2.xsec_token
2749
+ }
2750
+ };
2751
+ },
2752
+ /**
2753
+ * 获取评论数据的接口地址
2754
+ * @param data - 请求参数
2755
+ * @returns 完整的接口URL
2756
+ */
2757
+ \u8BC4\u8BBA\u6570\u636E(data2) {
2758
+ const baseUrl = "https://edith.xiaohongshu.com/api/sns/web/v2/comment/page";
2759
+ const params = {
2760
+ note_id: data2.note_id,
2761
+ cursor: data2.cursor || "",
2762
+ image_formats: ["jpg", "webp", "avif"].join(","),
2763
+ xsec_token: data2.xsec_token
2764
+ };
2765
+ return {
2766
+ apiPath: "/api/sns/web/v2/comment/page",
2767
+ Url: `${baseUrl}?${buildQueryString2(params)}`
2768
+ };
2769
+ },
2770
+ /**
2771
+ * 获取用户数据的接口地址
2772
+ * @param data - 请求参数
2773
+ * @returns 完整的接口URL
2774
+ */
2775
+ \u7528\u6237\u6570\u636E(data2) {
2776
+ return {
2777
+ apiPath: "/api/sns/web/v1/user/otherinfo",
2778
+ Url: `https://www.xiaohongshu.com/user/profile/${data2.user_id}`
2779
+ };
2780
+ },
2781
+ /**
2782
+ * 获取用户笔记数据的接口地址
2783
+ * @param data - 请求参数
2784
+ * @returns 完整的接口URL
2785
+ */
2786
+ \u7528\u6237\u7B14\u8BB0\u6570\u636E(data2) {
2787
+ const baseUrl = "https://edith.xiaohongshu.com/api/sns/web/v1/user_posted";
2788
+ const params = {
2789
+ user_id: data2.user_id,
2790
+ cursor: data2.cursor || "",
2791
+ num: data2.num || 30,
2792
+ image_formats: ["jpg", "webp", "avif"].join(","),
2793
+ xsec_source: "pc_feed"
2794
+ };
2795
+ return {
2796
+ apiPath: "/api/sns/web/v1/user_posted",
2797
+ Url: `${baseUrl}?${buildQueryString2(params)}`
2798
+ };
2799
+ },
2800
+ /**
2801
+ * 获取笔记表情列表的接口地址
2802
+ * @param data - 请求参数
2803
+ * @returns 完整的接口URL
2804
+ */
2805
+ \u8868\u60C5\u5217\u8868(data2) {
2806
+ return {
2807
+ apiPath: "/api/im/redmoji/detail",
2808
+ Url: "https://edith.xiaohongshu.com/api/im/redmoji/detail"
2809
+ };
2810
+ },
2811
+ /**
2812
+ * 搜索笔记的接口地址
2813
+ * @param data - 请求参数
2814
+ * @returns 完整的接口URL
2815
+ */
2816
+ \u641C\u7D22\u7B14\u8BB0(data2) {
2817
+ return {
2818
+ apiPath: "/api/sns/web/v1/search/notes",
2819
+ Body: {
2820
+ keyword: data2.keyword,
2821
+ page: data2.page || 1,
2822
+ page_size: data2.page_size || 20,
2823
+ sort: "general" /* GENERAL */,
2824
+ note_type: 0 /* ALL */,
2825
+ search_id: xiaohongshuSign.getSearchId(),
2826
+ image_formats: ["jpg", "webp", "avif"]
2827
+ },
2828
+ Url: "https://edith.xiaohongshu.com/api/sns/web/v1/search/notes"
2829
+ };
2830
+ }
2831
+ };
2832
+ var createXiaohongshuApiUrls = () => {
2833
+ return xiaohongshuApiUrls;
2834
+ };
2835
+ var SearchSortTypeValues = Object.values(SearchSortType).filter((v) => typeof v === "string");
2836
+ var SearchNoteTypeValues = Object.values(SearchNoteType).filter((v) => typeof v === "string");
2837
+ var HomeFeedParamsSchema = zod.z.object({
2838
+ methodType: zod.z.literal("\u9996\u9875\u63A8\u8350\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u9996\u9875\u63A8\u8350\u6570\u636E"' }),
2839
+ cursor_score: zod.z.string({ error: "cursor_score\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
2840
+ num: zod.z.number({ error: "\u6570\u91CF\u5FC5\u987B\u662F\u6570\u5B57" }).min(1, { error: "\u6570\u91CF\u4E0D\u80FD\u5C0F\u4E8E1" }).max(100, { error: "\u6570\u91CF\u4E0D\u80FD\u5927\u4E8E100" }).optional(),
2841
+ refresh_type: zod.z.number({ error: "refresh_type\u5FC5\u987B\u662F\u6570\u5B57" }).optional(),
2842
+ note_index: zod.z.number({ error: "note_index\u5FC5\u987B\u662F\u6570\u5B57" }).optional(),
2843
+ category: zod.z.string({ error: "category\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
2844
+ search_key: zod.z.string({ error: "search_key\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
2845
+ });
2846
+ var NoteParamsSchema = zod.z.object({
2847
+ methodType: zod.z.literal("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u7B14\u8BB0\u6570\u636E"' }),
2848
+ note_id: zod.z.string({ error: "note_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
2849
+ xsec_token: zod.z.string({ error: "xsec_token\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" })
2850
+ });
2851
+ var CommentParamsSchema = zod.z.object({
2852
+ methodType: zod.z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
2853
+ note_id: zod.z.string({ error: "note_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
2854
+ cursor: zod.z.string({ error: "cursor\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
2855
+ xsec_token: zod.z.string({ error: "xsec_token\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" })
2856
+ });
2857
+ var UserParamsSchema = zod.z.object({
2858
+ methodType: zod.z.literal("\u7528\u6237\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7528\u6237\u6570\u636E"' }),
2859
+ user_id: zod.z.string({ error: "user_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" })
2860
+ });
2861
+ var UserNoteParamsSchema = zod.z.object({
2862
+ methodType: zod.z.literal("\u7528\u6237\u7B14\u8BB0\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7528\u6237\u7B14\u8BB0\u6570\u636E"' }),
2863
+ user_id: zod.z.string({ error: "user_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
2864
+ cursor: zod.z.string({ error: "cursor\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
2865
+ num: zod.z.number({ error: "\u6570\u91CF\u5FC5\u987B\u662F\u6570\u5B57" }).min(1, { error: "\u6570\u91CF\u4E0D\u80FD\u5C0F\u4E8E1" }).max(100, { error: "\u6570\u91CF\u4E0D\u80FD\u5927\u4E8E100" }).optional()
2866
+ });
2867
+ var EmojiListParamsSchema = zod.z.object({
2868
+ methodType: zod.z.literal("\u8868\u60C5\u5217\u8868", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8868\u60C5\u5217\u8868"' })
2869
+ });
2870
+ var SearchNoteParamsSchema = zod.z.object({
2871
+ methodType: zod.z.literal("\u641C\u7D22\u7B14\u8BB0", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u641C\u7D22\u7B14\u8BB0"' }),
2872
+ keyword: zod.z.string({ error: "keyword\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
2873
+ page: zod.z.number({ error: "page\u5FC5\u987B\u662F\u6570\u5B57" }).min(1, { error: "page\u4E0D\u80FD\u5C0F\u4E8E1" }).optional(),
2874
+ page_size: zod.z.number({ error: "page_size\u5FC5\u987B\u662F\u6570\u5B57" }).min(1, { error: "page_size\u4E0D\u80FD\u5C0F\u4E8E1" }).max(100, { error: "page_size\u4E0D\u80FD\u5927\u4E8E100" }).optional(),
2875
+ sort: zod.z.enum(SearchSortTypeValues, { error: "\u6392\u5E8F\u7C7B\u578B\u4E0D\u5408\u6CD5" }).optional(),
2876
+ note_type: zod.z.enum(SearchNoteTypeValues, { error: "\u7B14\u8BB0\u7C7B\u578B\u4E0D\u5408\u6CD5" }).optional()
2877
+ });
2878
+ var XiaohongshuValidationSchemas = {
2879
+ \u9996\u9875\u63A8\u8350\u6570\u636E: HomeFeedParamsSchema,
2880
+ \u5355\u4E2A\u7B14\u8BB0\u6570\u636E: NoteParamsSchema,
2881
+ \u8BC4\u8BBA\u6570\u636E: CommentParamsSchema,
2882
+ \u7528\u6237\u6570\u636E: UserParamsSchema,
2883
+ \u7528\u6237\u7B14\u8BB0\u6570\u636E: UserNoteParamsSchema,
2884
+ \u8868\u60C5\u5217\u8868: EmojiListParamsSchema,
2885
+ \u641C\u7D22\u7B14\u8BB0: SearchNoteParamsSchema
2886
+ };
2887
+ var validateXiaohongshuParams = (methodType, params) => {
2888
+ const schema = XiaohongshuValidationSchemas[methodType];
2889
+ const validated = schema.parse(
2890
+ typeof params === "object" && params !== null ? { methodType, ...params } : { methodType, params }
2891
+ );
2892
+ return validated;
2893
+ };
2573
2894
 
2574
2895
  // src/validation/index.ts
2575
2896
  var validateDouyinParams = (methodType, params) => {
@@ -2612,6 +2933,210 @@ var createErrorResponse = (error, message, code = 500) => {
2612
2933
  };
2613
2934
  };
2614
2935
 
2936
+ // src/platform/xiaohongshu/getdata.ts
2937
+ var XiaohongshuData = async (data2, cookie, requestConfig) => {
2938
+ const defHeaders = getXiaohongshuDefaultConfig(cookie)["headers"];
2939
+ const baseRequestConfig = {
2940
+ method: "POST",
2941
+ timeout: 1e4,
2942
+ ...requestConfig,
2943
+ headers: {
2944
+ ...defHeaders,
2945
+ ...{}
2946
+ }
2947
+ };
2948
+ const xiaohongshuApiUrls2 = createXiaohongshuApiUrls();
2949
+ switch (data2.methodType) {
2950
+ case "\u9996\u9875\u63A8\u8350\u6570\u636E": {
2951
+ const homeFeedData = await GlobalGetData4(data2.methodType, {
2952
+ ...baseRequestConfig,
2953
+ url: xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).Url,
2954
+ data: JSON.stringify(xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).Body),
2955
+ headers: {
2956
+ ...baseRequestConfig.headers,
2957
+ "x-s": xiaohongshuSign.generateXSPost(
2958
+ xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).apiPath,
2959
+ xiaohongshuSign.extractA1FromCookie(cookie || ""),
2960
+ "xhs-pc-web",
2961
+ xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).Body
2962
+ ),
2963
+ "x-s-common": xiaohongshuSign.generateXSCommon(),
2964
+ "x-t": xiaohongshuSign.generateXT()
2965
+ }
2966
+ });
2967
+ return homeFeedData;
2968
+ }
2969
+ case "\u5355\u4E2A\u7B14\u8BB0\u6570\u636E": {
2970
+ const noteData = await GlobalGetData4(data2.methodType, {
2971
+ ...baseRequestConfig,
2972
+ url: xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).Url,
2973
+ data: xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).Body,
2974
+ headers: {
2975
+ ...baseRequestConfig.headers,
2976
+ "x-s": xiaohongshuSign.generateXSPost(
2977
+ xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).apiPath,
2978
+ xiaohongshuSign.extractA1FromCookie(cookie || ""),
2979
+ "xhs-pc-web",
2980
+ xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).Body
2981
+ ),
2982
+ "x-s-common": xiaohongshuSign.generateXSCommon(),
2983
+ "x-t": xiaohongshuSign.generateXT()
2984
+ }
2985
+ });
2986
+ return noteData;
2987
+ }
2988
+ case "\u8BC4\u8BBA\u6570\u636E": {
2989
+ const baseRequestConfig2 = {
2990
+ method: "GET",
2991
+ timeout: 1e4,
2992
+ ...requestConfig,
2993
+ headers: {
2994
+ ...defHeaders,
2995
+ ...{}
2996
+ }
2997
+ };
2998
+ const commentData = await GlobalGetData4(data2.methodType, {
2999
+ ...baseRequestConfig2,
3000
+ url: xiaohongshuApiUrls2.\u8BC4\u8BBA\u6570\u636E(data2).Url,
3001
+ headers: {
3002
+ ...baseRequestConfig2.headers,
3003
+ "x-s": xiaohongshuSign.generateXSGet(
3004
+ xiaohongshuApiUrls2.\u8BC4\u8BBA\u6570\u636E(data2).apiPath,
3005
+ xiaohongshuSign.extractA1FromCookie(cookie || ""),
3006
+ "xhs-pc-web"
3007
+ ),
3008
+ "x-s-common": xiaohongshuSign.generateXSCommon(),
3009
+ "x-t": xiaohongshuSign.generateXT()
3010
+ }
3011
+ });
3012
+ return commentData;
3013
+ }
3014
+ case "\u7528\u6237\u6570\u636E": {
3015
+ const baseRequestConfig2 = {
3016
+ method: "GET",
3017
+ timeout: 1e4,
3018
+ ...requestConfig,
3019
+ headers: {
3020
+ ...defHeaders,
3021
+ ...{}
3022
+ }
3023
+ };
3024
+ const userData = await GlobalGetData4(data2.methodType, {
3025
+ ...baseRequestConfig2,
3026
+ url: xiaohongshuApiUrls2.\u7528\u6237\u6570\u636E(data2).Url,
3027
+ headers: {
3028
+ ...baseRequestConfig2.headers,
3029
+ "x-s": xiaohongshuSign.generateXSGet(
3030
+ xiaohongshuApiUrls2.\u7528\u6237\u6570\u636E(data2).apiPath,
3031
+ xiaohongshuSign.extractA1FromCookie(cookie || ""),
3032
+ "xhs-pc-web"
3033
+ ),
3034
+ "x-s-common": xiaohongshuSign.generateXSCommon(),
3035
+ "x-t": xiaohongshuSign.generateXT()
3036
+ }
3037
+ });
3038
+ const pageData = extractCreatorInfoFromHtml(userData);
3039
+ return {
3040
+ code: 0,
3041
+ data: pageData,
3042
+ msg: "\u6210\u529F"
3043
+ };
3044
+ }
3045
+ case "\u7528\u6237\u7B14\u8BB0\u6570\u636E": {
3046
+ const userNoteData = await GlobalGetData4(data2.methodType, {
3047
+ ...baseRequestConfig,
3048
+ method: "GET",
3049
+ url: xiaohongshuApiUrls2.\u7528\u6237\u7B14\u8BB0\u6570\u636E(data2).Url,
3050
+ headers: {
3051
+ ...baseRequestConfig.headers,
3052
+ "x-b3-traceid": xiaohongshuSign.generateXB3Traceid(),
3053
+ "x-s": xiaohongshuSign.generateXSGet(
3054
+ xiaohongshuApiUrls2.\u7528\u6237\u7B14\u8BB0\u6570\u636E(data2).apiPath,
3055
+ xiaohongshuSign.extractA1FromCookie(cookie || ""),
3056
+ "xhs-pc-web"
3057
+ ),
3058
+ "x-s-common": xiaohongshuSign.generateXSCommon(),
3059
+ "x-t": xiaohongshuSign.generateXT()
3060
+ }
3061
+ });
3062
+ return userNoteData;
3063
+ }
3064
+ case "\u8868\u60C5\u5217\u8868": {
3065
+ const baseRequestConfig2 = {
3066
+ method: "GET",
3067
+ timeout: 1e4,
3068
+ ...requestConfig,
3069
+ headers: {
3070
+ ...defHeaders,
3071
+ ...{}
3072
+ }
3073
+ };
3074
+ const emojiListData = await GlobalGetData4(data2.methodType, {
3075
+ ...baseRequestConfig2,
3076
+ url: xiaohongshuApiUrls2.\u8868\u60C5\u5217\u8868(data2).Url,
3077
+ headers: {
3078
+ ...baseRequestConfig2.headers,
3079
+ "x-s": xiaohongshuSign.generateXSGet(
3080
+ xiaohongshuApiUrls2.\u8868\u60C5\u5217\u8868(data2).apiPath,
3081
+ xiaohongshuSign.extractA1FromCookie(cookie || ""),
3082
+ "xhs-pc-web"
3083
+ ),
3084
+ "x-s-common": xiaohongshuSign.generateXSCommon(),
3085
+ "x-t": xiaohongshuSign.generateXT()
3086
+ }
3087
+ });
3088
+ return emojiListData;
3089
+ }
3090
+ case "\u641C\u7D22\u7B14\u8BB0": {
3091
+ const searchNoteData = await GlobalGetData4(data2.methodType, {
3092
+ ...baseRequestConfig,
3093
+ url: xiaohongshuApiUrls2.\u641C\u7D22\u7B14\u8BB0(data2).Url,
3094
+ data: xiaohongshuApiUrls2.\u641C\u7D22\u7B14\u8BB0(data2).Body,
3095
+ headers: {
3096
+ ...baseRequestConfig.headers,
3097
+ "x-s": xiaohongshuSign.generateXSPost(
3098
+ xiaohongshuApiUrls2.\u641C\u7D22\u7B14\u8BB0(data2).apiPath,
3099
+ xiaohongshuSign.extractA1FromCookie(cookie || ""),
3100
+ "xhs-pc-web"
3101
+ ),
3102
+ "x-s-common": xiaohongshuSign.generateXSCommon(),
3103
+ "x-t": xiaohongshuSign.generateXT()
3104
+ }
3105
+ });
3106
+ return searchNoteData;
3107
+ }
3108
+ default:
3109
+ throw new Error(`\u672A\u77E5\u7684\u5C0F\u7EA2\u4E66\u6570\u636E\u63A5\u53E3: \u300C${logger.red(data2.methodType)}\u300D`);
3110
+ }
3111
+ };
3112
+ var GlobalGetData4 = async (methodType, config) => {
3113
+ var _a;
3114
+ try {
3115
+ const response = await fetchData(config);
3116
+ if (typeof response === "string" && response.includes("<html>")) {
3117
+ return response;
3118
+ }
3119
+ if (response.code !== 0) {
3120
+ throw new Error(`API\u8BF7\u6C42\u5931\u8D25: ${((_a = response.data) == null ? void 0 : _a.msg) || response.msg || "\u672A\u77E5\u9519\u8BEF"}, code: ${response.code}`);
3121
+ }
3122
+ return response;
3123
+ } catch (error) {
3124
+ logger.error(`\u5C0F\u7EA2\u4E66API\u8BF7\u6C42\u5931\u8D25 [${methodType}]:`, error.message);
3125
+ const errorDetail = {
3126
+ errorDescription: error.message || "\u672A\u77E5\u9519\u8BEF",
3127
+ requestType: methodType,
3128
+ requestUrl: config.url || ""
3129
+ };
3130
+ return {
3131
+ code: 500,
3132
+ message: "error",
3133
+ data: null,
3134
+ amagiError: errorDetail,
3135
+ amagiMessage: `\u5C0F\u7EA2\u4E66API\u8BF7\u6C42\u5931\u8D25: ${error.message}`
3136
+ };
3137
+ }
3138
+ };
3139
+
2615
3140
  // src/model/DataFetchers.ts
2616
3141
  async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
2617
3142
  try {
@@ -2694,6 +3219,32 @@ async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions, req
2694
3219
  throw new Error(`\u5FEB\u624B\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
2695
3220
  }
2696
3221
  }
3222
+ async function getXiaohongshuData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
3223
+ try {
3224
+ let options;
3225
+ let cookie;
3226
+ if (typeof optionsOrCookie === "string") {
3227
+ cookie = optionsOrCookie;
3228
+ options = cookieOrOptions;
3229
+ } else {
3230
+ options = optionsOrCookie;
3231
+ cookie = cookieOrOptions;
3232
+ }
3233
+ const { typeMode: _, ...validationOptions } = options || {};
3234
+ const validatedParams = validateXiaohongshuParams(methodType, validationOptions);
3235
+ const apiParams = {
3236
+ ...validatedParams
3237
+ };
3238
+ const rawData = await XiaohongshuData(apiParams, cookie);
3239
+ if (rawData.code && Object.values(xiaohongshuAPIErrorCode).includes(rawData.code)) {
3240
+ return createErrorResponse(rawData.amagiError, "\u5C0F\u7EA2\u4E66\u6570\u636E\u83B7\u53D6\u5931\u8D25");
3241
+ }
3242
+ return createSuccessResponse(rawData, "\u83B7\u53D6\u6210\u529F", 200);
3243
+ } catch (error) {
3244
+ const errorMessage = error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF";
3245
+ throw new Error(`\u5C0F\u7EA2\u4E66\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
3246
+ }
3247
+ }
2697
3248
 
2698
3249
  // src/platform/bilibili/BilibiliApi.ts
2699
3250
  var createBilibiliApiMethod = (methodType) => {
@@ -2984,7 +3535,7 @@ var ValidationError = class _ValidationError extends Error {
2984
3535
  * @returns 验证错误实例
2985
3536
  */
2986
3537
  static fromZodError(zodError, requestPath) {
2987
- const errors = zodError.errors.map((err) => ({
3538
+ const errors = zodError.issues.map((err) => ({
2988
3539
  field: err.path.join("."),
2989
3540
  message: err.message
2990
3541
  }));
@@ -3040,6 +3591,7 @@ var createValidationMiddleware = (validateFn, methodType) => {
3040
3591
  var createDouyinValidationMiddleware = (methodType) => createValidationMiddleware(validateDouyinParams, methodType);
3041
3592
  var createBilibiliValidationMiddleware = (methodType) => createValidationMiddleware(validateBilibiliParams, methodType);
3042
3593
  var createKuaishouValidationMiddleware = (methodType) => createValidationMiddleware(validateKuaishouParams, methodType);
3594
+ var createXiaohongshuValidationMiddleware = (methodType) => createValidationMiddleware(validateXiaohongshuParams, methodType);
3043
3595
  var createBilibiliRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
3044
3596
  return async (req, res) => {
3045
3597
  try {
@@ -3589,11 +4141,184 @@ var kuaishouUtils = {
3589
4141
  kuaishouApiUrls,
3590
4142
  api: kuaishou
3591
4143
  };
4144
+
4145
+ // src/platform/xiaohongshu/XiaohongshuApi.ts
4146
+ var createXiaohongshuApiMethod = (methodType) => {
4147
+ return async (options, cookie, requestConfig) => {
4148
+ return await getXiaohongshuData(methodType, options, cookie);
4149
+ };
4150
+ };
4151
+ var createBoundXiaohongshuApiMethod = (methodType, cookie, requestConfig) => {
4152
+ return async (options) => {
4153
+ return await getXiaohongshuData(methodType, options, cookie);
4154
+ };
4155
+ };
4156
+ var xiaohongshu = {
4157
+ /**
4158
+ * 获取首页推荐数据
4159
+ * @param options 请求参数,包含分页和过滤选项
4160
+ * @param cookie 有效的用户 Cookie
4161
+ * @returns 统一格式的API响应,包含首页推荐笔记列表
4162
+ */
4163
+ getHomeFeed: createXiaohongshuApiMethod("\u9996\u9875\u63A8\u8350\u6570\u636E"),
4164
+ /**
4165
+ * 获取单个笔记数据
4166
+ * @param options 请求参数,包含笔记ID
4167
+ * @param cookie 有效的用户 Cookie
4168
+ * @returns 统一格式的API响应,包含指定笔记的详细信息
4169
+ */
4170
+ getNote: createXiaohongshuApiMethod("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E"),
4171
+ /**
4172
+ * 获取评论数据
4173
+ * @param options 请求参数,包含笔记ID和分页选项
4174
+ * @param cookie 有效的用户 Cookie
4175
+ * @returns 统一格式的API响应,包含指定笔记的评论列表
4176
+ */
4177
+ getComments: createXiaohongshuApiMethod("\u8BC4\u8BBA\u6570\u636E"),
4178
+ /**
4179
+ * 获取用户数据
4180
+ * @param options 请求参数,包含用户ID
4181
+ * @param cookie 有效的用户 Cookie
4182
+ * @returns 统一格式的API响应,包含指定用户的详细信息
4183
+ */
4184
+ getUser: createXiaohongshuApiMethod("\u7528\u6237\u6570\u636E"),
4185
+ /**
4186
+ * 获取用户笔记数据
4187
+ * @param options 请求参数,包含用户ID和分页选项
4188
+ * @param cookie 有效的用户 Cookie
4189
+ * @returns 统一格式的API响应,包含指定用户的笔记列表
4190
+ */
4191
+ getUserNotes: createXiaohongshuApiMethod("\u7528\u6237\u7B14\u8BB0\u6570\u636E"),
4192
+ /**
4193
+ * 获取搜索笔记数据
4194
+ * @param options 请求参数,包含搜索关键词和分页选项
4195
+ * @param cookie 有效的用户 Cookie
4196
+ * @returns 统一格式的API响应,包含搜索到的笔记列表
4197
+ */
4198
+ getSearchNotes: createXiaohongshuApiMethod("\u641C\u7D22\u7B14\u8BB0"),
4199
+ /**
4200
+ * 获取表情列表数据
4201
+ * @param options 请求参数,包含分页和过滤选项
4202
+ * @param cookie 有效的用户 Cookie
4203
+ * @returns 统一格式的API响应,包含表情列表
4204
+ */
4205
+ getEmojiList: createXiaohongshuApiMethod("\u8868\u60C5\u5217\u8868")
4206
+ };
4207
+ var createBoundXiaohongshuApi = (cookie, requestConfig) => {
4208
+ return {
4209
+ /**
4210
+ * 获取首页推荐数据
4211
+ * @param options 请求参数,包含分页和过滤选项
4212
+ * @returns 统一格式的API响应,包含首页推荐笔记列表
4213
+ */
4214
+ getHomeFeed: createBoundXiaohongshuApiMethod("\u9996\u9875\u63A8\u8350\u6570\u636E", cookie),
4215
+ /**
4216
+ * 获取单个笔记数据
4217
+ * @param options 请求参数,包含笔记ID
4218
+ * @returns 统一格式的API响应,包含指定笔记的详细信息
4219
+ */
4220
+ getNote: createBoundXiaohongshuApiMethod("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E", cookie),
4221
+ /**
4222
+ * 获取评论数据
4223
+ * @param options 请求参数,包含笔记ID和分页选项
4224
+ * @returns 统一格式的API响应,包含指定笔记的评论列表
4225
+ */
4226
+ getComments: createBoundXiaohongshuApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie),
4227
+ /**
4228
+ * 获取用户数据
4229
+ * @param options 请求参数,包含用户ID
4230
+ * @returns 统一格式的API响应,包含指定用户的详细信息
4231
+ */
4232
+ getUser: createBoundXiaohongshuApiMethod("\u7528\u6237\u6570\u636E", cookie),
4233
+ /**
4234
+ * 获取用户笔记数据
4235
+ * @param options 请求参数,包含用户ID和分页选项
4236
+ * @returns 统一格式的API响应,包含指定用户的笔记列表
4237
+ */
4238
+ getUserNotes: createBoundXiaohongshuApiMethod("\u7528\u6237\u7B14\u8BB0\u6570\u636E", cookie),
4239
+ /**
4240
+ * 获取搜索笔记数据
4241
+ * @param options 请求参数,包含搜索关键词和分页选项
4242
+ * @returns 统一格式的API响应,包含搜索到的笔记列表
4243
+ */
4244
+ getSearchNotes: createBoundXiaohongshuApiMethod("\u641C\u7D22\u7B14\u8BB0", cookie),
4245
+ /**
4246
+ * 获取表情列表数据
4247
+ * @param options 请求参数,包含分页和过滤选项
4248
+ * @returns 统一格式的API响应,包含表情列表
4249
+ */
4250
+ getEmojiList: createBoundXiaohongshuApiMethod("\u8868\u60C5\u5217\u8868", cookie)
4251
+ };
4252
+ };
4253
+ var createXiaohongshuRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getXiaohongshuDefaultConfig(cookie)) => {
4254
+ return async (req, res) => {
4255
+ try {
4256
+ const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
4257
+ res.json({
4258
+ ...result,
4259
+ requestPath: req.originalUrl
4260
+ });
4261
+ } catch (error) {
4262
+ const errorResponse = handleError(error);
4263
+ res.status(errorResponse.code || 500).json({
4264
+ ...errorResponse,
4265
+ requestPath: req.originalUrl
4266
+ });
4267
+ }
4268
+ };
4269
+ };
4270
+ var createXiaohongshuRoutes = (cookie, requestConfig = getXiaohongshuDefaultConfig(cookie)) => {
4271
+ const router = express.Router();
4272
+ router.get(
4273
+ "/fetch_home_feed",
4274
+ createXiaohongshuValidationMiddleware("\u9996\u9875\u63A8\u8350\u6570\u636E"),
4275
+ createXiaohongshuRouteHandler(getXiaohongshuData, "\u9996\u9875\u63A8\u8350\u6570\u636E", cookie, requestConfig)
4276
+ );
4277
+ router.get(
4278
+ "/fetch_one_note",
4279
+ createXiaohongshuValidationMiddleware("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E"),
4280
+ createXiaohongshuRouteHandler(getXiaohongshuData, "\u5355\u4E2A\u7B14\u8BB0\u6570\u636E", cookie, requestConfig)
4281
+ );
4282
+ router.get(
4283
+ "/fetch_note_comments",
4284
+ createXiaohongshuValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
4285
+ createXiaohongshuRouteHandler(getXiaohongshuData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
4286
+ );
4287
+ router.get(
4288
+ "/fetch_user_profile",
4289
+ createXiaohongshuValidationMiddleware("\u7528\u6237\u6570\u636E"),
4290
+ createXiaohongshuRouteHandler(getXiaohongshuData, "\u7528\u6237\u6570\u636E", cookie, requestConfig)
4291
+ );
4292
+ router.get(
4293
+ "/fetch_user_notes",
4294
+ createXiaohongshuValidationMiddleware("\u7528\u6237\u7B14\u8BB0\u6570\u636E"),
4295
+ createXiaohongshuRouteHandler(getXiaohongshuData, "\u7528\u6237\u7B14\u8BB0\u6570\u636E", cookie, requestConfig)
4296
+ );
4297
+ router.get(
4298
+ "/fetch_emoji_list",
4299
+ createXiaohongshuValidationMiddleware("\u8868\u60C5\u5217\u8868"),
4300
+ createXiaohongshuRouteHandler(getXiaohongshuData, "\u8868\u60C5\u5217\u8868", cookie, requestConfig)
4301
+ );
4302
+ router.get(
4303
+ "/fetch_search_notes",
4304
+ createXiaohongshuValidationMiddleware("\u641C\u7D22\u7B14\u8BB0"),
4305
+ createXiaohongshuRouteHandler(getXiaohongshuData, "\u641C\u7D22\u7B14\u8BB0", cookie, requestConfig)
4306
+ );
4307
+ return router;
4308
+ };
4309
+
4310
+ // src/platform/xiaohongshu/index.ts
4311
+ var xiaohongshuUtils = {
4312
+ sign: xiaohongshuSign,
4313
+ xiaohongshuApiUrls,
4314
+ api: xiaohongshu
4315
+ };
3592
4316
  var createAmagiClient = (options) => {
3593
- var _a, _b, _c;
4317
+ var _a, _b, _c, _d;
3594
4318
  const douyinCookie = ((_a = options == null ? void 0 : options.cookies) == null ? void 0 : _a.douyin) ?? "";
3595
4319
  const bilibiliCookie = ((_b = options == null ? void 0 : options.cookies) == null ? void 0 : _b.bilibili) ?? "";
3596
4320
  const kuaishouCookie = ((_c = options == null ? void 0 : options.cookies) == null ? void 0 : _c.kuaishou) ?? "";
4321
+ const xiaohongshuCookie = ((_d = options == null ? void 0 : options.cookies) == null ? void 0 : _d.xiaohongshu) ?? "";
3597
4322
  const requestConfig = (options == null ? void 0 : options.request) ?? {};
3598
4323
  const startServer = (port = 4567) => {
3599
4324
  const app = express__default.default();
@@ -3608,6 +4333,7 @@ var createAmagiClient = (options) => {
3608
4333
  app.use("/api/douyin", createDouyinRoutes(douyinCookie, requestConfig));
3609
4334
  app.use("/api/bilibili", createBilibiliRoutes(bilibiliCookie, requestConfig));
3610
4335
  app.use("/api/kuaishou", createKuaishouRoutes(kuaishouCookie, requestConfig));
4336
+ app.use("/api/xiaohongshu", createXiaohongshuRoutes(xiaohongshuCookie, requestConfig));
3611
4337
  app.listen(port, "::", () => {
3612
4338
  logger.mark(`Amagi server listening on ${logger.green(`http://localhost:${port}`)} ${logger.yellow("API docs: https://amagi.apifox.cn ")}`);
3613
4339
  });
@@ -3622,12 +4348,16 @@ var createAmagiClient = (options) => {
3622
4348
  const getKuaishouDataWithCookie = async (methodType, options2) => {
3623
4349
  return await getKuaishouData(methodType, options2, kuaishouCookie);
3624
4350
  };
4351
+ const getXiaohongshuDataWithCookie = async (methodType, options2) => {
4352
+ return await getXiaohongshuData(methodType, options2, xiaohongshuCookie);
4353
+ };
3625
4354
  return {
3626
4355
  /** 启动本地HTTP服务 */
3627
4356
  startServer,
3628
4357
  getDouyinData: getDouyinDataWithCookie,
3629
4358
  getBilibiliData: getBilibiliDataWithCookie,
3630
4359
  getKuaishouData: getKuaishouDataWithCookie,
4360
+ getXiaohongshuData: getXiaohongshuDataWithCookie,
3631
4361
  douyin: {
3632
4362
  ...douyinUtils,
3633
4363
  /** 绑定了cookie和请求配置的抖音API对象,调用时不需要传递cookie */
@@ -3642,6 +4372,11 @@ var createAmagiClient = (options) => {
3642
4372
  ...kuaishouUtils,
3643
4373
  /** 绑定了cookie和请求配置的快手API对象,调用时不需要传递cookie */
3644
4374
  api: createBoundKuaishouApi(kuaishouCookie)
4375
+ },
4376
+ xiaohongshu: {
4377
+ ...xiaohongshuUtils,
4378
+ /** 绑定了cookie和请求配置的小红书API对象,调用时不需要传递cookie */
4379
+ api: createBoundXiaohongshuApi(xiaohongshuCookie)
3645
4380
  }
3646
4381
  };
3647
4382
  };
@@ -3702,9 +4437,11 @@ function CreateAmagiApp(options = {}) {
3702
4437
  CreateAmagiApp.douyin = douyinUtils;
3703
4438
  CreateAmagiApp.bilibili = bilibiliUtils;
3704
4439
  CreateAmagiApp.kuaishou = kuaishouUtils;
4440
+ CreateAmagiApp.xiaohongshu = xiaohongshuUtils;
3705
4441
  CreateAmagiApp.getDouyinData = getDouyinData;
3706
4442
  CreateAmagiApp.getBilibiliData = getBilibiliData;
3707
4443
  CreateAmagiApp.getKuaishouData = getKuaishouData;
4444
+ CreateAmagiApp.getXiaohongshuData = getXiaohongshuData;
3708
4445
  var CreateApp = CreateAmagiApp;
3709
4446
  var Client = CreateApp;
3710
4447
  var amagi = Client;
@@ -3750,6 +4487,7 @@ exports.KuaishouValidationSchemas = KuaishouValidationSchemas2;
3750
4487
  exports.KuaishouVideoParamsSchema = KuaishouVideoParamsSchema;
3751
4488
  exports.MajorType = MajorType;
3752
4489
  exports.ValidationError = ValidationError;
4490
+ exports.XiaohongshuValidationSchemas = XiaohongshuValidationSchemas;
3753
4491
  exports.amagi = amagi;
3754
4492
  exports.amagiClient = amagiClient;
3755
4493
  exports.av2bv = av2bv;
@@ -3763,10 +4501,12 @@ exports.createBilibiliRoutes = createBilibiliRoutes;
3763
4501
  exports.createBoundBilibiliApi = createBoundBilibiliApi;
3764
4502
  exports.createBoundDouyinApi = createBoundDouyinApi;
3765
4503
  exports.createBoundKuaishouApi = createBoundKuaishouApi;
4504
+ exports.createBoundXiaohongshuApi = createBoundXiaohongshuApi;
3766
4505
  exports.createDouyinRoutes = createDouyinRoutes;
3767
4506
  exports.createErrorResponse = createErrorResponse;
3768
4507
  exports.createKuaishouRoutes = createKuaishouRoutes;
3769
4508
  exports.createSuccessResponse = createSuccessResponse;
4509
+ exports.createXiaohongshuRoutes = createXiaohongshuRoutes;
3770
4510
  exports.default = Client;
3771
4511
  exports.douyin = douyin;
3772
4512
  exports.douyinApiUrls = douyinApiUrls;
@@ -3789,7 +4529,13 @@ exports.qtparam = qtparam;
3789
4529
  exports.registerBilibiliRoutes = createBilibiliRoutes;
3790
4530
  exports.registerDouyinRoutes = createDouyinRoutes;
3791
4531
  exports.registerKuaishouRoutes = createKuaishouRoutes;
4532
+ exports.registerXiaohongshuRoutes = createXiaohongshuRoutes;
3792
4533
  exports.validateBilibiliParams = validateBilibiliParams;
3793
4534
  exports.validateDouyinParams = validateDouyinParams;
3794
4535
  exports.validateKuaishouParams = validateKuaishouParams;
4536
+ exports.validateXiaohongshuParams = validateXiaohongshuParams;
3795
4537
  exports.wbi_sign = wbi_sign;
4538
+ exports.xiaohongshu = xiaohongshu;
4539
+ exports.xiaohongshuApiUrls = xiaohongshuApiUrls;
4540
+ exports.xiaohongshuSign = xiaohongshuSign;
4541
+ exports.xiaohongshuUtils = xiaohongshuUtils;