@ikenxuan/amagi 5.4.1 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/default/cjs/index.cjs +823 -77
- package/dist/default/esm/index.mjs +814 -77
- package/dist/default/index.d.ts +1393 -81
- package/package.json +10 -4
|
@@ -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.
|
|
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({
|
|
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({
|
|
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
|
-
|
|
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({
|
|
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", {
|
|
2365
|
-
aweme_id: zod.z.string({
|
|
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({
|
|
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
|
-
|
|
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({
|
|
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({
|
|
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", {
|
|
2380
|
-
aweme_id: zod.z.string({
|
|
2381
|
-
comment_id: zod.z.string({
|
|
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({
|
|
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
|
-
|
|
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({
|
|
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", {
|
|
2394
|
-
music_id: zod.z.string({
|
|
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", {
|
|
2398
|
-
verify_fp: zod.z.string({
|
|
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", {
|
|
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", {
|
|
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", {
|
|
2408
|
-
aweme_id: zod.z.string({
|
|
2409
|
-
start_time: zod.z.coerce.number({
|
|
2410
|
-
end_time: zod.z.coerce.number({
|
|
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
|
-
|
|
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
|
-
|
|
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", {
|
|
2459
|
-
bvid: zod.z.string({
|
|
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", {
|
|
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", {
|
|
2468
|
-
oid: zod.z.string({
|
|
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
|
-
{
|
|
2512
|
+
{ error: "\u65E0\u6548\u7684\u8BC4\u8BBA\u533A\u7C7B\u578B" }
|
|
2472
2513
|
),
|
|
2473
|
-
number: zod.z.coerce.number({
|
|
2474
|
-
pn: zod.z.coerce.number({
|
|
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
|
-
|
|
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", {
|
|
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", {
|
|
2488
|
-
ep_id: zod.z.string({
|
|
2489
|
-
season_id: zod.z.string({
|
|
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
|
-
|
|
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", {
|
|
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({
|
|
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
|
-
|
|
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({
|
|
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
|
-
|
|
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({
|
|
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", {
|
|
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", {
|
|
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", {
|
|
2524
|
-
qrcode_key: zod.z.string({
|
|
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", {
|
|
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", {
|
|
2535
|
-
bvid: zod.z.string({
|
|
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", {
|
|
2559
|
-
photoId: zod.z.string({
|
|
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", {
|
|
2563
|
-
photoId: zod.z.string({
|
|
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", {
|
|
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) || "\u672A\u77E5\u9519\u8BEF"}`);
|
|
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.
|
|
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;
|