@ikenxuan/amagi 5.4.2 → 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 +5 -4
|
@@ -6,6 +6,7 @@ import fs from 'fs';
|
|
|
6
6
|
import axios, { AxiosError } from 'axios';
|
|
7
7
|
import crypto from 'crypto';
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
+
import { Xhshow } from '@ikenxuan/xhshow-ts';
|
|
9
10
|
import express, { Router } from 'express';
|
|
10
11
|
|
|
11
12
|
/*!
|
|
@@ -340,6 +341,16 @@ var kuaishouAPIErrorCode = /* @__PURE__ */ ((kuaishouAPIErrorCode2) => {
|
|
|
340
341
|
kuaishouAPIErrorCode2["UNKNOWN"] = "UNKNOWN_ERROR" /* UNKNOWN */;
|
|
341
342
|
return kuaishouAPIErrorCode2;
|
|
342
343
|
})(kuaishouAPIErrorCode || {});
|
|
344
|
+
var xiaohongshuAPIErrorCode = /* @__PURE__ */ ((xiaohongshuAPIErrorCode2) => {
|
|
345
|
+
xiaohongshuAPIErrorCode2["COOKIE"] = "INVALID_COOKIE";
|
|
346
|
+
xiaohongshuAPIErrorCode2["UNKNOWN"] = "UNKNOWN_ERROR" /* UNKNOWN */;
|
|
347
|
+
xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["ILLEGAL_REQUEST"] = 500] = "ILLEGAL_REQUEST";
|
|
348
|
+
xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["ACCOUNT_ABNORMAL"] = 300011] = "ACCOUNT_ABNORMAL";
|
|
349
|
+
xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["NETWORK_ERROR"] = 300012] = "NETWORK_ERROR";
|
|
350
|
+
xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["FREQUENCY_ERROR"] = 300013] = "FREQUENCY_ERROR";
|
|
351
|
+
xiaohongshuAPIErrorCode2[xiaohongshuAPIErrorCode2["BROWSER_ERROR"] = 300015] = "BROWSER_ERROR";
|
|
352
|
+
return xiaohongshuAPIErrorCode2;
|
|
353
|
+
})(xiaohongshuAPIErrorCode || {});
|
|
343
354
|
var mixinKeyEncTab = [
|
|
344
355
|
46,
|
|
345
356
|
47,
|
|
@@ -531,6 +542,27 @@ var getKuaishouDefaultConfig = (cookie, requestConfig) => {
|
|
|
531
542
|
}
|
|
532
543
|
};
|
|
533
544
|
};
|
|
545
|
+
var getXiaohongshuDefaultConfig = (cookie) => {
|
|
546
|
+
return {
|
|
547
|
+
headers: {
|
|
548
|
+
"accept": "application/json, text/plain, */*",
|
|
549
|
+
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
550
|
+
"cache-control": "no-cache",
|
|
551
|
+
"content-type": "application/json;charset=UTF-8",
|
|
552
|
+
"pragma": "no-cache",
|
|
553
|
+
"priority": "u=1, i",
|
|
554
|
+
"referer": "https://www.xiaohongshu.com/",
|
|
555
|
+
"sec-ch-ua": '"Microsoft Edge";v="141", "Not?A_Brand";v="8", "Chromium";v="141"',
|
|
556
|
+
"sec-ch-ua-mobile": "?0",
|
|
557
|
+
"sec-ch-ua-platform": '"Windows"',
|
|
558
|
+
"sec-fetch-dest": "empty",
|
|
559
|
+
"sec-fetch-mode": "cors",
|
|
560
|
+
"sec-fetch-site": "same-site",
|
|
561
|
+
"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",
|
|
562
|
+
"cookie": cookie || ""
|
|
563
|
+
}
|
|
564
|
+
};
|
|
565
|
+
};
|
|
534
566
|
|
|
535
567
|
// src/platform/bilibili/getdata.ts
|
|
536
568
|
var fetchBilibili = async (data2, cookie, requestConfig) => {
|
|
@@ -2327,75 +2359,84 @@ var GlobalGetData3 = async (type, options) => {
|
|
|
2327
2359
|
};
|
|
2328
2360
|
function smartNumber(errorMessage, minValue = 1, isInteger = false) {
|
|
2329
2361
|
if (isInteger) {
|
|
2330
|
-
return z.coerce.number({
|
|
2362
|
+
return 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}` });
|
|
2331
2363
|
} else {
|
|
2332
|
-
return z.coerce.number({
|
|
2364
|
+
return z.coerce.number({ error: errorMessage }).min(minValue, { error: `${errorMessage.replace("\u4E0D\u80FD\u4E3A\u7A7A", "")}\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E${minValue}` });
|
|
2333
2365
|
}
|
|
2334
2366
|
}
|
|
2335
2367
|
var smartPositiveInteger = (errorMessage) => {
|
|
2336
2368
|
return smartNumber(errorMessage, 1, true);
|
|
2337
2369
|
};
|
|
2370
|
+
var extractCreatorInfoFromHtml = (html) => {
|
|
2371
|
+
var _a;
|
|
2372
|
+
const match = html.match(/<script>window\.__INITIAL_STATE__=(.+)<\/script>/m);
|
|
2373
|
+
if (!match) {
|
|
2374
|
+
return null;
|
|
2375
|
+
}
|
|
2376
|
+
try {
|
|
2377
|
+
const jsonStr = match[1].replace(/:undefined/g, ":null");
|
|
2378
|
+
const info = JSON.parse(jsonStr);
|
|
2379
|
+
return ((_a = info == null ? void 0 : info.user) == null ? void 0 : _a.userPageData) || null;
|
|
2380
|
+
} catch (error) {
|
|
2381
|
+
console.error("\u89E3\u6790\u7528\u6237\u4FE1\u606F\u5931\u8D25:", error);
|
|
2382
|
+
return null;
|
|
2383
|
+
}
|
|
2384
|
+
};
|
|
2338
2385
|
|
|
2339
2386
|
// src/validation/douyin.ts
|
|
2340
2387
|
var DouyinWorkParamsSchema = z.object({
|
|
2341
2388
|
methodType: 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"], {
|
|
2342
|
-
|
|
2343
|
-
required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
|
|
2389
|
+
error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00"
|
|
2344
2390
|
}),
|
|
2345
|
-
aweme_id: z.string({
|
|
2391
|
+
aweme_id: z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2346
2392
|
});
|
|
2347
2393
|
var DouyinCommentParamsSchema = z.object({
|
|
2348
|
-
methodType: z.literal("\u8BC4\u8BBA\u6570\u636E", {
|
|
2349
|
-
aweme_id: z.string({
|
|
2394
|
+
methodType: z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
|
|
2395
|
+
aweme_id: z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" }),
|
|
2350
2396
|
number: smartPositiveInteger("\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6574\u6570").optional().default(50),
|
|
2351
|
-
cursor: z.coerce.number({
|
|
2397
|
+
cursor: 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()
|
|
2352
2398
|
});
|
|
2353
2399
|
var DouyinSearchParamsSchema = z.object({
|
|
2354
2400
|
methodType: z.enum(["\u70ED\u70B9\u8BCD\u6570\u636E", "\u641C\u7D22\u6570\u636E"], {
|
|
2355
|
-
|
|
2356
|
-
required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
|
|
2401
|
+
error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u70ED\u70B9\u8BCD\u6570\u636E"\u6216"\u641C\u7D22\u6570\u636E"'
|
|
2357
2402
|
}),
|
|
2358
|
-
query: z.string({
|
|
2403
|
+
query: z.string({ error: "\u641C\u7D22\u8BCD\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u641C\u7D22\u8BCD\u4E0D\u80FD\u4E3A\u7A7A" }),
|
|
2359
2404
|
number: smartPositiveInteger("\u641C\u7D22\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6574\u6570").optional().default(10),
|
|
2360
|
-
search_id: z.string({
|
|
2405
|
+
search_id: z.string({ error: "\u641C\u7D22ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
|
|
2361
2406
|
});
|
|
2362
2407
|
var DouyinCommentReplyParamsSchema = z.object({
|
|
2363
|
-
methodType: z.literal("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", {
|
|
2364
|
-
aweme_id: z.string({
|
|
2365
|
-
comment_id: z.string({
|
|
2408
|
+
methodType: 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"' }),
|
|
2409
|
+
aweme_id: z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" }),
|
|
2410
|
+
comment_id: z.string({ error: "\u8BC4\u8BBAID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u8BC4\u8BBAID\u4E0D\u80FD\u4E3A\u7A7A" }),
|
|
2366
2411
|
number: smartPositiveInteger("\u8BC4\u8BBA\u6570\u91CF\u5FC5\u987B\u662F\u6B63\u6574\u6570").optional().default(5),
|
|
2367
|
-
cursor: z.coerce.number({
|
|
2412
|
+
cursor: 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
2413
|
});
|
|
2369
2414
|
var DouyinUserParamsSchema = z.object({
|
|
2370
2415
|
methodType: 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"], {
|
|
2371
|
-
|
|
2372
|
-
required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
|
|
2416
|
+
error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00"
|
|
2373
2417
|
}),
|
|
2374
|
-
sec_uid: z.string({
|
|
2418
|
+
sec_uid: z.string({ error: "\u7528\u6237ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2375
2419
|
});
|
|
2376
2420
|
var DouyinMusicParamsSchema = z.object({
|
|
2377
|
-
methodType: z.literal("\u97F3\u4E50\u6570\u636E", {
|
|
2378
|
-
music_id: z.string({
|
|
2421
|
+
methodType: z.literal("\u97F3\u4E50\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u97F3\u4E50\u6570\u636E"' }),
|
|
2422
|
+
music_id: z.string({ error: "\u97F3\u4E50ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u97F3\u4E50ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2379
2423
|
});
|
|
2380
2424
|
var DouyinQrcodeParamsSchema = z.object({
|
|
2381
|
-
methodType: z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E", {
|
|
2382
|
-
verify_fp: z.string({
|
|
2425
|
+
methodType: z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E"' }),
|
|
2426
|
+
verify_fp: z.string({ error: "fp\u6307\u7EB9\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "fp\u6307\u7EB9\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2383
2427
|
});
|
|
2384
2428
|
var DouyinEmojiListParamsSchema = z.object({
|
|
2385
|
-
methodType: z.literal("Emoji\u6570\u636E", {
|
|
2429
|
+
methodType: z.literal("Emoji\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
|
|
2386
2430
|
});
|
|
2387
2431
|
var DouyinEmojiProParamsSchema = z.object({
|
|
2388
|
-
methodType: z.literal("\u52A8\u6001\u8868\u60C5\u6570\u636E", {
|
|
2432
|
+
methodType: z.literal("\u52A8\u6001\u8868\u60C5\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u52A8\u6001\u8868\u60C5\u6570\u636E"' })
|
|
2389
2433
|
});
|
|
2390
2434
|
var DouyinDanmakuParamsSchema = z.object({
|
|
2391
|
-
methodType: z.literal("\u5F39\u5E55\u6570\u636E", {
|
|
2392
|
-
aweme_id: z.string({
|
|
2393
|
-
start_time: z.coerce.number({
|
|
2394
|
-
end_time: z.coerce.number({
|
|
2395
|
-
duration: z.number({
|
|
2396
|
-
required_error: "\u89C6\u9891\u65F6\u957F\u4E0D\u80FD\u4E3A\u7A7A",
|
|
2397
|
-
invalid_type_error: "\u89C6\u9891\u65F6\u957F\u5FC5\u987B\u662F\u6570\u5B57"
|
|
2398
|
-
}).int({ message: "\u89C6\u9891\u65F6\u957F\u5FC5\u987B\u662F\u6574\u6570" }).min(0, "\u89C6\u9891\u65F6\u957F\u4E0D\u80FD\u5C0F\u4E8E0")
|
|
2435
|
+
methodType: z.literal("\u5F39\u5E55\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5F39\u5E55\u6570\u636E"' }),
|
|
2436
|
+
aweme_id: z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" }),
|
|
2437
|
+
start_time: 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(),
|
|
2438
|
+
end_time: 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(),
|
|
2439
|
+
duration: 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" })
|
|
2399
2440
|
}).refine(
|
|
2400
2441
|
(data2) => {
|
|
2401
2442
|
if (data2.end_time !== void 0) {
|
|
@@ -2404,7 +2445,7 @@ var DouyinDanmakuParamsSchema = z.object({
|
|
|
2404
2445
|
return true;
|
|
2405
2446
|
},
|
|
2406
2447
|
{
|
|
2407
|
-
|
|
2448
|
+
error: "\u83B7\u53D6\u5F39\u5E55\u533A\u95F4\u7684\u7ED3\u675F\u65F6\u95F4\u4E0D\u80FD\u8D85\u8FC7\u89C6\u9891\u603B\u65F6\u957F",
|
|
2408
2449
|
path: ["end_time"]
|
|
2409
2450
|
}
|
|
2410
2451
|
).refine(
|
|
@@ -2415,7 +2456,7 @@ var DouyinDanmakuParamsSchema = z.object({
|
|
|
2415
2456
|
return true;
|
|
2416
2457
|
},
|
|
2417
2458
|
{
|
|
2418
|
-
|
|
2459
|
+
error: "\u83B7\u53D6\u5F39\u5E55\u533A\u95F4\u7684\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u5C0F\u4E8E\u7ED3\u675F\u65F6\u95F4",
|
|
2419
2460
|
path: ["start_time"]
|
|
2420
2461
|
}
|
|
2421
2462
|
);
|
|
@@ -2439,84 +2480,78 @@ var DouyinValidationSchemas2 = {
|
|
|
2439
2480
|
"\u5F39\u5E55\u6570\u636E": DouyinDanmakuParamsSchema
|
|
2440
2481
|
};
|
|
2441
2482
|
var BilibiliVideoParamsSchema = z.object({
|
|
2442
|
-
methodType: z.literal("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", {
|
|
2443
|
-
bvid: z.string({
|
|
2483
|
+
methodType: 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"' }),
|
|
2484
|
+
bvid: z.string({ error: "BVID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "BVID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2444
2485
|
});
|
|
2445
2486
|
var BilibiliVideoDownloadParamsSchema = z.object({
|
|
2446
|
-
methodType: z.literal("\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", {
|
|
2487
|
+
methodType: 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"' }),
|
|
2447
2488
|
avid: smartNumber("AVID\u4E0D\u80FD\u4E3A\u7A7A", 1, true),
|
|
2448
2489
|
cid: smartNumber("CID\u4E0D\u80FD\u4E3A\u7A7A", 1, true)
|
|
2449
2490
|
});
|
|
2450
2491
|
var BilibiliCommentParamsSchema = z.object({
|
|
2451
|
-
methodType: z.literal("\u8BC4\u8BBA\u6570\u636E", {
|
|
2452
|
-
oid: z.string({
|
|
2492
|
+
methodType: z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
|
|
2493
|
+
oid: z.string({ error: "OID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "OID\u4E0D\u80FD\u4E3A\u7A7A" }),
|
|
2453
2494
|
type: smartNumber("\u8BC4\u8BBA\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A", 1, true).refine(
|
|
2454
2495
|
(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),
|
|
2455
|
-
{
|
|
2496
|
+
{ error: "\u65E0\u6548\u7684\u8BC4\u8BBA\u533A\u7C7B\u578B" }
|
|
2456
2497
|
),
|
|
2457
|
-
number: z.coerce.number({
|
|
2458
|
-
pn: z.coerce.number({
|
|
2498
|
+
number: 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(),
|
|
2499
|
+
pn: 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()
|
|
2459
2500
|
});
|
|
2460
2501
|
var BilibiliUserParamsSchema = z.object({
|
|
2461
2502
|
methodType: 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"], {
|
|
2462
|
-
|
|
2463
|
-
required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
|
|
2503
|
+
error: "\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F\u6307\u5B9A\u7684\u679A\u4E3E\u503C\u4E4B\u4E00"
|
|
2464
2504
|
}),
|
|
2465
2505
|
host_mid: smartNumber("UP\u4E3BUID\u4E0D\u80FD\u4E3A\u7A7A", 1, true)
|
|
2466
2506
|
});
|
|
2467
2507
|
var BilibiliEmojiParamsSchema = z.object({
|
|
2468
|
-
methodType: z.literal("Emoji\u6570\u636E", {
|
|
2508
|
+
methodType: z.literal("Emoji\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
|
|
2469
2509
|
});
|
|
2470
2510
|
var BilibiliBangumiInfoParamsSchema = z.object({
|
|
2471
|
-
methodType: z.literal("\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", {
|
|
2472
|
-
ep_id: z.string({
|
|
2473
|
-
season_id: z.string({
|
|
2511
|
+
methodType: 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"' }),
|
|
2512
|
+
ep_id: z.string({ error: "\u756A\u5267EP ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u756A\u5267EP ID\u4E0D\u80FD\u4E3A\u7A7A" }).optional(),
|
|
2513
|
+
season_id: z.string({ error: "\u756A\u5267\u5B63\u5EA6ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
|
|
2474
2514
|
}).refine(
|
|
2475
2515
|
(data2) => data2.ep_id || data2.season_id,
|
|
2476
2516
|
{
|
|
2477
|
-
|
|
2517
|
+
error: "ep_id \u548C season_id \u81F3\u5C11\u9700\u8981\u63D0\u4F9B\u4E00\u4E2A",
|
|
2478
2518
|
path: ["ep_id"]
|
|
2479
2519
|
}
|
|
2480
2520
|
);
|
|
2481
2521
|
var BilibiliBangumiStreamParamsSchema = z.object({
|
|
2482
|
-
methodType: z.literal("\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", {
|
|
2522
|
+
methodType: 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"' }),
|
|
2483
2523
|
cid: smartNumber("CID\u4E0D\u80FD\u4E3A\u7A7A", 1, true),
|
|
2484
|
-
ep_id: z.string({
|
|
2524
|
+
ep_id: z.string({ error: "\u756A\u5267EP ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u756A\u5267EP ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2485
2525
|
});
|
|
2486
2526
|
var BilibiliDynamicParamsSchema = z.object({
|
|
2487
2527
|
methodType: z.enum(["\u52A8\u6001\u8BE6\u60C5\u6570\u636E", "\u52A8\u6001\u5361\u7247\u6570\u636E"], {
|
|
2488
|
-
|
|
2489
|
-
required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
|
|
2528
|
+
error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u52A8\u6001\u8BE6\u60C5\u6570\u636E"\u6216"\u52A8\u6001\u5361\u7247\u6570\u636E"'
|
|
2490
2529
|
}),
|
|
2491
|
-
dynamic_id: z.string({
|
|
2530
|
+
dynamic_id: z.string({ error: "\u52A8\u6001ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u52A8\u6001ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2492
2531
|
});
|
|
2493
2532
|
var BilibiliLiveParamsSchema = z.object({
|
|
2494
2533
|
methodType: z.enum(["\u76F4\u64AD\u95F4\u4FE1\u606F", "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"], {
|
|
2495
|
-
|
|
2496
|
-
required_error: "\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A"
|
|
2534
|
+
error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u76F4\u64AD\u95F4\u4FE1\u606F"\u6216"\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"'
|
|
2497
2535
|
}),
|
|
2498
|
-
room_id: z.string({
|
|
2536
|
+
room_id: z.string({ error: "\u76F4\u64AD\u95F4ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u76F4\u64AD\u95F4ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2499
2537
|
});
|
|
2500
2538
|
var BilibiliLoginParamsSchema = z.object({
|
|
2501
|
-
methodType: z.literal("\u767B\u5F55\u57FA\u672C\u4FE1\u606F", {
|
|
2539
|
+
methodType: z.literal("\u767B\u5F55\u57FA\u672C\u4FE1\u606F", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u767B\u5F55\u57FA\u672C\u4FE1\u606F"' })
|
|
2502
2540
|
});
|
|
2503
2541
|
var BilibiliQrcodeParamsSchema = z.object({
|
|
2504
|
-
methodType: z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801", {
|
|
2542
|
+
methodType: z.literal("\u7533\u8BF7\u4E8C\u7EF4\u7801", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7533\u8BF7\u4E8C\u7EF4\u7801"' })
|
|
2505
2543
|
});
|
|
2506
2544
|
var BilibiliQrcodeStatusParamsSchema = z.object({
|
|
2507
|
-
methodType: z.literal("\u4E8C\u7EF4\u7801\u72B6\u6001", {
|
|
2508
|
-
qrcode_key: z.string({
|
|
2545
|
+
methodType: z.literal("\u4E8C\u7EF4\u7801\u72B6\u6001", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u4E8C\u7EF4\u7801\u72B6\u6001"' }),
|
|
2546
|
+
qrcode_key: z.string({ error: "\u4E8C\u7EF4\u7801key\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u4E8C\u7EF4\u7801key\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2509
2547
|
});
|
|
2510
2548
|
var BilibiliAv2BvParamsSchema = z.object({
|
|
2511
|
-
methodType: z.literal("AV\u8F6CBV", {
|
|
2512
|
-
avid: z.coerce.number({
|
|
2513
|
-
required_error: "AVID\u4E0D\u80FD\u4E3A\u7A7A",
|
|
2514
|
-
invalid_type_error: "AVID\u5FC5\u987B\u662F\u6570\u5B57"
|
|
2515
|
-
}).int({ message: "AVID\u5FC5\u987B\u662F\u6574\u6570" }).positive({ message: "AVID\u5FC5\u987B\u662F\u6B63\u6570" })
|
|
2549
|
+
methodType: z.literal("AV\u8F6CBV", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"AV\u8F6CBV"' }),
|
|
2550
|
+
avid: 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" })
|
|
2516
2551
|
});
|
|
2517
2552
|
var BilibiliBv2AvParamsSchema = z.object({
|
|
2518
|
-
methodType: z.literal("BV\u8F6CAV", {
|
|
2519
|
-
bvid: z.string({
|
|
2553
|
+
methodType: z.literal("BV\u8F6CAV", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"BV\u8F6CAV"' }),
|
|
2554
|
+
bvid: z.string({ error: "BVID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "BVID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2520
2555
|
});
|
|
2521
2556
|
var BilibiliValidationSchemas2 = {
|
|
2522
2557
|
"\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": BilibiliVideoParamsSchema,
|
|
@@ -2539,21 +2574,307 @@ var BilibiliValidationSchemas2 = {
|
|
|
2539
2574
|
"BV\u8F6CAV": BilibiliBv2AvParamsSchema
|
|
2540
2575
|
};
|
|
2541
2576
|
var KuaishouVideoParamsSchema = z.object({
|
|
2542
|
-
methodType: z.literal("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", {
|
|
2543
|
-
photoId: z.string({
|
|
2577
|
+
methodType: 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"' }),
|
|
2578
|
+
photoId: z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2544
2579
|
});
|
|
2545
2580
|
var KuaishouCommentParamsSchema = z.object({
|
|
2546
|
-
methodType: z.literal("\u8BC4\u8BBA\u6570\u636E", {
|
|
2547
|
-
photoId: z.string({
|
|
2581
|
+
methodType: z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
|
|
2582
|
+
photoId: z.string({ error: "\u89C6\u9891ID\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).min(1, { error: "\u89C6\u9891ID\u4E0D\u80FD\u4E3A\u7A7A" })
|
|
2548
2583
|
});
|
|
2549
2584
|
var KuaishouEmojiParamsSchema = z.object({
|
|
2550
|
-
methodType: z.literal("Emoji\u6570\u636E", {
|
|
2585
|
+
methodType: z.literal("Emoji\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"Emoji\u6570\u636E"' })
|
|
2551
2586
|
});
|
|
2552
2587
|
var KuaishouValidationSchemas2 = {
|
|
2553
2588
|
"\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": KuaishouVideoParamsSchema,
|
|
2554
2589
|
"\u8BC4\u8BBA\u6570\u636E": KuaishouCommentParamsSchema,
|
|
2555
2590
|
"Emoji\u6570\u636E": KuaishouEmojiParamsSchema
|
|
2556
2591
|
};
|
|
2592
|
+
var xiaohongshuSign = class {
|
|
2593
|
+
static client = new Xhshow();
|
|
2594
|
+
/**
|
|
2595
|
+
* 生成GET请求的X-S签名
|
|
2596
|
+
* @param path - API路径
|
|
2597
|
+
* @param a1Cookie - a1 cookie值
|
|
2598
|
+
* @param clientType - 客户端类型,默认为 'xhs-pc-web'
|
|
2599
|
+
* @param params - 查询参数对象
|
|
2600
|
+
* @returns X-S签名
|
|
2601
|
+
*/
|
|
2602
|
+
static generateXSGet(path2, a1Cookie, clientType = "xhs-pc-web", params = {}) {
|
|
2603
|
+
return this.client.signXsGet(path2, a1Cookie, clientType, params);
|
|
2604
|
+
}
|
|
2605
|
+
/**
|
|
2606
|
+
* 生成POST请求的X-S签名
|
|
2607
|
+
* @param path - API路径
|
|
2608
|
+
* @param a1Cookie - a1 cookie值
|
|
2609
|
+
* @param clientType - 客户端类型,默认为 'xhs-pc-web'
|
|
2610
|
+
* @param body - 请求体对象
|
|
2611
|
+
* @returns X-S签名
|
|
2612
|
+
*/
|
|
2613
|
+
static generateXSPost(path2, a1Cookie, clientType = "xhs-pc-web", body = {}) {
|
|
2614
|
+
return this.client.signXsPost(path2, a1Cookie, clientType, body);
|
|
2615
|
+
}
|
|
2616
|
+
/**
|
|
2617
|
+
* 生成X-S签名(兼容旧接口)
|
|
2618
|
+
* @param url - 请求URL
|
|
2619
|
+
* @param body - 请求体
|
|
2620
|
+
* @param userAgent - User-Agent(暂未使用)
|
|
2621
|
+
* @param method - 请求方法,默认为 'POST'
|
|
2622
|
+
* @param a1Cookie - a1 cookie值
|
|
2623
|
+
* @returns X-S签名
|
|
2624
|
+
*/
|
|
2625
|
+
static generateXS(url, body, userAgent, method = "POST", a1Cookie = "") {
|
|
2626
|
+
try {
|
|
2627
|
+
const urlObj = new URL(url);
|
|
2628
|
+
const path2 = urlObj.pathname + urlObj.search;
|
|
2629
|
+
if (method.toUpperCase() === "GET") {
|
|
2630
|
+
const params = typeof body === "object" ? body : {};
|
|
2631
|
+
return this.generateXSGet(path2, a1Cookie, "xhs-pc-web", params);
|
|
2632
|
+
} else {
|
|
2633
|
+
const requestBody = typeof body === "object" ? body : {};
|
|
2634
|
+
return this.generateXSPost(path2, a1Cookie, "xhs-pc-web", requestBody);
|
|
2635
|
+
}
|
|
2636
|
+
} catch (error) {
|
|
2637
|
+
console.error("\u751F\u6210X-S\u7B7E\u540D\u5931\u8D25:", error);
|
|
2638
|
+
throw new Error(`\u7B7E\u540D\u751F\u6210\u5931\u8D25: ${error}`);
|
|
2639
|
+
}
|
|
2640
|
+
}
|
|
2641
|
+
/**
|
|
2642
|
+
* 生成X-S-Common参数
|
|
2643
|
+
* @param length - 长度
|
|
2644
|
+
* @returns Base64编码的随机字符串
|
|
2645
|
+
*/
|
|
2646
|
+
static generateXSCommon(length = 945) {
|
|
2647
|
+
return crypto.randomBytes(length).toString("base64").replace(/=+$/, "");
|
|
2648
|
+
}
|
|
2649
|
+
/**
|
|
2650
|
+
* 生成X-T时间戳
|
|
2651
|
+
* @returns 当前时间戳字符串
|
|
2652
|
+
*/
|
|
2653
|
+
static generateXT() {
|
|
2654
|
+
return Date.now().toString();
|
|
2655
|
+
}
|
|
2656
|
+
/**
|
|
2657
|
+
* 生成X-B3-Traceid
|
|
2658
|
+
* @returns 16位随机字符串
|
|
2659
|
+
*/
|
|
2660
|
+
static generateXB3Traceid() {
|
|
2661
|
+
return Array.from({ length: 16 }, () => "abcdef0123456789"[Math.floor(Math.random() * 16)]).join("");
|
|
2662
|
+
}
|
|
2663
|
+
/**
|
|
2664
|
+
* 从cookie字符串中提取a1值
|
|
2665
|
+
* @param cookieString - 完整的cookie字符串
|
|
2666
|
+
* @returns a1 cookie值
|
|
2667
|
+
*/
|
|
2668
|
+
static extractA1FromCookie(cookieString) {
|
|
2669
|
+
const match = cookieString.match(/a1=([^;]+)/);
|
|
2670
|
+
return match ? match[1] : "";
|
|
2671
|
+
}
|
|
2672
|
+
/**
|
|
2673
|
+
* 生成搜索ID
|
|
2674
|
+
* @returns 搜索ID字符串
|
|
2675
|
+
*/
|
|
2676
|
+
static getSearchId = () => (BigInt(Date.now()) << 64n) + BigInt(Math.floor(Math.random() * 2147483646)).toString(36);
|
|
2677
|
+
};
|
|
2678
|
+
|
|
2679
|
+
// src/platform/xiaohongshu/API.ts
|
|
2680
|
+
var SearchSortType = /* @__PURE__ */ ((SearchSortType2) => {
|
|
2681
|
+
SearchSortType2["GENERAL"] = "general";
|
|
2682
|
+
SearchSortType2["MOST_POPULAR"] = "popularity_descending";
|
|
2683
|
+
SearchSortType2["LATEST"] = "time_descending";
|
|
2684
|
+
return SearchSortType2;
|
|
2685
|
+
})(SearchSortType || {});
|
|
2686
|
+
var SearchNoteType = /* @__PURE__ */ ((SearchNoteType2) => {
|
|
2687
|
+
SearchNoteType2[SearchNoteType2["ALL"] = 0] = "ALL";
|
|
2688
|
+
SearchNoteType2[SearchNoteType2["VIDEO"] = 1] = "VIDEO";
|
|
2689
|
+
SearchNoteType2[SearchNoteType2["IMAGE"] = 2] = "IMAGE";
|
|
2690
|
+
return SearchNoteType2;
|
|
2691
|
+
})(SearchNoteType || {});
|
|
2692
|
+
var buildQueryString2 = (params) => {
|
|
2693
|
+
return Object.entries(params).filter(([_, value]) => value !== void 0 && value !== null).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join("&");
|
|
2694
|
+
};
|
|
2695
|
+
var xiaohongshuApiUrls = {
|
|
2696
|
+
/**
|
|
2697
|
+
* 获取首页推荐数据的接口地址
|
|
2698
|
+
* @param data - 请求参数
|
|
2699
|
+
* @returns 完整的接口URL
|
|
2700
|
+
*/
|
|
2701
|
+
\u9996\u9875\u63A8\u8350\u6570\u636E(data2 = {}) {
|
|
2702
|
+
return {
|
|
2703
|
+
apiPath: "/api/sns/web/v1/homefeed",
|
|
2704
|
+
Url: "https://edith.xiaohongshu.com/api/sns/web/v1/homefeed",
|
|
2705
|
+
Body: {
|
|
2706
|
+
cursor_score: data2.cursor_score || "1.7599348899670024E9",
|
|
2707
|
+
num: data2.num || 33,
|
|
2708
|
+
refresh_type: data2.refresh_type || 3,
|
|
2709
|
+
note_index: data2.note_index || 33,
|
|
2710
|
+
category: data2.category || "homefeed_recommend",
|
|
2711
|
+
search_key: data2.search_key || "",
|
|
2712
|
+
image_formats: ["jpg", "webp", "avif"]
|
|
2713
|
+
}
|
|
2714
|
+
};
|
|
2715
|
+
},
|
|
2716
|
+
/**
|
|
2717
|
+
* 获取单个笔记数据的接口地址
|
|
2718
|
+
* @param data - 请求参数
|
|
2719
|
+
* @returns 完整的接口URL
|
|
2720
|
+
*/
|
|
2721
|
+
\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2) {
|
|
2722
|
+
return {
|
|
2723
|
+
apiPath: "/api/sns/web/v1/feed",
|
|
2724
|
+
Url: "https://edith.xiaohongshu.com/api/sns/web/v1/feed",
|
|
2725
|
+
Body: {
|
|
2726
|
+
source_note_id: data2.note_id,
|
|
2727
|
+
image_formats: ["jpg", "webp", "avif"],
|
|
2728
|
+
extra: {
|
|
2729
|
+
need_body_topic: "1"
|
|
2730
|
+
},
|
|
2731
|
+
xsec_source: "pc_feed",
|
|
2732
|
+
xsec_token: data2.xsec_token
|
|
2733
|
+
}
|
|
2734
|
+
};
|
|
2735
|
+
},
|
|
2736
|
+
/**
|
|
2737
|
+
* 获取评论数据的接口地址
|
|
2738
|
+
* @param data - 请求参数
|
|
2739
|
+
* @returns 完整的接口URL
|
|
2740
|
+
*/
|
|
2741
|
+
\u8BC4\u8BBA\u6570\u636E(data2) {
|
|
2742
|
+
const baseUrl = "https://edith.xiaohongshu.com/api/sns/web/v2/comment/page";
|
|
2743
|
+
const params = {
|
|
2744
|
+
note_id: data2.note_id,
|
|
2745
|
+
cursor: data2.cursor || "",
|
|
2746
|
+
image_formats: ["jpg", "webp", "avif"].join(","),
|
|
2747
|
+
xsec_token: data2.xsec_token
|
|
2748
|
+
};
|
|
2749
|
+
return {
|
|
2750
|
+
apiPath: "/api/sns/web/v2/comment/page",
|
|
2751
|
+
Url: `${baseUrl}?${buildQueryString2(params)}`
|
|
2752
|
+
};
|
|
2753
|
+
},
|
|
2754
|
+
/**
|
|
2755
|
+
* 获取用户数据的接口地址
|
|
2756
|
+
* @param data - 请求参数
|
|
2757
|
+
* @returns 完整的接口URL
|
|
2758
|
+
*/
|
|
2759
|
+
\u7528\u6237\u6570\u636E(data2) {
|
|
2760
|
+
return {
|
|
2761
|
+
apiPath: "/api/sns/web/v1/user/otherinfo",
|
|
2762
|
+
Url: `https://www.xiaohongshu.com/user/profile/${data2.user_id}`
|
|
2763
|
+
};
|
|
2764
|
+
},
|
|
2765
|
+
/**
|
|
2766
|
+
* 获取用户笔记数据的接口地址
|
|
2767
|
+
* @param data - 请求参数
|
|
2768
|
+
* @returns 完整的接口URL
|
|
2769
|
+
*/
|
|
2770
|
+
\u7528\u6237\u7B14\u8BB0\u6570\u636E(data2) {
|
|
2771
|
+
const baseUrl = "https://edith.xiaohongshu.com/api/sns/web/v1/user_posted";
|
|
2772
|
+
const params = {
|
|
2773
|
+
user_id: data2.user_id,
|
|
2774
|
+
cursor: data2.cursor || "",
|
|
2775
|
+
num: data2.num || 30,
|
|
2776
|
+
image_formats: ["jpg", "webp", "avif"].join(","),
|
|
2777
|
+
xsec_source: "pc_feed"
|
|
2778
|
+
};
|
|
2779
|
+
return {
|
|
2780
|
+
apiPath: "/api/sns/web/v1/user_posted",
|
|
2781
|
+
Url: `${baseUrl}?${buildQueryString2(params)}`
|
|
2782
|
+
};
|
|
2783
|
+
},
|
|
2784
|
+
/**
|
|
2785
|
+
* 获取笔记表情列表的接口地址
|
|
2786
|
+
* @param data - 请求参数
|
|
2787
|
+
* @returns 完整的接口URL
|
|
2788
|
+
*/
|
|
2789
|
+
\u8868\u60C5\u5217\u8868(data2) {
|
|
2790
|
+
return {
|
|
2791
|
+
apiPath: "/api/im/redmoji/detail",
|
|
2792
|
+
Url: "https://edith.xiaohongshu.com/api/im/redmoji/detail"
|
|
2793
|
+
};
|
|
2794
|
+
},
|
|
2795
|
+
/**
|
|
2796
|
+
* 搜索笔记的接口地址
|
|
2797
|
+
* @param data - 请求参数
|
|
2798
|
+
* @returns 完整的接口URL
|
|
2799
|
+
*/
|
|
2800
|
+
\u641C\u7D22\u7B14\u8BB0(data2) {
|
|
2801
|
+
return {
|
|
2802
|
+
apiPath: "/api/sns/web/v1/search/notes",
|
|
2803
|
+
Body: {
|
|
2804
|
+
keyword: data2.keyword,
|
|
2805
|
+
page: data2.page || 1,
|
|
2806
|
+
page_size: data2.page_size || 20,
|
|
2807
|
+
sort: "general" /* GENERAL */,
|
|
2808
|
+
note_type: 0 /* ALL */,
|
|
2809
|
+
search_id: xiaohongshuSign.getSearchId(),
|
|
2810
|
+
image_formats: ["jpg", "webp", "avif"]
|
|
2811
|
+
},
|
|
2812
|
+
Url: "https://edith.xiaohongshu.com/api/sns/web/v1/search/notes"
|
|
2813
|
+
};
|
|
2814
|
+
}
|
|
2815
|
+
};
|
|
2816
|
+
var createXiaohongshuApiUrls = () => {
|
|
2817
|
+
return xiaohongshuApiUrls;
|
|
2818
|
+
};
|
|
2819
|
+
var SearchSortTypeValues = Object.values(SearchSortType).filter((v) => typeof v === "string");
|
|
2820
|
+
var SearchNoteTypeValues = Object.values(SearchNoteType).filter((v) => typeof v === "string");
|
|
2821
|
+
var HomeFeedParamsSchema = z.object({
|
|
2822
|
+
methodType: z.literal("\u9996\u9875\u63A8\u8350\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u9996\u9875\u63A8\u8350\u6570\u636E"' }),
|
|
2823
|
+
cursor_score: z.string({ error: "cursor_score\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
|
|
2824
|
+
num: 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(),
|
|
2825
|
+
refresh_type: z.number({ error: "refresh_type\u5FC5\u987B\u662F\u6570\u5B57" }).optional(),
|
|
2826
|
+
note_index: z.number({ error: "note_index\u5FC5\u987B\u662F\u6570\u5B57" }).optional(),
|
|
2827
|
+
category: z.string({ error: "category\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
|
|
2828
|
+
search_key: z.string({ error: "search_key\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional()
|
|
2829
|
+
});
|
|
2830
|
+
var NoteParamsSchema = z.object({
|
|
2831
|
+
methodType: z.literal("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u5355\u4E2A\u7B14\u8BB0\u6570\u636E"' }),
|
|
2832
|
+
note_id: z.string({ error: "note_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
|
|
2833
|
+
xsec_token: z.string({ error: "xsec_token\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" })
|
|
2834
|
+
});
|
|
2835
|
+
var CommentParamsSchema = z.object({
|
|
2836
|
+
methodType: z.literal("\u8BC4\u8BBA\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8BC4\u8BBA\u6570\u636E"' }),
|
|
2837
|
+
note_id: z.string({ error: "note_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
|
|
2838
|
+
cursor: z.string({ error: "cursor\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
|
|
2839
|
+
xsec_token: z.string({ error: "xsec_token\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" })
|
|
2840
|
+
});
|
|
2841
|
+
var UserParamsSchema = z.object({
|
|
2842
|
+
methodType: z.literal("\u7528\u6237\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7528\u6237\u6570\u636E"' }),
|
|
2843
|
+
user_id: z.string({ error: "user_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" })
|
|
2844
|
+
});
|
|
2845
|
+
var UserNoteParamsSchema = z.object({
|
|
2846
|
+
methodType: z.literal("\u7528\u6237\u7B14\u8BB0\u6570\u636E", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u7528\u6237\u7B14\u8BB0\u6570\u636E"' }),
|
|
2847
|
+
user_id: z.string({ error: "user_id\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
|
|
2848
|
+
cursor: z.string({ error: "cursor\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }).optional(),
|
|
2849
|
+
num: 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()
|
|
2850
|
+
});
|
|
2851
|
+
var EmojiListParamsSchema = z.object({
|
|
2852
|
+
methodType: z.literal("\u8868\u60C5\u5217\u8868", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u8868\u60C5\u5217\u8868"' })
|
|
2853
|
+
});
|
|
2854
|
+
var SearchNoteParamsSchema = z.object({
|
|
2855
|
+
methodType: z.literal("\u641C\u7D22\u7B14\u8BB0", { error: '\u65B9\u6CD5\u7C7B\u578B\u5FC5\u987B\u662F"\u641C\u7D22\u7B14\u8BB0"' }),
|
|
2856
|
+
keyword: z.string({ error: "keyword\u5FC5\u987B\u662F\u5B57\u7B26\u4E32" }),
|
|
2857
|
+
page: z.number({ error: "page\u5FC5\u987B\u662F\u6570\u5B57" }).min(1, { error: "page\u4E0D\u80FD\u5C0F\u4E8E1" }).optional(),
|
|
2858
|
+
page_size: 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(),
|
|
2859
|
+
sort: z.enum(SearchSortTypeValues, { error: "\u6392\u5E8F\u7C7B\u578B\u4E0D\u5408\u6CD5" }).optional(),
|
|
2860
|
+
note_type: z.enum(SearchNoteTypeValues, { error: "\u7B14\u8BB0\u7C7B\u578B\u4E0D\u5408\u6CD5" }).optional()
|
|
2861
|
+
});
|
|
2862
|
+
var XiaohongshuValidationSchemas = {
|
|
2863
|
+
\u9996\u9875\u63A8\u8350\u6570\u636E: HomeFeedParamsSchema,
|
|
2864
|
+
\u5355\u4E2A\u7B14\u8BB0\u6570\u636E: NoteParamsSchema,
|
|
2865
|
+
\u8BC4\u8BBA\u6570\u636E: CommentParamsSchema,
|
|
2866
|
+
\u7528\u6237\u6570\u636E: UserParamsSchema,
|
|
2867
|
+
\u7528\u6237\u7B14\u8BB0\u6570\u636E: UserNoteParamsSchema,
|
|
2868
|
+
\u8868\u60C5\u5217\u8868: EmojiListParamsSchema,
|
|
2869
|
+
\u641C\u7D22\u7B14\u8BB0: SearchNoteParamsSchema
|
|
2870
|
+
};
|
|
2871
|
+
var validateXiaohongshuParams = (methodType, params) => {
|
|
2872
|
+
const schema = XiaohongshuValidationSchemas[methodType];
|
|
2873
|
+
const validated = schema.parse(
|
|
2874
|
+
typeof params === "object" && params !== null ? { methodType, ...params } : { methodType, params }
|
|
2875
|
+
);
|
|
2876
|
+
return validated;
|
|
2877
|
+
};
|
|
2557
2878
|
|
|
2558
2879
|
// src/validation/index.ts
|
|
2559
2880
|
var validateDouyinParams = (methodType, params) => {
|
|
@@ -2596,6 +2917,210 @@ var createErrorResponse = (error, message, code = 500) => {
|
|
|
2596
2917
|
};
|
|
2597
2918
|
};
|
|
2598
2919
|
|
|
2920
|
+
// src/platform/xiaohongshu/getdata.ts
|
|
2921
|
+
var XiaohongshuData = async (data2, cookie, requestConfig) => {
|
|
2922
|
+
const defHeaders = getXiaohongshuDefaultConfig(cookie)["headers"];
|
|
2923
|
+
const baseRequestConfig = {
|
|
2924
|
+
method: "POST",
|
|
2925
|
+
timeout: 1e4,
|
|
2926
|
+
...requestConfig,
|
|
2927
|
+
headers: {
|
|
2928
|
+
...defHeaders,
|
|
2929
|
+
...{}
|
|
2930
|
+
}
|
|
2931
|
+
};
|
|
2932
|
+
const xiaohongshuApiUrls2 = createXiaohongshuApiUrls();
|
|
2933
|
+
switch (data2.methodType) {
|
|
2934
|
+
case "\u9996\u9875\u63A8\u8350\u6570\u636E": {
|
|
2935
|
+
const homeFeedData = await GlobalGetData4(data2.methodType, {
|
|
2936
|
+
...baseRequestConfig,
|
|
2937
|
+
url: xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).Url,
|
|
2938
|
+
data: JSON.stringify(xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).Body),
|
|
2939
|
+
headers: {
|
|
2940
|
+
...baseRequestConfig.headers,
|
|
2941
|
+
"x-s": xiaohongshuSign.generateXSPost(
|
|
2942
|
+
xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).apiPath,
|
|
2943
|
+
xiaohongshuSign.extractA1FromCookie(cookie || ""),
|
|
2944
|
+
"xhs-pc-web",
|
|
2945
|
+
xiaohongshuApiUrls2.\u9996\u9875\u63A8\u8350\u6570\u636E(data2).Body
|
|
2946
|
+
),
|
|
2947
|
+
"x-s-common": xiaohongshuSign.generateXSCommon(),
|
|
2948
|
+
"x-t": xiaohongshuSign.generateXT()
|
|
2949
|
+
}
|
|
2950
|
+
});
|
|
2951
|
+
return homeFeedData;
|
|
2952
|
+
}
|
|
2953
|
+
case "\u5355\u4E2A\u7B14\u8BB0\u6570\u636E": {
|
|
2954
|
+
const noteData = await GlobalGetData4(data2.methodType, {
|
|
2955
|
+
...baseRequestConfig,
|
|
2956
|
+
url: xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).Url,
|
|
2957
|
+
data: xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).Body,
|
|
2958
|
+
headers: {
|
|
2959
|
+
...baseRequestConfig.headers,
|
|
2960
|
+
"x-s": xiaohongshuSign.generateXSPost(
|
|
2961
|
+
xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).apiPath,
|
|
2962
|
+
xiaohongshuSign.extractA1FromCookie(cookie || ""),
|
|
2963
|
+
"xhs-pc-web",
|
|
2964
|
+
xiaohongshuApiUrls2.\u5355\u4E2A\u7B14\u8BB0\u6570\u636E(data2).Body
|
|
2965
|
+
),
|
|
2966
|
+
"x-s-common": xiaohongshuSign.generateXSCommon(),
|
|
2967
|
+
"x-t": xiaohongshuSign.generateXT()
|
|
2968
|
+
}
|
|
2969
|
+
});
|
|
2970
|
+
return noteData;
|
|
2971
|
+
}
|
|
2972
|
+
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
2973
|
+
const baseRequestConfig2 = {
|
|
2974
|
+
method: "GET",
|
|
2975
|
+
timeout: 1e4,
|
|
2976
|
+
...requestConfig,
|
|
2977
|
+
headers: {
|
|
2978
|
+
...defHeaders,
|
|
2979
|
+
...{}
|
|
2980
|
+
}
|
|
2981
|
+
};
|
|
2982
|
+
const commentData = await GlobalGetData4(data2.methodType, {
|
|
2983
|
+
...baseRequestConfig2,
|
|
2984
|
+
url: xiaohongshuApiUrls2.\u8BC4\u8BBA\u6570\u636E(data2).Url,
|
|
2985
|
+
headers: {
|
|
2986
|
+
...baseRequestConfig2.headers,
|
|
2987
|
+
"x-s": xiaohongshuSign.generateXSGet(
|
|
2988
|
+
xiaohongshuApiUrls2.\u8BC4\u8BBA\u6570\u636E(data2).apiPath,
|
|
2989
|
+
xiaohongshuSign.extractA1FromCookie(cookie || ""),
|
|
2990
|
+
"xhs-pc-web"
|
|
2991
|
+
),
|
|
2992
|
+
"x-s-common": xiaohongshuSign.generateXSCommon(),
|
|
2993
|
+
"x-t": xiaohongshuSign.generateXT()
|
|
2994
|
+
}
|
|
2995
|
+
});
|
|
2996
|
+
return commentData;
|
|
2997
|
+
}
|
|
2998
|
+
case "\u7528\u6237\u6570\u636E": {
|
|
2999
|
+
const baseRequestConfig2 = {
|
|
3000
|
+
method: "GET",
|
|
3001
|
+
timeout: 1e4,
|
|
3002
|
+
...requestConfig,
|
|
3003
|
+
headers: {
|
|
3004
|
+
...defHeaders,
|
|
3005
|
+
...{}
|
|
3006
|
+
}
|
|
3007
|
+
};
|
|
3008
|
+
const userData = await GlobalGetData4(data2.methodType, {
|
|
3009
|
+
...baseRequestConfig2,
|
|
3010
|
+
url: xiaohongshuApiUrls2.\u7528\u6237\u6570\u636E(data2).Url,
|
|
3011
|
+
headers: {
|
|
3012
|
+
...baseRequestConfig2.headers,
|
|
3013
|
+
"x-s": xiaohongshuSign.generateXSGet(
|
|
3014
|
+
xiaohongshuApiUrls2.\u7528\u6237\u6570\u636E(data2).apiPath,
|
|
3015
|
+
xiaohongshuSign.extractA1FromCookie(cookie || ""),
|
|
3016
|
+
"xhs-pc-web"
|
|
3017
|
+
),
|
|
3018
|
+
"x-s-common": xiaohongshuSign.generateXSCommon(),
|
|
3019
|
+
"x-t": xiaohongshuSign.generateXT()
|
|
3020
|
+
}
|
|
3021
|
+
});
|
|
3022
|
+
const pageData = extractCreatorInfoFromHtml(userData);
|
|
3023
|
+
return {
|
|
3024
|
+
code: 0,
|
|
3025
|
+
data: pageData,
|
|
3026
|
+
msg: "\u6210\u529F"
|
|
3027
|
+
};
|
|
3028
|
+
}
|
|
3029
|
+
case "\u7528\u6237\u7B14\u8BB0\u6570\u636E": {
|
|
3030
|
+
const userNoteData = await GlobalGetData4(data2.methodType, {
|
|
3031
|
+
...baseRequestConfig,
|
|
3032
|
+
method: "GET",
|
|
3033
|
+
url: xiaohongshuApiUrls2.\u7528\u6237\u7B14\u8BB0\u6570\u636E(data2).Url,
|
|
3034
|
+
headers: {
|
|
3035
|
+
...baseRequestConfig.headers,
|
|
3036
|
+
"x-b3-traceid": xiaohongshuSign.generateXB3Traceid(),
|
|
3037
|
+
"x-s": xiaohongshuSign.generateXSGet(
|
|
3038
|
+
xiaohongshuApiUrls2.\u7528\u6237\u7B14\u8BB0\u6570\u636E(data2).apiPath,
|
|
3039
|
+
xiaohongshuSign.extractA1FromCookie(cookie || ""),
|
|
3040
|
+
"xhs-pc-web"
|
|
3041
|
+
),
|
|
3042
|
+
"x-s-common": xiaohongshuSign.generateXSCommon(),
|
|
3043
|
+
"x-t": xiaohongshuSign.generateXT()
|
|
3044
|
+
}
|
|
3045
|
+
});
|
|
3046
|
+
return userNoteData;
|
|
3047
|
+
}
|
|
3048
|
+
case "\u8868\u60C5\u5217\u8868": {
|
|
3049
|
+
const baseRequestConfig2 = {
|
|
3050
|
+
method: "GET",
|
|
3051
|
+
timeout: 1e4,
|
|
3052
|
+
...requestConfig,
|
|
3053
|
+
headers: {
|
|
3054
|
+
...defHeaders,
|
|
3055
|
+
...{}
|
|
3056
|
+
}
|
|
3057
|
+
};
|
|
3058
|
+
const emojiListData = await GlobalGetData4(data2.methodType, {
|
|
3059
|
+
...baseRequestConfig2,
|
|
3060
|
+
url: xiaohongshuApiUrls2.\u8868\u60C5\u5217\u8868(data2).Url,
|
|
3061
|
+
headers: {
|
|
3062
|
+
...baseRequestConfig2.headers,
|
|
3063
|
+
"x-s": xiaohongshuSign.generateXSGet(
|
|
3064
|
+
xiaohongshuApiUrls2.\u8868\u60C5\u5217\u8868(data2).apiPath,
|
|
3065
|
+
xiaohongshuSign.extractA1FromCookie(cookie || ""),
|
|
3066
|
+
"xhs-pc-web"
|
|
3067
|
+
),
|
|
3068
|
+
"x-s-common": xiaohongshuSign.generateXSCommon(),
|
|
3069
|
+
"x-t": xiaohongshuSign.generateXT()
|
|
3070
|
+
}
|
|
3071
|
+
});
|
|
3072
|
+
return emojiListData;
|
|
3073
|
+
}
|
|
3074
|
+
case "\u641C\u7D22\u7B14\u8BB0": {
|
|
3075
|
+
const searchNoteData = await GlobalGetData4(data2.methodType, {
|
|
3076
|
+
...baseRequestConfig,
|
|
3077
|
+
url: xiaohongshuApiUrls2.\u641C\u7D22\u7B14\u8BB0(data2).Url,
|
|
3078
|
+
data: xiaohongshuApiUrls2.\u641C\u7D22\u7B14\u8BB0(data2).Body,
|
|
3079
|
+
headers: {
|
|
3080
|
+
...baseRequestConfig.headers,
|
|
3081
|
+
"x-s": xiaohongshuSign.generateXSPost(
|
|
3082
|
+
xiaohongshuApiUrls2.\u641C\u7D22\u7B14\u8BB0(data2).apiPath,
|
|
3083
|
+
xiaohongshuSign.extractA1FromCookie(cookie || ""),
|
|
3084
|
+
"xhs-pc-web"
|
|
3085
|
+
),
|
|
3086
|
+
"x-s-common": xiaohongshuSign.generateXSCommon(),
|
|
3087
|
+
"x-t": xiaohongshuSign.generateXT()
|
|
3088
|
+
}
|
|
3089
|
+
});
|
|
3090
|
+
return searchNoteData;
|
|
3091
|
+
}
|
|
3092
|
+
default:
|
|
3093
|
+
throw new Error(`\u672A\u77E5\u7684\u5C0F\u7EA2\u4E66\u6570\u636E\u63A5\u53E3: \u300C${logger.red(data2.methodType)}\u300D`);
|
|
3094
|
+
}
|
|
3095
|
+
};
|
|
3096
|
+
var GlobalGetData4 = async (methodType, config) => {
|
|
3097
|
+
var _a;
|
|
3098
|
+
try {
|
|
3099
|
+
const response = await fetchData(config);
|
|
3100
|
+
if (typeof response === "string" && response.includes("<html>")) {
|
|
3101
|
+
return response;
|
|
3102
|
+
}
|
|
3103
|
+
if (response.code !== 0) {
|
|
3104
|
+
throw new Error(`API\u8BF7\u6C42\u5931\u8D25: ${((_a = response.data) == null ? void 0 : _a.msg) || "\u672A\u77E5\u9519\u8BEF"}`);
|
|
3105
|
+
}
|
|
3106
|
+
return response;
|
|
3107
|
+
} catch (error) {
|
|
3108
|
+
logger.error(`\u5C0F\u7EA2\u4E66API\u8BF7\u6C42\u5931\u8D25 [${methodType}]:`, error.message);
|
|
3109
|
+
const errorDetail = {
|
|
3110
|
+
errorDescription: error.message || "\u672A\u77E5\u9519\u8BEF",
|
|
3111
|
+
requestType: methodType,
|
|
3112
|
+
requestUrl: config.url || ""
|
|
3113
|
+
};
|
|
3114
|
+
return {
|
|
3115
|
+
code: 500,
|
|
3116
|
+
message: "error",
|
|
3117
|
+
data: null,
|
|
3118
|
+
amagiError: errorDetail,
|
|
3119
|
+
amagiMessage: `\u5C0F\u7EA2\u4E66API\u8BF7\u6C42\u5931\u8D25: ${error.message}`
|
|
3120
|
+
};
|
|
3121
|
+
}
|
|
3122
|
+
};
|
|
3123
|
+
|
|
2599
3124
|
// src/model/DataFetchers.ts
|
|
2600
3125
|
async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2601
3126
|
try {
|
|
@@ -2678,6 +3203,32 @@ async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions, req
|
|
|
2678
3203
|
throw new Error(`\u5FEB\u624B\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
2679
3204
|
}
|
|
2680
3205
|
}
|
|
3206
|
+
async function getXiaohongshuData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
3207
|
+
try {
|
|
3208
|
+
let options;
|
|
3209
|
+
let cookie;
|
|
3210
|
+
if (typeof optionsOrCookie === "string") {
|
|
3211
|
+
cookie = optionsOrCookie;
|
|
3212
|
+
options = cookieOrOptions;
|
|
3213
|
+
} else {
|
|
3214
|
+
options = optionsOrCookie;
|
|
3215
|
+
cookie = cookieOrOptions;
|
|
3216
|
+
}
|
|
3217
|
+
const { typeMode: _, ...validationOptions } = options || {};
|
|
3218
|
+
const validatedParams = validateXiaohongshuParams(methodType, validationOptions);
|
|
3219
|
+
const apiParams = {
|
|
3220
|
+
...validatedParams
|
|
3221
|
+
};
|
|
3222
|
+
const rawData = await XiaohongshuData(apiParams, cookie);
|
|
3223
|
+
if (rawData.code && Object.values(xiaohongshuAPIErrorCode).includes(rawData.code)) {
|
|
3224
|
+
return createErrorResponse(rawData.amagiError, "\u5C0F\u7EA2\u4E66\u6570\u636E\u83B7\u53D6\u5931\u8D25");
|
|
3225
|
+
}
|
|
3226
|
+
return createSuccessResponse(rawData, "\u83B7\u53D6\u6210\u529F", 200);
|
|
3227
|
+
} catch (error) {
|
|
3228
|
+
const errorMessage = error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF";
|
|
3229
|
+
throw new Error(`\u5C0F\u7EA2\u4E66\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
3230
|
+
}
|
|
3231
|
+
}
|
|
2681
3232
|
|
|
2682
3233
|
// src/platform/bilibili/BilibiliApi.ts
|
|
2683
3234
|
var createBilibiliApiMethod = (methodType) => {
|
|
@@ -2968,7 +3519,7 @@ var ValidationError = class _ValidationError extends Error {
|
|
|
2968
3519
|
* @returns 验证错误实例
|
|
2969
3520
|
*/
|
|
2970
3521
|
static fromZodError(zodError, requestPath) {
|
|
2971
|
-
const errors = zodError.
|
|
3522
|
+
const errors = zodError.issues.map((err) => ({
|
|
2972
3523
|
field: err.path.join("."),
|
|
2973
3524
|
message: err.message
|
|
2974
3525
|
}));
|
|
@@ -3024,6 +3575,7 @@ var createValidationMiddleware = (validateFn, methodType) => {
|
|
|
3024
3575
|
var createDouyinValidationMiddleware = (methodType) => createValidationMiddleware(validateDouyinParams, methodType);
|
|
3025
3576
|
var createBilibiliValidationMiddleware = (methodType) => createValidationMiddleware(validateBilibiliParams, methodType);
|
|
3026
3577
|
var createKuaishouValidationMiddleware = (methodType) => createValidationMiddleware(validateKuaishouParams, methodType);
|
|
3578
|
+
var createXiaohongshuValidationMiddleware = (methodType) => createValidationMiddleware(validateXiaohongshuParams, methodType);
|
|
3027
3579
|
var createBilibiliRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
|
|
3028
3580
|
return async (req, res) => {
|
|
3029
3581
|
try {
|
|
@@ -3573,11 +4125,184 @@ var kuaishouUtils = {
|
|
|
3573
4125
|
kuaishouApiUrls,
|
|
3574
4126
|
api: kuaishou
|
|
3575
4127
|
};
|
|
4128
|
+
|
|
4129
|
+
// src/platform/xiaohongshu/XiaohongshuApi.ts
|
|
4130
|
+
var createXiaohongshuApiMethod = (methodType) => {
|
|
4131
|
+
return async (options, cookie, requestConfig) => {
|
|
4132
|
+
return await getXiaohongshuData(methodType, options, cookie);
|
|
4133
|
+
};
|
|
4134
|
+
};
|
|
4135
|
+
var createBoundXiaohongshuApiMethod = (methodType, cookie, requestConfig) => {
|
|
4136
|
+
return async (options) => {
|
|
4137
|
+
return await getXiaohongshuData(methodType, options, cookie);
|
|
4138
|
+
};
|
|
4139
|
+
};
|
|
4140
|
+
var xiaohongshu = {
|
|
4141
|
+
/**
|
|
4142
|
+
* 获取首页推荐数据
|
|
4143
|
+
* @param options 请求参数,包含分页和过滤选项
|
|
4144
|
+
* @param cookie 有效的用户 Cookie
|
|
4145
|
+
* @returns 统一格式的API响应,包含首页推荐笔记列表
|
|
4146
|
+
*/
|
|
4147
|
+
getHomeFeed: createXiaohongshuApiMethod("\u9996\u9875\u63A8\u8350\u6570\u636E"),
|
|
4148
|
+
/**
|
|
4149
|
+
* 获取单个笔记数据
|
|
4150
|
+
* @param options 请求参数,包含笔记ID
|
|
4151
|
+
* @param cookie 有效的用户 Cookie
|
|
4152
|
+
* @returns 统一格式的API响应,包含指定笔记的详细信息
|
|
4153
|
+
*/
|
|
4154
|
+
getNote: createXiaohongshuApiMethod("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E"),
|
|
4155
|
+
/**
|
|
4156
|
+
* 获取评论数据
|
|
4157
|
+
* @param options 请求参数,包含笔记ID和分页选项
|
|
4158
|
+
* @param cookie 有效的用户 Cookie
|
|
4159
|
+
* @returns 统一格式的API响应,包含指定笔记的评论列表
|
|
4160
|
+
*/
|
|
4161
|
+
getComments: createXiaohongshuApiMethod("\u8BC4\u8BBA\u6570\u636E"),
|
|
4162
|
+
/**
|
|
4163
|
+
* 获取用户数据
|
|
4164
|
+
* @param options 请求参数,包含用户ID
|
|
4165
|
+
* @param cookie 有效的用户 Cookie
|
|
4166
|
+
* @returns 统一格式的API响应,包含指定用户的详细信息
|
|
4167
|
+
*/
|
|
4168
|
+
getUser: createXiaohongshuApiMethod("\u7528\u6237\u6570\u636E"),
|
|
4169
|
+
/**
|
|
4170
|
+
* 获取用户笔记数据
|
|
4171
|
+
* @param options 请求参数,包含用户ID和分页选项
|
|
4172
|
+
* @param cookie 有效的用户 Cookie
|
|
4173
|
+
* @returns 统一格式的API响应,包含指定用户的笔记列表
|
|
4174
|
+
*/
|
|
4175
|
+
getUserNotes: createXiaohongshuApiMethod("\u7528\u6237\u7B14\u8BB0\u6570\u636E"),
|
|
4176
|
+
/**
|
|
4177
|
+
* 获取搜索笔记数据
|
|
4178
|
+
* @param options 请求参数,包含搜索关键词和分页选项
|
|
4179
|
+
* @param cookie 有效的用户 Cookie
|
|
4180
|
+
* @returns 统一格式的API响应,包含搜索到的笔记列表
|
|
4181
|
+
*/
|
|
4182
|
+
getSearchNotes: createXiaohongshuApiMethod("\u641C\u7D22\u7B14\u8BB0"),
|
|
4183
|
+
/**
|
|
4184
|
+
* 获取表情列表数据
|
|
4185
|
+
* @param options 请求参数,包含分页和过滤选项
|
|
4186
|
+
* @param cookie 有效的用户 Cookie
|
|
4187
|
+
* @returns 统一格式的API响应,包含表情列表
|
|
4188
|
+
*/
|
|
4189
|
+
getEmojiList: createXiaohongshuApiMethod("\u8868\u60C5\u5217\u8868")
|
|
4190
|
+
};
|
|
4191
|
+
var createBoundXiaohongshuApi = (cookie, requestConfig) => {
|
|
4192
|
+
return {
|
|
4193
|
+
/**
|
|
4194
|
+
* 获取首页推荐数据
|
|
4195
|
+
* @param options 请求参数,包含分页和过滤选项
|
|
4196
|
+
* @returns 统一格式的API响应,包含首页推荐笔记列表
|
|
4197
|
+
*/
|
|
4198
|
+
getHomeFeed: createBoundXiaohongshuApiMethod("\u9996\u9875\u63A8\u8350\u6570\u636E", cookie),
|
|
4199
|
+
/**
|
|
4200
|
+
* 获取单个笔记数据
|
|
4201
|
+
* @param options 请求参数,包含笔记ID
|
|
4202
|
+
* @returns 统一格式的API响应,包含指定笔记的详细信息
|
|
4203
|
+
*/
|
|
4204
|
+
getNote: createBoundXiaohongshuApiMethod("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E", cookie),
|
|
4205
|
+
/**
|
|
4206
|
+
* 获取评论数据
|
|
4207
|
+
* @param options 请求参数,包含笔记ID和分页选项
|
|
4208
|
+
* @returns 统一格式的API响应,包含指定笔记的评论列表
|
|
4209
|
+
*/
|
|
4210
|
+
getComments: createBoundXiaohongshuApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie),
|
|
4211
|
+
/**
|
|
4212
|
+
* 获取用户数据
|
|
4213
|
+
* @param options 请求参数,包含用户ID
|
|
4214
|
+
* @returns 统一格式的API响应,包含指定用户的详细信息
|
|
4215
|
+
*/
|
|
4216
|
+
getUser: createBoundXiaohongshuApiMethod("\u7528\u6237\u6570\u636E", cookie),
|
|
4217
|
+
/**
|
|
4218
|
+
* 获取用户笔记数据
|
|
4219
|
+
* @param options 请求参数,包含用户ID和分页选项
|
|
4220
|
+
* @returns 统一格式的API响应,包含指定用户的笔记列表
|
|
4221
|
+
*/
|
|
4222
|
+
getUserNotes: createBoundXiaohongshuApiMethod("\u7528\u6237\u7B14\u8BB0\u6570\u636E", cookie),
|
|
4223
|
+
/**
|
|
4224
|
+
* 获取搜索笔记数据
|
|
4225
|
+
* @param options 请求参数,包含搜索关键词和分页选项
|
|
4226
|
+
* @returns 统一格式的API响应,包含搜索到的笔记列表
|
|
4227
|
+
*/
|
|
4228
|
+
getSearchNotes: createBoundXiaohongshuApiMethod("\u641C\u7D22\u7B14\u8BB0", cookie),
|
|
4229
|
+
/**
|
|
4230
|
+
* 获取表情列表数据
|
|
4231
|
+
* @param options 请求参数,包含分页和过滤选项
|
|
4232
|
+
* @returns 统一格式的API响应,包含表情列表
|
|
4233
|
+
*/
|
|
4234
|
+
getEmojiList: createBoundXiaohongshuApiMethod("\u8868\u60C5\u5217\u8868", cookie)
|
|
4235
|
+
};
|
|
4236
|
+
};
|
|
4237
|
+
var createXiaohongshuRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getXiaohongshuDefaultConfig(cookie)) => {
|
|
4238
|
+
return async (req, res) => {
|
|
4239
|
+
try {
|
|
4240
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
4241
|
+
res.json({
|
|
4242
|
+
...result,
|
|
4243
|
+
requestPath: req.originalUrl
|
|
4244
|
+
});
|
|
4245
|
+
} catch (error) {
|
|
4246
|
+
const errorResponse = handleError(error);
|
|
4247
|
+
res.status(errorResponse.code || 500).json({
|
|
4248
|
+
...errorResponse,
|
|
4249
|
+
requestPath: req.originalUrl
|
|
4250
|
+
});
|
|
4251
|
+
}
|
|
4252
|
+
};
|
|
4253
|
+
};
|
|
4254
|
+
var createXiaohongshuRoutes = (cookie, requestConfig = getXiaohongshuDefaultConfig(cookie)) => {
|
|
4255
|
+
const router = Router();
|
|
4256
|
+
router.get(
|
|
4257
|
+
"/fetch_home_feed",
|
|
4258
|
+
createXiaohongshuValidationMiddleware("\u9996\u9875\u63A8\u8350\u6570\u636E"),
|
|
4259
|
+
createXiaohongshuRouteHandler(getXiaohongshuData, "\u9996\u9875\u63A8\u8350\u6570\u636E", cookie, requestConfig)
|
|
4260
|
+
);
|
|
4261
|
+
router.get(
|
|
4262
|
+
"/fetch_one_note",
|
|
4263
|
+
createXiaohongshuValidationMiddleware("\u5355\u4E2A\u7B14\u8BB0\u6570\u636E"),
|
|
4264
|
+
createXiaohongshuRouteHandler(getXiaohongshuData, "\u5355\u4E2A\u7B14\u8BB0\u6570\u636E", cookie, requestConfig)
|
|
4265
|
+
);
|
|
4266
|
+
router.get(
|
|
4267
|
+
"/fetch_note_comments",
|
|
4268
|
+
createXiaohongshuValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
4269
|
+
createXiaohongshuRouteHandler(getXiaohongshuData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
4270
|
+
);
|
|
4271
|
+
router.get(
|
|
4272
|
+
"/fetch_user_profile",
|
|
4273
|
+
createXiaohongshuValidationMiddleware("\u7528\u6237\u6570\u636E"),
|
|
4274
|
+
createXiaohongshuRouteHandler(getXiaohongshuData, "\u7528\u6237\u6570\u636E", cookie, requestConfig)
|
|
4275
|
+
);
|
|
4276
|
+
router.get(
|
|
4277
|
+
"/fetch_user_notes",
|
|
4278
|
+
createXiaohongshuValidationMiddleware("\u7528\u6237\u7B14\u8BB0\u6570\u636E"),
|
|
4279
|
+
createXiaohongshuRouteHandler(getXiaohongshuData, "\u7528\u6237\u7B14\u8BB0\u6570\u636E", cookie, requestConfig)
|
|
4280
|
+
);
|
|
4281
|
+
router.get(
|
|
4282
|
+
"/fetch_emoji_list",
|
|
4283
|
+
createXiaohongshuValidationMiddleware("\u8868\u60C5\u5217\u8868"),
|
|
4284
|
+
createXiaohongshuRouteHandler(getXiaohongshuData, "\u8868\u60C5\u5217\u8868", cookie, requestConfig)
|
|
4285
|
+
);
|
|
4286
|
+
router.get(
|
|
4287
|
+
"/fetch_search_notes",
|
|
4288
|
+
createXiaohongshuValidationMiddleware("\u641C\u7D22\u7B14\u8BB0"),
|
|
4289
|
+
createXiaohongshuRouteHandler(getXiaohongshuData, "\u641C\u7D22\u7B14\u8BB0", cookie, requestConfig)
|
|
4290
|
+
);
|
|
4291
|
+
return router;
|
|
4292
|
+
};
|
|
4293
|
+
|
|
4294
|
+
// src/platform/xiaohongshu/index.ts
|
|
4295
|
+
var xiaohongshuUtils = {
|
|
4296
|
+
sign: xiaohongshuSign,
|
|
4297
|
+
xiaohongshuApiUrls,
|
|
4298
|
+
api: xiaohongshu
|
|
4299
|
+
};
|
|
3576
4300
|
var createAmagiClient = (options) => {
|
|
3577
|
-
var _a, _b, _c;
|
|
4301
|
+
var _a, _b, _c, _d;
|
|
3578
4302
|
const douyinCookie = ((_a = options == null ? void 0 : options.cookies) == null ? void 0 : _a.douyin) ?? "";
|
|
3579
4303
|
const bilibiliCookie = ((_b = options == null ? void 0 : options.cookies) == null ? void 0 : _b.bilibili) ?? "";
|
|
3580
4304
|
const kuaishouCookie = ((_c = options == null ? void 0 : options.cookies) == null ? void 0 : _c.kuaishou) ?? "";
|
|
4305
|
+
const xiaohongshuCookie = ((_d = options == null ? void 0 : options.cookies) == null ? void 0 : _d.xiaohongshu) ?? "";
|
|
3581
4306
|
const requestConfig = (options == null ? void 0 : options.request) ?? {};
|
|
3582
4307
|
const startServer = (port = 4567) => {
|
|
3583
4308
|
const app = express();
|
|
@@ -3592,6 +4317,7 @@ var createAmagiClient = (options) => {
|
|
|
3592
4317
|
app.use("/api/douyin", createDouyinRoutes(douyinCookie, requestConfig));
|
|
3593
4318
|
app.use("/api/bilibili", createBilibiliRoutes(bilibiliCookie, requestConfig));
|
|
3594
4319
|
app.use("/api/kuaishou", createKuaishouRoutes(kuaishouCookie, requestConfig));
|
|
4320
|
+
app.use("/api/xiaohongshu", createXiaohongshuRoutes(xiaohongshuCookie, requestConfig));
|
|
3595
4321
|
app.listen(port, "::", () => {
|
|
3596
4322
|
logger.mark(`Amagi server listening on ${logger.green(`http://localhost:${port}`)} ${logger.yellow("API docs: https://amagi.apifox.cn ")}`);
|
|
3597
4323
|
});
|
|
@@ -3606,12 +4332,16 @@ var createAmagiClient = (options) => {
|
|
|
3606
4332
|
const getKuaishouDataWithCookie = async (methodType, options2) => {
|
|
3607
4333
|
return await getKuaishouData(methodType, options2, kuaishouCookie);
|
|
3608
4334
|
};
|
|
4335
|
+
const getXiaohongshuDataWithCookie = async (methodType, options2) => {
|
|
4336
|
+
return await getXiaohongshuData(methodType, options2, xiaohongshuCookie);
|
|
4337
|
+
};
|
|
3609
4338
|
return {
|
|
3610
4339
|
/** 启动本地HTTP服务 */
|
|
3611
4340
|
startServer,
|
|
3612
4341
|
getDouyinData: getDouyinDataWithCookie,
|
|
3613
4342
|
getBilibiliData: getBilibiliDataWithCookie,
|
|
3614
4343
|
getKuaishouData: getKuaishouDataWithCookie,
|
|
4344
|
+
getXiaohongshuData: getXiaohongshuDataWithCookie,
|
|
3615
4345
|
douyin: {
|
|
3616
4346
|
...douyinUtils,
|
|
3617
4347
|
/** 绑定了cookie和请求配置的抖音API对象,调用时不需要传递cookie */
|
|
@@ -3626,6 +4356,11 @@ var createAmagiClient = (options) => {
|
|
|
3626
4356
|
...kuaishouUtils,
|
|
3627
4357
|
/** 绑定了cookie和请求配置的快手API对象,调用时不需要传递cookie */
|
|
3628
4358
|
api: createBoundKuaishouApi(kuaishouCookie)
|
|
4359
|
+
},
|
|
4360
|
+
xiaohongshu: {
|
|
4361
|
+
...xiaohongshuUtils,
|
|
4362
|
+
/** 绑定了cookie和请求配置的小红书API对象,调用时不需要传递cookie */
|
|
4363
|
+
api: createBoundXiaohongshuApi(xiaohongshuCookie)
|
|
3629
4364
|
}
|
|
3630
4365
|
};
|
|
3631
4366
|
};
|
|
@@ -3686,9 +4421,11 @@ function CreateAmagiApp(options = {}) {
|
|
|
3686
4421
|
CreateAmagiApp.douyin = douyinUtils;
|
|
3687
4422
|
CreateAmagiApp.bilibili = bilibiliUtils;
|
|
3688
4423
|
CreateAmagiApp.kuaishou = kuaishouUtils;
|
|
4424
|
+
CreateAmagiApp.xiaohongshu = xiaohongshuUtils;
|
|
3689
4425
|
CreateAmagiApp.getDouyinData = getDouyinData;
|
|
3690
4426
|
CreateAmagiApp.getBilibiliData = getBilibiliData;
|
|
3691
4427
|
CreateAmagiApp.getKuaishouData = getKuaishouData;
|
|
4428
|
+
CreateAmagiApp.getXiaohongshuData = getXiaohongshuData;
|
|
3692
4429
|
var CreateApp = CreateAmagiApp;
|
|
3693
4430
|
var Client = CreateApp;
|
|
3694
4431
|
var amagi = Client;
|
|
@@ -3698,4 +4435,4 @@ var amagi = Client;
|
|
|
3698
4435
|
* GPL-3.0 Licensed
|
|
3699
4436
|
*/
|
|
3700
4437
|
|
|
3701
|
-
export { AdditionalType, ApiError, BilibiliAv2BvParamsSchema, BilibiliBangumiInfoParamsSchema, BilibiliBangumiStreamParamsSchema, BilibiliBv2AvParamsSchema, BilibiliCommentParamsSchema, BilibiliDynamicParamsSchema, BilibiliEmojiParamsSchema, BilibiliLiveParamsSchema, BilibiliLoginParamsSchema, BilibiliQrcodeParamsSchema, BilibiliQrcodeStatusParamsSchema, BilibiliUserParamsSchema, BilibiliValidationSchemas2 as BilibiliValidationSchemas, BilibiliVideoDownloadParamsSchema, BilibiliVideoParamsSchema, CreateApp, DouyinCommentParamsSchema, DouyinCommentReplyParamsSchema, DouyinDanmakuParamsSchema, DouyinEmojiListParamsSchema, DouyinEmojiProParamsSchema, DouyinMusicParamsSchema, DouyinQrcodeParamsSchema, DouyinSearchParamsSchema, DouyinUserParamsSchema, DouyinValidationSchemas2 as DouyinValidationSchemas, DouyinWorkParamsSchema, DynamicType, KuaishouCommentParamsSchema, KuaishouEmojiParamsSchema, KuaishouValidationSchemas2 as KuaishouValidationSchemas, KuaishouVideoParamsSchema, MajorType, ValidationError, amagi, amagiClient, av2bv, bilibili, bilibiliApiUrls, bilibiliErrorCodeMap, bilibiliUtils, bv2av, createAmagiClient, createBilibiliRoutes, createBoundBilibiliApi, createBoundDouyinApi, createBoundKuaishouApi, createDouyinRoutes, createErrorResponse, createKuaishouRoutes, createSuccessResponse, Client as default, douyin, douyinApiUrls, douyinSign, douyinUtils, fetchData, fetchResponse, getBilibiliData, getDouyinData, getHeadersAndData, getKuaishouData, handleError, httpLogger, kuaishou, kuaishouApiUrls, kuaishouUtils, logMiddleware, logger, qtparam, createBilibiliRoutes as registerBilibiliRoutes, createDouyinRoutes as registerDouyinRoutes, createKuaishouRoutes as registerKuaishouRoutes, validateBilibiliParams, validateDouyinParams, validateKuaishouParams, wbi_sign };
|
|
4438
|
+
export { AdditionalType, ApiError, BilibiliAv2BvParamsSchema, BilibiliBangumiInfoParamsSchema, BilibiliBangumiStreamParamsSchema, BilibiliBv2AvParamsSchema, BilibiliCommentParamsSchema, BilibiliDynamicParamsSchema, BilibiliEmojiParamsSchema, BilibiliLiveParamsSchema, BilibiliLoginParamsSchema, BilibiliQrcodeParamsSchema, BilibiliQrcodeStatusParamsSchema, BilibiliUserParamsSchema, BilibiliValidationSchemas2 as BilibiliValidationSchemas, BilibiliVideoDownloadParamsSchema, BilibiliVideoParamsSchema, CreateApp, DouyinCommentParamsSchema, DouyinCommentReplyParamsSchema, DouyinDanmakuParamsSchema, DouyinEmojiListParamsSchema, DouyinEmojiProParamsSchema, DouyinMusicParamsSchema, DouyinQrcodeParamsSchema, DouyinSearchParamsSchema, DouyinUserParamsSchema, DouyinValidationSchemas2 as DouyinValidationSchemas, DouyinWorkParamsSchema, DynamicType, KuaishouCommentParamsSchema, KuaishouEmojiParamsSchema, KuaishouValidationSchemas2 as KuaishouValidationSchemas, KuaishouVideoParamsSchema, MajorType, ValidationError, XiaohongshuValidationSchemas, amagi, amagiClient, av2bv, bilibili, bilibiliApiUrls, bilibiliErrorCodeMap, bilibiliUtils, bv2av, createAmagiClient, createBilibiliRoutes, createBoundBilibiliApi, createBoundDouyinApi, createBoundKuaishouApi, createBoundXiaohongshuApi, createDouyinRoutes, createErrorResponse, createKuaishouRoutes, createSuccessResponse, createXiaohongshuRoutes, Client as default, douyin, douyinApiUrls, douyinSign, douyinUtils, fetchData, fetchResponse, getBilibiliData, getDouyinData, getHeadersAndData, getKuaishouData, handleError, httpLogger, kuaishou, kuaishouApiUrls, kuaishouUtils, logMiddleware, logger, qtparam, createBilibiliRoutes as registerBilibiliRoutes, createDouyinRoutes as registerDouyinRoutes, createKuaishouRoutes as registerKuaishouRoutes, createXiaohongshuRoutes as registerXiaohongshuRoutes, validateBilibiliParams, validateDouyinParams, validateKuaishouParams, validateXiaohongshuParams, wbi_sign, xiaohongshu, xiaohongshuApiUrls, xiaohongshuSign, xiaohongshuUtils };
|