@ikenxuan/amagi 4.5.2 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/default/cjs/index.cjs +957 -627
- package/dist/default/esm/index.mjs +911 -618
- package/dist/default/index.d.ts +16561 -117
- package/package.json +1 -6
- package/dist/default/cjs/v5.cjs +0 -3105
- package/dist/default/esm/v5.mjs +0 -3020
- package/dist/default/index-2b526zmm.d.ts +0 -15752
- package/dist/default/v5.d.ts +0 -766
|
@@ -27,7 +27,7 @@ var express__default = /*#__PURE__*/_interopDefault(express);
|
|
|
27
27
|
* GPL-3.0 Licensed
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
-
// node_modules/.pnpm/tsup@8.5.0_@swc+core@1.
|
|
30
|
+
// node_modules/.pnpm/tsup@8.5.0_@swc+core@1.13.3_tsx@4.20.3_typescript@5.8.3/node_modules/tsup/assets/cjs_shims.js
|
|
31
31
|
var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
|
|
32
32
|
var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
|
|
33
33
|
var getPackageLogsPath = () => {
|
|
@@ -167,142 +167,49 @@ var logMiddleware = (pathsToLog) => {
|
|
|
167
167
|
next();
|
|
168
168
|
};
|
|
169
169
|
};
|
|
170
|
-
var
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
axiosInstance;
|
|
177
|
-
isGetResult;
|
|
178
|
-
timeout;
|
|
179
|
-
timer;
|
|
180
|
-
data;
|
|
181
|
-
constructor(data2) {
|
|
182
|
-
this.headers = data2.headers ?? {};
|
|
183
|
-
this.url = data2.url ?? "";
|
|
184
|
-
this.type = data2.responseType ?? "json";
|
|
185
|
-
this.method = data2.method ?? "GET";
|
|
186
|
-
this.body = data2.body ?? null;
|
|
187
|
-
this.data = {};
|
|
188
|
-
this.timeout = data2.timeout ?? 15e3;
|
|
189
|
-
this.isGetResult = false;
|
|
190
|
-
this.timer = void 0;
|
|
191
|
-
this.axiosInstance = axios__default.default.create({
|
|
192
|
-
timeout: this.timeout,
|
|
193
|
-
headers: this.headers,
|
|
194
|
-
maxRedirects: 5,
|
|
195
|
-
validateStatus: (status) => {
|
|
196
|
-
return status >= 200 && status < 600;
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
get config() {
|
|
201
|
-
let config = {
|
|
202
|
-
url: this.url,
|
|
203
|
-
method: this.method,
|
|
204
|
-
headers: this.headers
|
|
205
|
-
};
|
|
206
|
-
if (this.method === "POST" && this.body) {
|
|
207
|
-
config.data = this.body;
|
|
208
|
-
}
|
|
209
|
-
return config;
|
|
210
|
-
}
|
|
211
|
-
async getfetch() {
|
|
212
|
-
try {
|
|
213
|
-
const result = await this.returnResult();
|
|
214
|
-
if (result.status === 504) {
|
|
215
|
-
return result;
|
|
216
|
-
}
|
|
217
|
-
this.isGetResult = true;
|
|
218
|
-
return result;
|
|
219
|
-
} catch (error) {
|
|
220
|
-
logger.info(error);
|
|
221
|
-
return false;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
async returnResult() {
|
|
225
|
-
return await this.axiosInstance(this.config);
|
|
226
|
-
}
|
|
227
|
-
/** 最终地址(跟随重定向) */
|
|
228
|
-
async getLongLink() {
|
|
229
|
-
try {
|
|
230
|
-
const response = await this.axiosInstance({
|
|
231
|
-
method: "GET",
|
|
232
|
-
url: this.url
|
|
233
|
-
});
|
|
234
|
-
return response.request.res.responseUrl;
|
|
235
|
-
} catch (error) {
|
|
236
|
-
if (error instanceof axios.AxiosError) {
|
|
237
|
-
throw new Error(error.stack);
|
|
238
|
-
}
|
|
239
|
-
return "";
|
|
170
|
+
var fetchData = async (config) => {
|
|
171
|
+
try {
|
|
172
|
+
const response = await axios__default.default(config);
|
|
173
|
+
if (response.status === 429) {
|
|
174
|
+
logger.error("HTTP \u54CD\u5E94\u72B6\u6001\u7801: 429");
|
|
175
|
+
throw new Error("ratelimit triggered, \u89E6\u53D1\u901F\u7387\u9650\u5236\uFF01");
|
|
240
176
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
method: "GET",
|
|
247
|
-
url: this.url,
|
|
248
|
-
maxRedirects: 0,
|
|
249
|
-
// 禁止跟随重定向
|
|
250
|
-
validateStatus: (status) => status >= 300 && status < 400
|
|
251
|
-
// 仅处理3xx响应
|
|
252
|
-
});
|
|
253
|
-
return response.headers["location"];
|
|
254
|
-
} catch (error) {
|
|
255
|
-
if (error instanceof axios.AxiosError) {
|
|
256
|
-
throw new Error(error.stack);
|
|
257
|
-
}
|
|
258
|
-
return "";
|
|
177
|
+
return response.data;
|
|
178
|
+
} catch (error) {
|
|
179
|
+
if (error instanceof axios.AxiosError) {
|
|
180
|
+
logger.error("\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25:", error.message);
|
|
181
|
+
throw error;
|
|
259
182
|
}
|
|
183
|
+
throw error;
|
|
260
184
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
if (result.status === 429) {
|
|
270
|
-
logger.error("HTTP \u54CD\u5E94\u72B6\u6001\u7801: 429");
|
|
271
|
-
throw new Error("ratelimit triggered, \u89E6\u53D1 https://www.douyin.com/ \u7684\u901F\u7387\u9650\u5236\uFF01\uFF01\uFF01");
|
|
272
|
-
}
|
|
273
|
-
this.axiosInstance = result;
|
|
274
|
-
this.isGetResult = true;
|
|
275
|
-
} else {
|
|
276
|
-
this.axiosInstance = new_fetch;
|
|
277
|
-
}
|
|
278
|
-
return this.axiosInstance.data;
|
|
279
|
-
} catch (error) {
|
|
280
|
-
if (error instanceof axios.AxiosError) {
|
|
281
|
-
throw new Error(error.stack);
|
|
282
|
-
}
|
|
283
|
-
return false;
|
|
185
|
+
};
|
|
186
|
+
var fetchResponse = async (config) => {
|
|
187
|
+
try {
|
|
188
|
+
return await axios__default.default(config);
|
|
189
|
+
} catch (error) {
|
|
190
|
+
if (error instanceof axios.AxiosError) {
|
|
191
|
+
throw error;
|
|
284
192
|
}
|
|
193
|
+
throw new Error("\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25");
|
|
285
194
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
return { headers: null, data: null };
|
|
298
|
-
}
|
|
195
|
+
};
|
|
196
|
+
var getHeadersAndData = async (config) => {
|
|
197
|
+
try {
|
|
198
|
+
const response = await fetchResponse(config);
|
|
199
|
+
return {
|
|
200
|
+
headers: response.headers,
|
|
201
|
+
data: response.data
|
|
202
|
+
};
|
|
203
|
+
} catch (error) {
|
|
204
|
+
logger.error("\u83B7\u53D6\u54CD\u5E94\u5934\u548C\u6570\u636E\u5931\u8D25:", error);
|
|
205
|
+
return { headers: {}, data: {} };
|
|
299
206
|
}
|
|
300
207
|
};
|
|
301
208
|
|
|
302
209
|
// src/platform/bilibili/qtparam.ts
|
|
303
210
|
var qtparam = async (BASEURL, cookie) => {
|
|
304
211
|
if (cookie === "") return { QUERY: "&platform=html5", STATUS: "!isLogin" };
|
|
305
|
-
const logininfo = await
|
|
212
|
+
const logininfo = await fetchData({ url: bilibiliApiUrls.\u767B\u5F55\u57FA\u672C\u4FE1\u606F(), headers: { Cookie: cookie } });
|
|
306
213
|
const sign = await wbi_sign(BASEURL, cookie);
|
|
307
214
|
const qn = [6, 16, 32, 64, 74, 80, 112, 116, 120, 125, 126, 127];
|
|
308
215
|
let isvip;
|
|
@@ -529,43 +436,117 @@ var wbi_sign = async (BASEURL, cookie) => {
|
|
|
529
436
|
return query;
|
|
530
437
|
};
|
|
531
438
|
|
|
439
|
+
// src/platform/defaultConfigs.ts
|
|
440
|
+
var generateSecChUa = (userAgent) => {
|
|
441
|
+
const chromeMatch = userAgent.match(/Chrome\/(\d+)/);
|
|
442
|
+
const chromeVersion = chromeMatch ? chromeMatch[1] : "125";
|
|
443
|
+
return `"Not)A;Brand";v="8", "Chromium";v="${chromeVersion}", "Google Chrome";v="${chromeVersion}"`;
|
|
444
|
+
};
|
|
445
|
+
var getDouyinDefaultConfig = (cookie, requestConfig) => {
|
|
446
|
+
var _a;
|
|
447
|
+
const finalUserAgent = ((_a = void 0 ) == null ? void 0 : _a["User-Agent"]) || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36";
|
|
448
|
+
const defHeaders = {
|
|
449
|
+
Accept: "application/json, text/plain, */*",
|
|
450
|
+
"Accept-Encoding": "gzip, deflate, br, zstd",
|
|
451
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
452
|
+
Cookie: cookie ? cookie.replace(/\s+/g, "") : "",
|
|
453
|
+
Priority: "u=1, i",
|
|
454
|
+
Referer: "https://www.douyin.com/",
|
|
455
|
+
"Sec-Ch-Ua": generateSecChUa(finalUserAgent),
|
|
456
|
+
"Sec-Ch-Ua-Mobile": "?0",
|
|
457
|
+
"Sec-Ch-Ua-Platform": '"Windows"',
|
|
458
|
+
"Sec-Fetch-Dest": "empty",
|
|
459
|
+
"Sec-Fetch-Mode": "cors",
|
|
460
|
+
"Sec-Fetch-Site": "same-origin",
|
|
461
|
+
"User-Agent": finalUserAgent
|
|
462
|
+
};
|
|
463
|
+
return {
|
|
464
|
+
method: "GET",
|
|
465
|
+
timeout: 1e4,
|
|
466
|
+
...requestConfig,
|
|
467
|
+
headers: {
|
|
468
|
+
...defHeaders,
|
|
469
|
+
...{}
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
};
|
|
473
|
+
var getBilibiliDefaultConfig = (cookie, requestConfig) => {
|
|
474
|
+
const defHeaders = {
|
|
475
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
|
476
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
477
|
+
"Cache-Control": "max-age=0",
|
|
478
|
+
Priority: "u=0, i",
|
|
479
|
+
"Sec-Ch-Ua": '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
|
|
480
|
+
"Sec-Ch-Ua-Mobile": "?0",
|
|
481
|
+
"Sec-Ch-Ua-Platform": '"Windows"',
|
|
482
|
+
"Sec-Fetch-Dest": "document",
|
|
483
|
+
"Sec-Fetch-Mode": "navigate",
|
|
484
|
+
"Sec-Fetch-Site": "none",
|
|
485
|
+
"Sec-Fetch-User": "?1",
|
|
486
|
+
"Upgrade-Insecure-Requests": "1",
|
|
487
|
+
Referer: "https://www.bilibili.com/",
|
|
488
|
+
Cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
489
|
+
};
|
|
490
|
+
return {
|
|
491
|
+
method: "GET",
|
|
492
|
+
timeout: 1e4,
|
|
493
|
+
...requestConfig,
|
|
494
|
+
headers: {
|
|
495
|
+
...defHeaders,
|
|
496
|
+
...{}
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
};
|
|
500
|
+
var getKuaishouDefaultConfig = (cookie, requestConfig) => {
|
|
501
|
+
const defHeaders = {
|
|
502
|
+
Referer: "https://www.kuaishou.com/new-reco",
|
|
503
|
+
Origin: "https://www.kuaishou.com",
|
|
504
|
+
Accept: "application/json, text/plain, */*",
|
|
505
|
+
"Accept-Encoding": "gzip, deflate, br, zstd",
|
|
506
|
+
"Content-Type": "application/json",
|
|
507
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
508
|
+
Priority: "u=0, i",
|
|
509
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
|
|
510
|
+
Cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
511
|
+
};
|
|
512
|
+
return {
|
|
513
|
+
method: "POST",
|
|
514
|
+
timeout: 1e4,
|
|
515
|
+
...requestConfig,
|
|
516
|
+
headers: {
|
|
517
|
+
...defHeaders,
|
|
518
|
+
...{}
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
};
|
|
522
|
+
|
|
532
523
|
// src/platform/bilibili/getdata.ts
|
|
533
|
-
var
|
|
534
|
-
|
|
535
|
-
"
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
"sec-fetch-user": "?1",
|
|
545
|
-
"upgrade-insecure-requests": "1",
|
|
546
|
-
referer: "https://www.bilibili.com/"
|
|
547
|
-
};
|
|
548
|
-
var fetchBilibili = async (data2, cookie) => {
|
|
549
|
-
var _a, _b, _c;
|
|
550
|
-
const headers2 = {
|
|
551
|
-
...defheaders,
|
|
552
|
-
cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
524
|
+
var fetchBilibili = async (data2, cookie, requestConfig) => {
|
|
525
|
+
var _a, _b, _c, _d, _e, _f;
|
|
526
|
+
const defHeaders = getBilibiliDefaultConfig(cookie)["headers"];
|
|
527
|
+
const baseRequestConfig = {
|
|
528
|
+
method: "GET",
|
|
529
|
+
timeout: 1e4,
|
|
530
|
+
...requestConfig,
|
|
531
|
+
headers: {
|
|
532
|
+
...defHeaders,
|
|
533
|
+
...{}
|
|
534
|
+
}
|
|
553
535
|
};
|
|
554
536
|
switch (data2.methodType) {
|
|
555
537
|
case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": {
|
|
556
|
-
const INFODATA = await GlobalGetData({
|
|
557
|
-
|
|
558
|
-
|
|
538
|
+
const INFODATA = await GlobalGetData(data2.methodType, {
|
|
539
|
+
...baseRequestConfig,
|
|
540
|
+
url: bilibiliApiUrls.\u89C6\u9891\u8BE6\u7EC6\u4FE1\u606F({ bvid: data2.bvid })
|
|
559
541
|
});
|
|
560
542
|
return INFODATA;
|
|
561
543
|
}
|
|
562
544
|
case "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E": {
|
|
563
545
|
const BASEURL = bilibiliApiUrls.\u89C6\u9891\u6D41\u4FE1\u606F({ avid: data2.avid, cid: data2.cid });
|
|
564
|
-
const SIGN = await qtparam(BASEURL,
|
|
565
|
-
const DATA = await GlobalGetData({
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
...data2
|
|
546
|
+
const SIGN = await qtparam(BASEURL, (_a = baseRequestConfig.headers) == null ? void 0 : _a.cookie);
|
|
547
|
+
const DATA = await GlobalGetData(data2.methodType, {
|
|
548
|
+
...baseRequestConfig,
|
|
549
|
+
url: bilibiliApiUrls.\u89C6\u9891\u6D41\u4FE1\u606F({ avid: data2.avid, cid: data2.cid }) + SIGN.QUERY
|
|
569
550
|
});
|
|
570
551
|
return DATA;
|
|
571
552
|
}
|
|
@@ -578,10 +559,9 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
578
559
|
let nextPaginationStr = pagination_str;
|
|
579
560
|
let isEnd = false;
|
|
580
561
|
const checkStatusUrl = bilibiliApiUrls.\u8BC4\u8BBA\u533A\u72B6\u6001({ oid, type });
|
|
581
|
-
const checkStatusRes = await GlobalGetData({
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
...data2
|
|
562
|
+
const checkStatusRes = await GlobalGetData(data2.methodType, {
|
|
563
|
+
...baseRequestConfig,
|
|
564
|
+
url: checkStatusUrl
|
|
585
565
|
});
|
|
586
566
|
if (checkStatusRes.data === null) {
|
|
587
567
|
logger.error("\u8BC4\u8BBA\u533A\u672A\u5F00\u653E");
|
|
@@ -601,18 +581,17 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
601
581
|
seek_rpid,
|
|
602
582
|
web_location: web_location ?? "1315875"
|
|
603
583
|
});
|
|
604
|
-
const wbiSignQuery = await wbi_sign(baseUrl,
|
|
584
|
+
const wbiSignQuery = await wbi_sign(baseUrl, (_b = baseRequestConfig.headers) == null ? void 0 : _b.cookie);
|
|
605
585
|
const finalUrl = baseUrl + wbiSignQuery;
|
|
606
|
-
const response = await GlobalGetData({
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
...data2
|
|
586
|
+
const response = await GlobalGetData(data2.methodType, {
|
|
587
|
+
...baseRequestConfig,
|
|
588
|
+
url: finalUrl
|
|
610
589
|
});
|
|
611
590
|
tmpresp = response;
|
|
612
|
-
const currentComments = ((
|
|
591
|
+
const currentComments = ((_c = response.data) == null ? void 0 : _c.replies) || [];
|
|
613
592
|
fetchedComments.push(...currentComments);
|
|
614
|
-
if ((
|
|
615
|
-
nextPaginationStr = (
|
|
593
|
+
if ((_d = response.data) == null ? void 0 : _d.cursor) {
|
|
594
|
+
nextPaginationStr = (_e = response.data.cursor.pagination_reply) == null ? void 0 : _e.next_offset;
|
|
616
595
|
isEnd = response.data.cursor.is_end;
|
|
617
596
|
} else {
|
|
618
597
|
isEnd = true;
|
|
@@ -634,9 +613,9 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
634
613
|
return finalResponse;
|
|
635
614
|
}
|
|
636
615
|
case "Emoji\u6570\u636E": {
|
|
637
|
-
return await GlobalGetData({
|
|
638
|
-
|
|
639
|
-
|
|
616
|
+
return await GlobalGetData(data2.methodType, {
|
|
617
|
+
...baseRequestConfig,
|
|
618
|
+
url: bilibiliApiUrls.\u8868\u60C5\u5217\u8868()
|
|
640
619
|
});
|
|
641
620
|
}
|
|
642
621
|
case "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E": {
|
|
@@ -646,106 +625,121 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
646
625
|
}
|
|
647
626
|
const idType = id ? id.startsWith("ep") ? "ep_id" : "season_id" : "ep_id";
|
|
648
627
|
const newId = idType === "ep_id" ? id.replace("ep", "") : id.replace("ss", "");
|
|
649
|
-
const INFO = await GlobalGetData({
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
...data2
|
|
628
|
+
const INFO = await GlobalGetData(data2.methodType, {
|
|
629
|
+
...baseRequestConfig,
|
|
630
|
+
url: bilibiliApiUrls.\u756A\u5267\u660E\u7EC6({ [idType]: newId })
|
|
653
631
|
});
|
|
654
632
|
return INFO;
|
|
655
633
|
}
|
|
656
634
|
case "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E": {
|
|
657
635
|
const BASEURL = bilibiliApiUrls.\u756A\u5267\u89C6\u9891\u6D41\u4FE1\u606F({ cid: data2.cid, ep_id: data2.ep_id.replace("ep", "") });
|
|
658
|
-
const SIGN = await qtparam(BASEURL,
|
|
659
|
-
const DATA = await GlobalGetData({
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
...data2
|
|
636
|
+
const SIGN = await qtparam(BASEURL, (_f = baseRequestConfig.headers) == null ? void 0 : _f.cookie);
|
|
637
|
+
const DATA = await GlobalGetData(data2.methodType, {
|
|
638
|
+
...baseRequestConfig,
|
|
639
|
+
url: bilibiliApiUrls.\u756A\u5267\u89C6\u9891\u6D41\u4FE1\u606F({ cid: data2.cid, ep_id: data2.ep_id.replace("ep", "") }) + SIGN.QUERY
|
|
663
640
|
});
|
|
664
641
|
return DATA;
|
|
665
642
|
}
|
|
666
643
|
case "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E": {
|
|
667
|
-
|
|
644
|
+
const customConfig = {
|
|
645
|
+
...baseRequestConfig,
|
|
646
|
+
headers: {
|
|
647
|
+
...baseRequestConfig.headers,
|
|
648
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
649
|
+
...{
|
|
650
|
+
referer: void 0
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
};
|
|
668
654
|
const { host_mid } = data2;
|
|
669
|
-
const result = await GlobalGetData({
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
...data2
|
|
655
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
656
|
+
...customConfig,
|
|
657
|
+
url: bilibiliApiUrls.\u7528\u6237\u7A7A\u95F4\u52A8\u6001({ host_mid })
|
|
673
658
|
});
|
|
674
659
|
return result;
|
|
675
660
|
}
|
|
676
661
|
case "\u52A8\u6001\u8BE6\u60C5\u6570\u636E": {
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
662
|
+
const customConfig = {
|
|
663
|
+
...baseRequestConfig,
|
|
664
|
+
headers: {
|
|
665
|
+
...baseRequestConfig.headers,
|
|
666
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
667
|
+
...{
|
|
668
|
+
referer: void 0
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
};
|
|
672
|
+
const dynamicINFO = await GlobalGetData(data2.methodType, {
|
|
673
|
+
...customConfig,
|
|
674
|
+
url: bilibiliApiUrls.\u52A8\u6001\u8BE6\u60C5({ dynamic_id: data2.dynamic_id })
|
|
682
675
|
});
|
|
683
676
|
return dynamicINFO;
|
|
684
677
|
}
|
|
685
678
|
case "\u52A8\u6001\u5361\u7247\u6570\u636E": {
|
|
686
|
-
|
|
679
|
+
const customConfig = {
|
|
680
|
+
...baseRequestConfig,
|
|
681
|
+
headers: {
|
|
682
|
+
...baseRequestConfig.headers,
|
|
683
|
+
// 只有在外部配置没有referer时才删除内部的referer
|
|
684
|
+
...{
|
|
685
|
+
referer: void 0
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
};
|
|
687
689
|
const { dynamic_id } = data2;
|
|
688
|
-
const dynamicINFO_CARD = await GlobalGetData({
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
...data2
|
|
690
|
+
const dynamicINFO_CARD = await GlobalGetData(data2.methodType, {
|
|
691
|
+
...customConfig,
|
|
692
|
+
url: bilibiliApiUrls.\u52A8\u6001\u5361\u7247\u4FE1\u606F({ dynamic_id })
|
|
692
693
|
});
|
|
693
694
|
return dynamicINFO_CARD;
|
|
694
695
|
}
|
|
695
696
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
696
697
|
const { host_mid } = data2;
|
|
697
|
-
const result = await GlobalGetData({
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
...data2
|
|
698
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
699
|
+
...baseRequestConfig,
|
|
700
|
+
url: bilibiliApiUrls.\u7528\u6237\u540D\u7247\u4FE1\u606F({ host_mid })
|
|
701
701
|
});
|
|
702
702
|
return result;
|
|
703
703
|
}
|
|
704
704
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F": {
|
|
705
|
-
const result = await GlobalGetData({
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
...data2
|
|
705
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
706
|
+
...baseRequestConfig,
|
|
707
|
+
url: bilibiliApiUrls.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: data2.room_id })
|
|
709
708
|
});
|
|
710
709
|
return result;
|
|
711
710
|
}
|
|
712
711
|
case "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F": {
|
|
713
|
-
const result = await GlobalGetData({
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
...data2
|
|
712
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
713
|
+
...baseRequestConfig,
|
|
714
|
+
url: bilibiliApiUrls.\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F({ room_id: data2.room_id })
|
|
717
715
|
});
|
|
718
716
|
return result;
|
|
719
717
|
}
|
|
720
718
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801": {
|
|
721
|
-
const result = await GlobalGetData({
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
...data2
|
|
719
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
720
|
+
...baseRequestConfig,
|
|
721
|
+
url: bilibiliApiUrls.\u7533\u8BF7\u4E8C\u7EF4\u7801()
|
|
725
722
|
});
|
|
726
723
|
return result;
|
|
727
724
|
}
|
|
728
725
|
case "\u4E8C\u7EF4\u7801\u72B6\u6001": {
|
|
729
|
-
const result = await
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
}).getHeadersAndData();
|
|
726
|
+
const result = await getHeadersAndData({
|
|
727
|
+
...baseRequestConfig,
|
|
728
|
+
url: bilibiliApiUrls.\u4E8C\u7EF4\u7801\u72B6\u6001({ qrcode_key: data2.qrcode_key })
|
|
729
|
+
});
|
|
734
730
|
return result;
|
|
735
731
|
}
|
|
736
732
|
case "\u767B\u5F55\u57FA\u672C\u4FE1\u606F": {
|
|
737
|
-
const result = await GlobalGetData({
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
...data2
|
|
733
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
734
|
+
...baseRequestConfig,
|
|
735
|
+
url: bilibiliApiUrls.\u767B\u5F55\u57FA\u672C\u4FE1\u606F()
|
|
741
736
|
});
|
|
742
737
|
return result;
|
|
743
738
|
}
|
|
744
739
|
case "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF": {
|
|
745
|
-
const result = await GlobalGetData({
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
...data2
|
|
740
|
+
const result = await GlobalGetData(data2.methodType, {
|
|
741
|
+
...baseRequestConfig,
|
|
742
|
+
url: bilibiliApiUrls.\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF({ host_mid: data2.host_mid })
|
|
749
743
|
});
|
|
750
744
|
return result;
|
|
751
745
|
}
|
|
@@ -774,19 +768,19 @@ var fetchBilibili = async (data2, cookie) => {
|
|
|
774
768
|
return null;
|
|
775
769
|
}
|
|
776
770
|
};
|
|
777
|
-
var GlobalGetData = async (options) => {
|
|
771
|
+
var GlobalGetData = async (type, options) => {
|
|
778
772
|
let warningMessage = "";
|
|
779
773
|
try {
|
|
780
|
-
const result = await
|
|
774
|
+
const result = await fetchData(options);
|
|
781
775
|
if (!result || result === "") {
|
|
782
776
|
const Err = {
|
|
783
777
|
errorDescription: "\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684B\u7AD9ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01",
|
|
784
|
-
requestType:
|
|
778
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
785
779
|
requestUrl: options.url
|
|
786
780
|
};
|
|
787
781
|
warningMessage = `
|
|
788
782
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow("\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684B\u7AD9ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01")}
|
|
789
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
783
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
790
784
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
791
785
|
`;
|
|
792
786
|
logger.warn(warningMessage);
|
|
@@ -800,13 +794,13 @@ var GlobalGetData = async (options) => {
|
|
|
800
794
|
const errorMessage = bilibiliErrorCodeMap[result.code] || result.message || "\u672A\u77E5\u9519\u8BEF";
|
|
801
795
|
const Err = {
|
|
802
796
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${errorMessage}\uFF01`,
|
|
803
|
-
requestType:
|
|
797
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
804
798
|
requestUrl: options.url
|
|
805
799
|
};
|
|
806
800
|
warningMessage = `
|
|
807
801
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow(errorMessage)}
|
|
808
802
|
\u9519\u8BEF\u4EE3\u7801\uFF1A${result.code}
|
|
809
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
803
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
810
804
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
811
805
|
`;
|
|
812
806
|
logger.warn(warningMessage);
|
|
@@ -827,7 +821,7 @@ var GlobalGetData = async (options) => {
|
|
|
827
821
|
data: error.data,
|
|
828
822
|
amagiError: {
|
|
829
823
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
830
|
-
requestType:
|
|
824
|
+
requestType: type,
|
|
831
825
|
requestUrl: options.url
|
|
832
826
|
},
|
|
833
827
|
amagiMessage: warningMessage
|
|
@@ -1241,9 +1235,7 @@ var a_bogus_default = (url, user_agent) => {
|
|
|
1241
1235
|
};
|
|
1242
1236
|
|
|
1243
1237
|
// src/platform/douyin/sign/index.ts
|
|
1244
|
-
var
|
|
1245
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
|
|
1246
|
-
};
|
|
1238
|
+
var defaultUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36";
|
|
1247
1239
|
var douyinSign = class {
|
|
1248
1240
|
/**
|
|
1249
1241
|
* 生成一个指定长度的随机字符串
|
|
@@ -1260,8 +1252,8 @@ var douyinSign = class {
|
|
|
1260
1252
|
* @param url 需要签名的地址
|
|
1261
1253
|
* @returns 对此地址签名后的URL查询参数
|
|
1262
1254
|
*/
|
|
1263
|
-
static AB(url) {
|
|
1264
|
-
return a_bogus_default(url,
|
|
1255
|
+
static AB(url, userAgent) {
|
|
1256
|
+
return a_bogus_default(url, userAgent || defaultUserAgent);
|
|
1265
1257
|
}
|
|
1266
1258
|
/** 生成一个唯一的验证字符串 */
|
|
1267
1259
|
static VerifyFpManager() {
|
|
@@ -1285,160 +1277,530 @@ var douyinSign = class {
|
|
|
1285
1277
|
};
|
|
1286
1278
|
|
|
1287
1279
|
// src/platform/douyin/API.ts
|
|
1280
|
+
var extractBrowserVersion = (userAgent) => {
|
|
1281
|
+
if (!userAgent) return "125.0.0.0";
|
|
1282
|
+
const chromeMatch = userAgent.match(/Chrome\/(\d+\.\d+\.\d+\.\d+)/);
|
|
1283
|
+
if (chromeMatch) {
|
|
1284
|
+
return chromeMatch[1];
|
|
1285
|
+
}
|
|
1286
|
+
const edgeMatch = userAgent.match(/Edg\/(\d+\.\d+\.\d+\.\d+)/);
|
|
1287
|
+
if (edgeMatch) {
|
|
1288
|
+
return edgeMatch[1];
|
|
1289
|
+
}
|
|
1290
|
+
return "125.0.0.0";
|
|
1291
|
+
};
|
|
1292
|
+
var buildQueryString = (params) => {
|
|
1293
|
+
return Object.entries(params).filter(([_, value]) => value !== void 0 && value !== null).map(([key, value]) => `${key}=${encodeURIComponent(value)}`).join("&");
|
|
1294
|
+
};
|
|
1288
1295
|
var fp = douyinSign.VerifyFpManager();
|
|
1289
1296
|
var DouyinAPI = class {
|
|
1297
|
+
browserVersion;
|
|
1298
|
+
/**
|
|
1299
|
+
* 构造函数
|
|
1300
|
+
* @param userAgent - 用户代理字符串,用于提取浏览器版本信息
|
|
1301
|
+
*/
|
|
1302
|
+
constructor(userAgent) {
|
|
1303
|
+
this.browserVersion = extractBrowserVersion(userAgent);
|
|
1304
|
+
}
|
|
1305
|
+
/**
|
|
1306
|
+
* 获取通用的基础参数
|
|
1307
|
+
* @returns 通用基础参数对象
|
|
1308
|
+
*/
|
|
1309
|
+
getBaseParams() {
|
|
1310
|
+
return {
|
|
1311
|
+
device_platform: "webapp",
|
|
1312
|
+
aid: "6383",
|
|
1313
|
+
channel: "channel_pc_web",
|
|
1314
|
+
pc_client_type: "1",
|
|
1315
|
+
cookie_enabled: "true",
|
|
1316
|
+
browser_language: "zh-CN",
|
|
1317
|
+
browser_platform: "Win32",
|
|
1318
|
+
browser_name: "Chrome",
|
|
1319
|
+
browser_version: this.browserVersion,
|
|
1320
|
+
browser_online: "true",
|
|
1321
|
+
engine_name: "Blink",
|
|
1322
|
+
engine_version: this.browserVersion,
|
|
1323
|
+
os_name: "Windows",
|
|
1324
|
+
os_version: "10",
|
|
1325
|
+
cpu_core_num: "16",
|
|
1326
|
+
device_memory: "8",
|
|
1327
|
+
platform: "PC",
|
|
1328
|
+
downlink: "10",
|
|
1329
|
+
effective_type: "4g",
|
|
1330
|
+
msToken: douyinSign.Mstoken(116),
|
|
1331
|
+
verifyFp: fp,
|
|
1332
|
+
fp
|
|
1333
|
+
};
|
|
1334
|
+
}
|
|
1335
|
+
/**
|
|
1336
|
+
* 获取视频或图集数据的接口地址
|
|
1337
|
+
* @param data - 请求参数,包含aweme_id
|
|
1338
|
+
* @returns 完整的接口URL
|
|
1339
|
+
*/
|
|
1290
1340
|
\u89C6\u9891\u6216\u56FE\u96C6(data2) {
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1341
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/aweme/detail/";
|
|
1342
|
+
const params = {
|
|
1343
|
+
...this.getBaseParams(),
|
|
1344
|
+
aweme_id: data2.aweme_id,
|
|
1345
|
+
update_version_code: "170400",
|
|
1346
|
+
version_code: "190500",
|
|
1347
|
+
version_name: "19.5.0",
|
|
1348
|
+
screen_width: "2328",
|
|
1349
|
+
screen_height: "1310",
|
|
1350
|
+
round_trip_time: "150",
|
|
1351
|
+
webid: "7351848354471872041"
|
|
1352
|
+
};
|
|
1353
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1294
1354
|
}
|
|
1355
|
+
/**
|
|
1356
|
+
* 获取评论数据的接口地址
|
|
1357
|
+
* @param data - 请求参数,包含aweme_id、cursor、number等
|
|
1358
|
+
* @returns 完整的接口URL
|
|
1359
|
+
*/
|
|
1295
1360
|
\u8BC4\u8BBA(data2) {
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1361
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/comment/list/";
|
|
1362
|
+
const params = {
|
|
1363
|
+
...this.getBaseParams(),
|
|
1364
|
+
aweme_id: data2.aweme_id,
|
|
1365
|
+
cursor: data2.cursor ?? 0,
|
|
1366
|
+
count: data2.number ?? 50,
|
|
1367
|
+
item_type: "0",
|
|
1368
|
+
insert_ids: "",
|
|
1369
|
+
whale_cut_token: "",
|
|
1370
|
+
cut_version: "1",
|
|
1371
|
+
rcFT: "",
|
|
1372
|
+
version_code: "170400",
|
|
1373
|
+
version_name: "17.4.0",
|
|
1374
|
+
screen_width: "1552",
|
|
1375
|
+
screen_height: "970",
|
|
1376
|
+
round_trip_time: "50"
|
|
1377
|
+
};
|
|
1378
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1299
1379
|
}
|
|
1380
|
+
/**
|
|
1381
|
+
* 获取二级评论数据的接口地址
|
|
1382
|
+
* @param data - 请求参数,包含aweme_id、comment_id等
|
|
1383
|
+
* @returns 完整的接口URL
|
|
1384
|
+
*/
|
|
1300
1385
|
\u4E8C\u7EA7\u8BC4\u8BBA(data2) {
|
|
1301
|
-
|
|
1386
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/comment/list/reply/";
|
|
1387
|
+
const params = {
|
|
1388
|
+
device_platform: "webapp",
|
|
1389
|
+
aid: "6383",
|
|
1390
|
+
channel: "channel_pc_web",
|
|
1391
|
+
item_id: data2.aweme_id,
|
|
1392
|
+
comment_id: data2.comment_id,
|
|
1393
|
+
cut_version: "1",
|
|
1394
|
+
cursor: data2.cursor,
|
|
1395
|
+
count: data2.number,
|
|
1396
|
+
item_type: "0",
|
|
1397
|
+
update_version_code: "170400",
|
|
1398
|
+
pc_client_type: "1",
|
|
1399
|
+
pc_libra_divert: "Windows",
|
|
1400
|
+
support_h265: "1",
|
|
1401
|
+
support_dash: "1",
|
|
1402
|
+
version_code: "170400",
|
|
1403
|
+
version_name: "17.4.0",
|
|
1404
|
+
cookie_enabled: "true",
|
|
1405
|
+
screen_width: "1552",
|
|
1406
|
+
screen_height: "970",
|
|
1407
|
+
browser_language: "zh-CN",
|
|
1408
|
+
browser_platform: "Win32",
|
|
1409
|
+
browser_name: "Edge",
|
|
1410
|
+
browser_version: "132.0.0.0",
|
|
1411
|
+
browser_online: "true",
|
|
1412
|
+
engine_name: "Blink",
|
|
1413
|
+
engine_version: "132.0.0.0",
|
|
1414
|
+
os_name: "Windows",
|
|
1415
|
+
os_version: "10",
|
|
1416
|
+
cpu_core_num: "16",
|
|
1417
|
+
device_memory: "8",
|
|
1418
|
+
platform: "PC",
|
|
1419
|
+
downlink: "10",
|
|
1420
|
+
effective_type: "4g",
|
|
1421
|
+
round_trip_time: "50",
|
|
1422
|
+
webid: "7386217876267796006",
|
|
1423
|
+
verifyFp: fp,
|
|
1424
|
+
fp
|
|
1425
|
+
};
|
|
1426
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1302
1427
|
}
|
|
1428
|
+
/**
|
|
1429
|
+
* 获取动图数据的接口地址
|
|
1430
|
+
* @param data - 请求参数,包含aweme_id
|
|
1431
|
+
* @returns 完整的接口URL
|
|
1432
|
+
*/
|
|
1303
1433
|
\u52A8\u56FE(data2) {
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1434
|
+
const baseUrl = "https://www.iesdouyin.com/web/api/v2/aweme/slidesinfo/";
|
|
1435
|
+
const params = {
|
|
1436
|
+
reflow_source: "reflow_page",
|
|
1437
|
+
web_id: "7326472315356857893",
|
|
1438
|
+
device_id: "7326472315356857893",
|
|
1439
|
+
aweme_ids: `[${data2.aweme_id}]`,
|
|
1440
|
+
request_source: "200",
|
|
1441
|
+
msToken: douyinSign.Mstoken(116),
|
|
1442
|
+
verifyFp: fp,
|
|
1443
|
+
fp
|
|
1444
|
+
};
|
|
1445
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1307
1446
|
}
|
|
1447
|
+
/**
|
|
1448
|
+
* 获取表情数据的接口地址
|
|
1449
|
+
* @returns 完整的接口URL
|
|
1450
|
+
*/
|
|
1308
1451
|
\u8868\u60C5() {
|
|
1309
1452
|
return "https://www.douyin.com/aweme/v1/web/emoji/list";
|
|
1310
1453
|
}
|
|
1454
|
+
/**
|
|
1455
|
+
* 获取用户主页视频数据的接口地址
|
|
1456
|
+
* @param data - 请求参数,包含sec_uid
|
|
1457
|
+
* @returns 完整的接口URL
|
|
1458
|
+
*/
|
|
1311
1459
|
\u7528\u6237\u4E3B\u9875\u89C6\u9891(data2) {
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1460
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/aweme/post/";
|
|
1461
|
+
const params = {
|
|
1462
|
+
...this.getBaseParams(),
|
|
1463
|
+
sec_user_id: data2.sec_uid,
|
|
1464
|
+
max_cursor: "0",
|
|
1465
|
+
locate_query: "false",
|
|
1466
|
+
show_live_replay_strategy: "1",
|
|
1467
|
+
need_time_list: "1",
|
|
1468
|
+
time_list_query: "0",
|
|
1469
|
+
whale_cut_token: "",
|
|
1470
|
+
cut_version: "1",
|
|
1471
|
+
count: "18",
|
|
1472
|
+
publish_video_strategy_type: "2",
|
|
1473
|
+
version_code: "170400",
|
|
1474
|
+
version_name: "17.4.0",
|
|
1475
|
+
screen_width: "1552",
|
|
1476
|
+
screen_height: "970",
|
|
1477
|
+
round_trip_time: "50",
|
|
1478
|
+
webid: "7338423850134226495"
|
|
1479
|
+
};
|
|
1480
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1315
1481
|
}
|
|
1482
|
+
/**
|
|
1483
|
+
* 获取用户主页信息的接口地址
|
|
1484
|
+
* @param data - 请求参数,包含sec_uid
|
|
1485
|
+
* @returns 完整的接口URL
|
|
1486
|
+
*/
|
|
1316
1487
|
\u7528\u6237\u4E3B\u9875\u4FE1\u606F(data2) {
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1488
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/user/profile/other/";
|
|
1489
|
+
const params = {
|
|
1490
|
+
...this.getBaseParams(),
|
|
1491
|
+
publish_video_strategy_type: "2",
|
|
1492
|
+
source: "channel_pc_web",
|
|
1493
|
+
sec_user_id: data2.sec_uid,
|
|
1494
|
+
personal_center_strategy: "1",
|
|
1495
|
+
version_code: "170400",
|
|
1496
|
+
version_name: "17.4.0",
|
|
1497
|
+
screen_width: "1552",
|
|
1498
|
+
screen_height: "970",
|
|
1499
|
+
round_trip_time: "0",
|
|
1500
|
+
webid: "7327957959955580467"
|
|
1501
|
+
};
|
|
1502
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1320
1503
|
}
|
|
1504
|
+
/**
|
|
1505
|
+
* 获取热点词数据的接口地址
|
|
1506
|
+
* @param data - 请求参数,包含query
|
|
1507
|
+
* @returns 完整的接口URL
|
|
1508
|
+
*/
|
|
1321
1509
|
\u70ED\u70B9\u8BCD(data2) {
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1510
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/api/suggest_words/";
|
|
1511
|
+
const params = {
|
|
1512
|
+
...this.getBaseParams(),
|
|
1513
|
+
query: data2.query,
|
|
1514
|
+
business_id: "30088",
|
|
1515
|
+
from_group_id: "7129543174929812767",
|
|
1516
|
+
version_code: "170400",
|
|
1517
|
+
version_name: "17.4.0",
|
|
1518
|
+
screen_width: "1552",
|
|
1519
|
+
screen_height: "970",
|
|
1520
|
+
round_trip_time: "50",
|
|
1521
|
+
webid: "7327957959955580467"
|
|
1522
|
+
};
|
|
1523
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1325
1524
|
}
|
|
1525
|
+
/**
|
|
1526
|
+
* 获取搜索数据的接口地址
|
|
1527
|
+
* @param data - 请求参数,包含query、number、search_id等
|
|
1528
|
+
* @returns 完整的接口URL
|
|
1529
|
+
*/
|
|
1326
1530
|
\u641C\u7D22(data2) {
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1531
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/general/search/single/";
|
|
1532
|
+
const params = {
|
|
1533
|
+
...this.getBaseParams(),
|
|
1534
|
+
search_channel: "aweme_general",
|
|
1535
|
+
sort_type: "0",
|
|
1536
|
+
publish_time: "0",
|
|
1537
|
+
keyword: data2.query,
|
|
1538
|
+
search_source: "normal_search",
|
|
1539
|
+
query_correct_type: "1",
|
|
1540
|
+
is_filter_search: "0",
|
|
1541
|
+
from_group_id: "",
|
|
1542
|
+
offset: "0",
|
|
1543
|
+
version_code: "190600",
|
|
1544
|
+
version_name: "19.6.0",
|
|
1545
|
+
screen_width: "1552",
|
|
1546
|
+
screen_height: "970",
|
|
1547
|
+
round_trip_time: "50",
|
|
1548
|
+
webid: "7338423850134226495",
|
|
1549
|
+
search_id: data2.search_id ?? "",
|
|
1550
|
+
count: data2.number ?? 10
|
|
1551
|
+
};
|
|
1552
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1330
1553
|
}
|
|
1554
|
+
/**
|
|
1555
|
+
* 获取互动表情数据的接口地址
|
|
1556
|
+
* @returns 完整的接口URL
|
|
1557
|
+
*/
|
|
1331
1558
|
\u4E92\u52A8\u8868\u60C5() {
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1559
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/im/strategy/config";
|
|
1560
|
+
const params = {
|
|
1561
|
+
device_platform: "webapp",
|
|
1562
|
+
aid: "1128",
|
|
1563
|
+
channel: "channel_pc_web",
|
|
1564
|
+
publish_video_strategy_type: "2",
|
|
1565
|
+
app_id: "1128",
|
|
1566
|
+
scenes: "[%22interactive_resources%22]",
|
|
1567
|
+
pc_client_type: "1",
|
|
1568
|
+
version_code: "170400",
|
|
1569
|
+
version_name: "17.4.0",
|
|
1570
|
+
cookie_enabled: "true",
|
|
1571
|
+
screen_width: "2328",
|
|
1572
|
+
screen_height: "1310",
|
|
1573
|
+
browser_language: "zh-CN",
|
|
1574
|
+
browser_platform: "Win32",
|
|
1575
|
+
browser_name: "Chrome",
|
|
1576
|
+
browser_version: "126.0.0.0",
|
|
1577
|
+
browser_online: "true",
|
|
1578
|
+
engine_name: "Blink",
|
|
1579
|
+
engine_version: "126.0.0.0",
|
|
1580
|
+
os_name: "Windows",
|
|
1581
|
+
os_version: "10",
|
|
1582
|
+
cpu_core_num: "16",
|
|
1583
|
+
device_memory: "8",
|
|
1584
|
+
platform: "PC",
|
|
1585
|
+
downlink: "1.5",
|
|
1586
|
+
effective_type: "4g",
|
|
1587
|
+
round_trip_time: "350",
|
|
1588
|
+
webid: "7347329698282833447",
|
|
1589
|
+
msToken: douyinSign.Mstoken(116),
|
|
1590
|
+
verifyFp: fp,
|
|
1591
|
+
fp
|
|
1592
|
+
};
|
|
1593
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1335
1594
|
}
|
|
1595
|
+
/**
|
|
1596
|
+
* 获取背景音乐数据的接口地址
|
|
1597
|
+
* @param data - 请求参数,包含music_id
|
|
1598
|
+
* @returns 完整的接口URL
|
|
1599
|
+
*/
|
|
1336
1600
|
\u80CC\u666F\u97F3\u4E50(data2) {
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1601
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/music/detail/";
|
|
1602
|
+
const params = {
|
|
1603
|
+
device_platform: "webapp",
|
|
1604
|
+
aid: "6383",
|
|
1605
|
+
channel: "channel_pc_web",
|
|
1606
|
+
music_id: data2.music_id,
|
|
1607
|
+
scene: "1",
|
|
1608
|
+
pc_client_type: "1",
|
|
1609
|
+
version_code: "170400",
|
|
1610
|
+
version_name: "17.4.0",
|
|
1611
|
+
cookie_enabled: "true",
|
|
1612
|
+
screen_width: "2328",
|
|
1613
|
+
screen_height: "1310",
|
|
1614
|
+
browser_language: "zh-CN",
|
|
1615
|
+
browser_platform: "Win32",
|
|
1616
|
+
browser_name: "Chrome",
|
|
1617
|
+
browser_version: "126.0.0.0",
|
|
1618
|
+
browser_online: "true",
|
|
1619
|
+
engine_name: "Blink",
|
|
1620
|
+
engine_version: "126.0.0.0",
|
|
1621
|
+
os_name: "Windows",
|
|
1622
|
+
os_version: "10",
|
|
1623
|
+
cpu_core_num: "16",
|
|
1624
|
+
device_memory: "8",
|
|
1625
|
+
platform: "PC",
|
|
1626
|
+
downlink: "1.5",
|
|
1627
|
+
effective_type: "4g",
|
|
1628
|
+
round_trip_time: "350",
|
|
1629
|
+
webid: "7347329698282833447",
|
|
1630
|
+
msToken: douyinSign.Mstoken(116),
|
|
1631
|
+
verifyFp: fp,
|
|
1632
|
+
fp
|
|
1633
|
+
};
|
|
1634
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1340
1635
|
}
|
|
1636
|
+
/**
|
|
1637
|
+
* 获取直播间信息的接口地址
|
|
1638
|
+
* @param data - 请求参数,包含web_rid、room_id
|
|
1639
|
+
* @returns 完整的接口URL
|
|
1640
|
+
*/
|
|
1341
1641
|
\u76F4\u64AD\u95F4\u4FE1\u606F(data2) {
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1642
|
+
const baseUrl = "https://live.douyin.com/webcast/room/web/enter/";
|
|
1643
|
+
const params = {
|
|
1644
|
+
aid: "6383",
|
|
1645
|
+
app_name: "douyin_web",
|
|
1646
|
+
live_id: "1",
|
|
1647
|
+
device_platform: "web",
|
|
1648
|
+
language: "zh-CN",
|
|
1649
|
+
enter_from: "web_share_link",
|
|
1650
|
+
cookie_enabled: "true",
|
|
1651
|
+
screen_width: "2048",
|
|
1652
|
+
screen_height: "1152",
|
|
1653
|
+
browser_language: "zh-CN",
|
|
1654
|
+
browser_platform: "Win32",
|
|
1655
|
+
browser_name: "Chrome",
|
|
1656
|
+
browser_version: "125.0.0.0",
|
|
1657
|
+
web_rid: data2.web_rid,
|
|
1658
|
+
room_id_str: data2.room_id,
|
|
1659
|
+
enter_source: "",
|
|
1660
|
+
is_need_double_stream: "false",
|
|
1661
|
+
insert_task_id: "",
|
|
1662
|
+
live_reason: "",
|
|
1663
|
+
msToken: douyinSign.Mstoken(116),
|
|
1664
|
+
verifyFp: fp,
|
|
1665
|
+
fp
|
|
1666
|
+
};
|
|
1667
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1345
1668
|
}
|
|
1669
|
+
/**
|
|
1670
|
+
* 获取申请二维码的接口地址
|
|
1671
|
+
* @param data - 请求参数,包含verify_fp
|
|
1672
|
+
* @returns 完整的接口URL
|
|
1673
|
+
*/
|
|
1346
1674
|
\u7533\u8BF7\u4E8C\u7EF4\u7801(data2) {
|
|
1347
|
-
|
|
1675
|
+
const baseUrl = "https://sso.douyin.com/get_qrcode/";
|
|
1676
|
+
const params = {
|
|
1677
|
+
verifyFp: data2.verify_fp,
|
|
1678
|
+
fp: data2.verify_fp
|
|
1679
|
+
};
|
|
1680
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1348
1681
|
}
|
|
1349
1682
|
};
|
|
1683
|
+
var createDouyinApiUrls = (userAgent) => {
|
|
1684
|
+
return new DouyinAPI(userAgent);
|
|
1685
|
+
};
|
|
1350
1686
|
var douyinApiUrls = new DouyinAPI();
|
|
1351
1687
|
|
|
1352
1688
|
// src/platform/douyin/getdata.ts
|
|
1353
|
-
var
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
}
|
|
1363
|
-
|
|
1364
|
-
var _a, _b;
|
|
1365
|
-
const headers2 = {
|
|
1366
|
-
...defheaders2,
|
|
1367
|
-
cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
1689
|
+
var DouyinData = async (data2, cookie, requestConfig) => {
|
|
1690
|
+
var _a, _b, _c, _d, _e;
|
|
1691
|
+
const defHeaders = getDouyinDefaultConfig(cookie)["headers"];
|
|
1692
|
+
const baseRequestConfig = {
|
|
1693
|
+
method: "GET",
|
|
1694
|
+
timeout: 1e4,
|
|
1695
|
+
...requestConfig,
|
|
1696
|
+
headers: {
|
|
1697
|
+
...defHeaders,
|
|
1698
|
+
...(requestConfig == null ? void 0 : requestConfig.headers) || {}
|
|
1699
|
+
}
|
|
1368
1700
|
};
|
|
1701
|
+
const userAgent = (_a = baseRequestConfig.headers) == null ? void 0 : _a["User-Agent"];
|
|
1702
|
+
const douyinApiUrls3 = createDouyinApiUrls(userAgent);
|
|
1369
1703
|
switch (data2.methodType) {
|
|
1370
1704
|
case "\u805A\u5408\u89E3\u6790":
|
|
1371
1705
|
case "\u89C6\u9891\u4F5C\u54C1\u6570\u636E":
|
|
1372
1706
|
case "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E":
|
|
1373
1707
|
case "\u5408\u8F91\u4F5C\u54C1\u6570\u636E": {
|
|
1374
|
-
const url =
|
|
1375
|
-
const VideoData = await GlobalGetData2({
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
...data2
|
|
1708
|
+
const url = douyinApiUrls3.\u89C6\u9891\u6216\u56FE\u96C6({ aweme_id: data2.aweme_id });
|
|
1709
|
+
const VideoData = await GlobalGetData2(data2.methodType, {
|
|
1710
|
+
...baseRequestConfig,
|
|
1711
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1379
1712
|
});
|
|
1380
1713
|
return VideoData;
|
|
1381
1714
|
}
|
|
1382
1715
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1383
|
-
const urlGenerator = (params) =>
|
|
1384
|
-
const response = await fetchPaginatedData(
|
|
1716
|
+
const urlGenerator = (params) => douyinApiUrls3.\u8BC4\u8BBA(params);
|
|
1717
|
+
const response = await fetchPaginatedData(
|
|
1718
|
+
data2.methodType,
|
|
1719
|
+
urlGenerator,
|
|
1720
|
+
data2,
|
|
1721
|
+
50,
|
|
1722
|
+
baseRequestConfig
|
|
1723
|
+
);
|
|
1385
1724
|
return response;
|
|
1386
1725
|
}
|
|
1387
1726
|
case "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E": {
|
|
1388
|
-
const urlGenerator = (params) =>
|
|
1727
|
+
const urlGenerator = (params) => douyinApiUrls3.\u4E8C\u7EA7\u8BC4\u8BBA(params);
|
|
1728
|
+
const customConfig = {
|
|
1729
|
+
...baseRequestConfig,
|
|
1730
|
+
headers: {
|
|
1731
|
+
...baseRequestConfig.headers,
|
|
1732
|
+
// 只有在外部配置没有referer时才设置内部的referer
|
|
1733
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("referer" in requestConfig.headers)) && {
|
|
1734
|
+
referer: `https://www.douyin.com/note/${data2.aweme_id}`
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
};
|
|
1389
1738
|
const response = await fetchPaginatedData(
|
|
1739
|
+
data2.methodType,
|
|
1390
1740
|
urlGenerator,
|
|
1391
1741
|
data2,
|
|
1392
1742
|
3,
|
|
1393
|
-
|
|
1394
|
-
...headers2,
|
|
1395
|
-
referer: `https://www.douyin.com/note/${data2.aweme_id}`
|
|
1396
|
-
}
|
|
1743
|
+
customConfig
|
|
1397
1744
|
);
|
|
1398
1745
|
return response;
|
|
1399
1746
|
}
|
|
1400
1747
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
1401
|
-
const url =
|
|
1402
|
-
const
|
|
1403
|
-
|
|
1748
|
+
const url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1749
|
+
const customConfig = {
|
|
1750
|
+
...baseRequestConfig,
|
|
1404
1751
|
headers: {
|
|
1405
|
-
...
|
|
1406
|
-
Referer
|
|
1407
|
-
|
|
1408
|
-
|
|
1752
|
+
...baseRequestConfig.headers,
|
|
1753
|
+
// 只有在外部配置没有Referer时才设置内部的Referer
|
|
1754
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1755
|
+
Referer: `https://www.douyin.com/user/${data2.sec_uid}`
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
};
|
|
1759
|
+
const UserInfoData = await GlobalGetData2(data2.methodType, {
|
|
1760
|
+
...customConfig,
|
|
1761
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1409
1762
|
});
|
|
1410
1763
|
return UserInfoData;
|
|
1411
1764
|
}
|
|
1412
1765
|
case "Emoji\u6570\u636E": {
|
|
1413
|
-
const url =
|
|
1414
|
-
const EmojiData = await GlobalGetData2({
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
...data2
|
|
1766
|
+
const url = douyinApiUrls3.\u8868\u60C5();
|
|
1767
|
+
const EmojiData = await GlobalGetData2(data2.methodType, {
|
|
1768
|
+
...baseRequestConfig,
|
|
1769
|
+
url
|
|
1418
1770
|
});
|
|
1419
1771
|
return EmojiData;
|
|
1420
1772
|
}
|
|
1421
1773
|
case "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E": {
|
|
1422
|
-
const url =
|
|
1423
|
-
const
|
|
1424
|
-
|
|
1774
|
+
const url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u89C6\u9891({ sec_uid: data2.sec_uid });
|
|
1775
|
+
const customConfig = {
|
|
1776
|
+
...baseRequestConfig,
|
|
1425
1777
|
headers: {
|
|
1426
|
-
...
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1778
|
+
...baseRequestConfig.headers,
|
|
1779
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1780
|
+
Referer: `https://www.douyin.com/user/${data2.sec_uid}`
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
};
|
|
1784
|
+
const UserVideoListData = await GlobalGetData2(data2.methodType, {
|
|
1785
|
+
...customConfig,
|
|
1786
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1430
1787
|
});
|
|
1431
1788
|
return UserVideoListData;
|
|
1432
1789
|
}
|
|
1433
1790
|
case "\u70ED\u70B9\u8BCD\u6570\u636E": {
|
|
1434
|
-
const url =
|
|
1435
|
-
const
|
|
1436
|
-
|
|
1791
|
+
const url = douyinApiUrls3.\u70ED\u70B9\u8BCD({ query: data2.query, number: data2.number ?? 10 });
|
|
1792
|
+
const customConfig = {
|
|
1793
|
+
...baseRequestConfig,
|
|
1437
1794
|
headers: {
|
|
1438
|
-
...
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1795
|
+
...baseRequestConfig.headers,
|
|
1796
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1797
|
+
Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data2.query))}`
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
};
|
|
1801
|
+
const SuggestWordsData = await GlobalGetData2(data2.methodType, {
|
|
1802
|
+
...customConfig,
|
|
1803
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1442
1804
|
});
|
|
1443
1805
|
return SuggestWordsData;
|
|
1444
1806
|
}
|
|
@@ -1447,22 +1809,27 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1447
1809
|
const maxPageSize = 15;
|
|
1448
1810
|
let fetchedSearchList = [];
|
|
1449
1811
|
let tmpresp = {};
|
|
1812
|
+
const customConfig = {
|
|
1813
|
+
...baseRequestConfig,
|
|
1814
|
+
headers: {
|
|
1815
|
+
...baseRequestConfig.headers,
|
|
1816
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1817
|
+
Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data2.query))}`
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1820
|
+
};
|
|
1450
1821
|
while (fetchedSearchList.length < Number(data2.number ?? 10)) {
|
|
1451
1822
|
const requestCount = Math.min(Number(data2.number ?? 50) - fetchedSearchList.length, maxPageSize);
|
|
1452
|
-
const url =
|
|
1823
|
+
const url = douyinApiUrls3.\u641C\u7D22({
|
|
1453
1824
|
query: data2.query,
|
|
1454
1825
|
number: requestCount,
|
|
1455
1826
|
search_id: search_id === "" ? void 0 : search_id
|
|
1456
1827
|
});
|
|
1457
|
-
const response = await GlobalGetData2({
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
...headers2,
|
|
1461
|
-
Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data2.query))}`
|
|
1462
|
-
},
|
|
1463
|
-
...data2
|
|
1828
|
+
const response = await GlobalGetData2(data2.methodType, {
|
|
1829
|
+
...customConfig,
|
|
1830
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1464
1831
|
});
|
|
1465
|
-
if (response.data.length === 0) {
|
|
1832
|
+
if (((_b = response.data) == null ? void 0 : _b.length) === 0) {
|
|
1466
1833
|
logger.warn("\u83B7\u53D6\u641C\u7D22\u6570\u636E\u5931\u8D25\uFF01\u8BF7\u6C42\u6210\u529F\u4F46\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\n\u4F60\u7684\u6296\u97F3ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01\n\u8BF7\u6C42\u7C7B\u578B\uFF1A" + data2.methodType);
|
|
1467
1834
|
return false;
|
|
1468
1835
|
}
|
|
@@ -1471,7 +1838,7 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1471
1838
|
}
|
|
1472
1839
|
fetchedSearchList.push(...response.data);
|
|
1473
1840
|
tmpresp = response;
|
|
1474
|
-
search_id = response.log_pb.impr_id;
|
|
1841
|
+
search_id = (_c = response.log_pb) == null ? void 0 : _c.impr_id;
|
|
1475
1842
|
}
|
|
1476
1843
|
const finalResponse = {
|
|
1477
1844
|
...tmpresp,
|
|
@@ -1480,36 +1847,39 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1480
1847
|
return finalResponse;
|
|
1481
1848
|
}
|
|
1482
1849
|
case "\u52A8\u6001\u8868\u60C5\u6570\u636E": {
|
|
1483
|
-
const url =
|
|
1484
|
-
const ExpressionPlusData = await GlobalGetData2({
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
...data2
|
|
1850
|
+
const url = douyinApiUrls3.\u4E92\u52A8\u8868\u60C5();
|
|
1851
|
+
const ExpressionPlusData = await GlobalGetData2(data2.methodType, {
|
|
1852
|
+
...baseRequestConfig,
|
|
1853
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1488
1854
|
});
|
|
1489
1855
|
return ExpressionPlusData;
|
|
1490
1856
|
}
|
|
1491
1857
|
case "\u97F3\u4E50\u6570\u636E": {
|
|
1492
|
-
const url =
|
|
1493
|
-
const MusicData = await GlobalGetData2({
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
...data2
|
|
1858
|
+
const url = douyinApiUrls3.\u80CC\u666F\u97F3\u4E50({ music_id: data2.music_id });
|
|
1859
|
+
const MusicData = await GlobalGetData2(data2.methodType, {
|
|
1860
|
+
...baseRequestConfig,
|
|
1861
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1497
1862
|
});
|
|
1498
1863
|
return MusicData;
|
|
1499
1864
|
}
|
|
1500
1865
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E": {
|
|
1501
|
-
let url =
|
|
1502
|
-
const fetchUrl = `${url}&a_bogus=${douyinSign.AB(url)}`;
|
|
1503
|
-
const
|
|
1504
|
-
|
|
1866
|
+
let url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1867
|
+
const fetchUrl = `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`;
|
|
1868
|
+
const customConfig = {
|
|
1869
|
+
...baseRequestConfig,
|
|
1505
1870
|
headers: {
|
|
1506
|
-
...
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1871
|
+
...baseRequestConfig.headers,
|
|
1872
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1873
|
+
Referer: `https://www.douyin.com/user/${data2.sec_uid}`
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
};
|
|
1877
|
+
const UserInfoData = await GlobalGetData2(data2.methodType, {
|
|
1878
|
+
...customConfig,
|
|
1879
|
+
url: fetchUrl
|
|
1510
1880
|
});
|
|
1511
|
-
if (!((
|
|
1512
|
-
logger.error((((
|
|
1881
|
+
if (!((_d = UserInfoData == null ? void 0 : UserInfoData.user) == null ? void 0 : _d.live_status) || UserInfoData.user.live_status !== 1) {
|
|
1882
|
+
logger.error((((_e = UserInfoData == null ? void 0 : UserInfoData.user) == null ? void 0 : _e.nickname) || "\u7528\u6237") + "\u5F53\u524D\u672A\u5728\u76F4\u64AD");
|
|
1513
1883
|
const Err = {
|
|
1514
1884
|
errorDescription: "\u68C0\u67E5\u5931\u8D25\uFF01\u8BE5\u7528\u6237\u5F53\u524D\u672A\u5728\u76F4\u64AD\uFF01 TypeError: Cannot read properties of undefined (reading 'live_status')",
|
|
1515
1885
|
requestType: data2.methodType ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
@@ -1531,35 +1901,42 @@ var DouyinData = async (data2, cookie) => {
|
|
|
1531
1901
|
};
|
|
1532
1902
|
}
|
|
1533
1903
|
const room_data = JSON.parse(UserInfoData.user.room_data);
|
|
1534
|
-
url =
|
|
1535
|
-
const
|
|
1536
|
-
|
|
1904
|
+
url = douyinApiUrls3.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: UserInfoData.user.room_id_str, web_rid: room_data.owner.web_rid });
|
|
1905
|
+
const liveCustomConfig = {
|
|
1906
|
+
...baseRequestConfig,
|
|
1537
1907
|
headers: {
|
|
1538
|
-
...
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1908
|
+
...baseRequestConfig.headers,
|
|
1909
|
+
...(!(requestConfig == null ? void 0 : requestConfig.headers) || !("Referer" in requestConfig.headers)) && {
|
|
1910
|
+
Referer: `https://live.douyin.com/${room_data.owner.web_rid}`
|
|
1911
|
+
}
|
|
1912
|
+
}
|
|
1913
|
+
};
|
|
1914
|
+
const LiveRoomData = await GlobalGetData2(data2.methodType, {
|
|
1915
|
+
...liveCustomConfig,
|
|
1916
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1542
1917
|
});
|
|
1543
1918
|
return LiveRoomData;
|
|
1544
1919
|
}
|
|
1545
1920
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E": {
|
|
1546
|
-
const url =
|
|
1547
|
-
const LoginQrcodeStatusData = await GlobalGetData2({
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
...data2
|
|
1921
|
+
const url = douyinApiUrls3.\u7533\u8BF7\u4E8C\u7EF4\u7801({ verify_fp: data2.verify_fp });
|
|
1922
|
+
const LoginQrcodeStatusData = await GlobalGetData2(data2.methodType, {
|
|
1923
|
+
...baseRequestConfig,
|
|
1924
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1551
1925
|
});
|
|
1552
1926
|
return LoginQrcodeStatusData;
|
|
1553
1927
|
}
|
|
1554
|
-
default:
|
|
1555
|
-
logger.warn(`\u672A\u77E5\
|
|
1928
|
+
default: {
|
|
1929
|
+
logger.warn(`\u672A\u77E5\u7684\u6296\u97F3\u6570\u636E\u63A5\u53E3\uFF1A\u300C${logger.red(data2.methodType)}\u300D`);
|
|
1556
1930
|
return null;
|
|
1931
|
+
}
|
|
1557
1932
|
}
|
|
1558
1933
|
};
|
|
1559
|
-
var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize,
|
|
1934
|
+
var fetchPaginatedData = async (type, apiUrlGenerator, params, maxPageSize, requestConfig) => {
|
|
1935
|
+
var _a;
|
|
1560
1936
|
let cursor = params.cursor ?? 0;
|
|
1561
1937
|
let fetchedData = [];
|
|
1562
1938
|
let tmpresp = {};
|
|
1939
|
+
const userAgent = (_a = requestConfig.headers) == null ? void 0 : _a["User-Agent"];
|
|
1563
1940
|
while (fetchedData.length < Number(params.number ?? maxPageSize)) {
|
|
1564
1941
|
const requestCount = Math.min(Number(params.number ?? maxPageSize) - fetchedData.length, maxPageSize);
|
|
1565
1942
|
const url = apiUrlGenerator({
|
|
@@ -1567,10 +1944,9 @@ var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize, headers2)
|
|
|
1567
1944
|
number: requestCount,
|
|
1568
1945
|
cursor
|
|
1569
1946
|
});
|
|
1570
|
-
const response = await GlobalGetData2({
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
...params
|
|
1947
|
+
const response = await GlobalGetData2(type, {
|
|
1948
|
+
...requestConfig,
|
|
1949
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1574
1950
|
});
|
|
1575
1951
|
fetchedData.push(...response.comments || response.data || []);
|
|
1576
1952
|
tmpresp = response;
|
|
@@ -1586,20 +1962,20 @@ var fetchPaginatedData = async (apiUrlGenerator, params, maxPageSize, headers2)
|
|
|
1586
1962
|
};
|
|
1587
1963
|
return finalResponse;
|
|
1588
1964
|
};
|
|
1589
|
-
var GlobalGetData2 = async (
|
|
1965
|
+
var GlobalGetData2 = async (type, config) => {
|
|
1590
1966
|
let warningMessage = "";
|
|
1591
1967
|
try {
|
|
1592
|
-
const result = await
|
|
1968
|
+
const result = await fetchData(config);
|
|
1593
1969
|
if (!result || result === "") {
|
|
1594
1970
|
const Err = {
|
|
1595
1971
|
errorDescription: "\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684\u6296\u97F3ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01",
|
|
1596
|
-
requestType:
|
|
1597
|
-
requestUrl:
|
|
1972
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1973
|
+
requestUrl: config.url
|
|
1598
1974
|
};
|
|
1599
1975
|
warningMessage = `
|
|
1600
1976
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow("\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684\u6296\u97F3ck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01")}
|
|
1601
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1602
|
-
\u8BF7\u6C42URL\uFF1A${
|
|
1977
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1978
|
+
\u8BF7\u6C42URL\uFF1A${config.url}
|
|
1603
1979
|
`;
|
|
1604
1980
|
logger.warn(warningMessage);
|
|
1605
1981
|
throw {
|
|
@@ -1612,13 +1988,13 @@ var GlobalGetData2 = async (options) => {
|
|
|
1612
1988
|
const filterReason = result.filter_detail.filter_reason;
|
|
1613
1989
|
const Err = {
|
|
1614
1990
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${filterReason}\uFF01`,
|
|
1615
|
-
requestType:
|
|
1616
|
-
requestUrl:
|
|
1991
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1992
|
+
requestUrl: config.url
|
|
1617
1993
|
};
|
|
1618
1994
|
warningMessage = `
|
|
1619
1995
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow(filterReason)}
|
|
1620
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
1621
|
-
\u8BF7\u6C42URL\uFF1A${
|
|
1996
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1997
|
+
\u8BF7\u6C42URL\uFF1A${config.url}
|
|
1622
1998
|
`;
|
|
1623
1999
|
logger.warn(warningMessage);
|
|
1624
2000
|
throw {
|
|
@@ -1638,8 +2014,8 @@ var GlobalGetData2 = async (options) => {
|
|
|
1638
2014
|
data: null,
|
|
1639
2015
|
amagiError: {
|
|
1640
2016
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
1641
|
-
requestType:
|
|
1642
|
-
requestUrl:
|
|
2017
|
+
requestType: type,
|
|
2018
|
+
requestUrl: config.url
|
|
1643
2019
|
},
|
|
1644
2020
|
amagiMessage: warningMessage
|
|
1645
2021
|
};
|
|
@@ -1696,50 +2072,42 @@ var API = class {
|
|
|
1696
2072
|
var kuaishouApiUrls = new API();
|
|
1697
2073
|
|
|
1698
2074
|
// src/platform/kuaishou/getdata.ts
|
|
1699
|
-
var
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
...defheaders3,
|
|
1710
|
-
cookie: cookie ? cookie.replace(/\s+/g, "") : ""
|
|
2075
|
+
var KuaishouData = async (data2, cookie, requestConfig) => {
|
|
2076
|
+
const defHeaders = getKuaishouDefaultConfig(cookie)["headers"];
|
|
2077
|
+
const baseRequestConfig = {
|
|
2078
|
+
method: "POST",
|
|
2079
|
+
timeout: 1e4,
|
|
2080
|
+
...requestConfig,
|
|
2081
|
+
headers: {
|
|
2082
|
+
...defHeaders,
|
|
2083
|
+
...{}
|
|
2084
|
+
}
|
|
1711
2085
|
};
|
|
1712
2086
|
switch (data2.methodType) {
|
|
1713
2087
|
case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E": {
|
|
1714
2088
|
const body = kuaishouApiUrls.\u5355\u4E2A\u4F5C\u54C1\u4FE1\u606F({ photoId: data2.photoId });
|
|
1715
|
-
const VideoData = await GlobalGetData3({
|
|
2089
|
+
const VideoData = await GlobalGetData3(data2.methodType, {
|
|
2090
|
+
...baseRequestConfig,
|
|
1716
2091
|
url: body.url,
|
|
1717
|
-
|
|
1718
|
-
headers: headers2,
|
|
1719
|
-
body: body.body,
|
|
1720
|
-
...data2
|
|
2092
|
+
data: body.body
|
|
1721
2093
|
});
|
|
1722
2094
|
return VideoData;
|
|
1723
2095
|
}
|
|
1724
2096
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1725
2097
|
const body = kuaishouApiUrls.\u4F5C\u54C1\u8BC4\u8BBA\u4FE1\u606F({ photoId: data2.photoId });
|
|
1726
|
-
const VideoData = await GlobalGetData3({
|
|
2098
|
+
const VideoData = await GlobalGetData3(data2.methodType, {
|
|
2099
|
+
...baseRequestConfig,
|
|
1727
2100
|
url: body.url,
|
|
1728
|
-
|
|
1729
|
-
headers: headers2,
|
|
1730
|
-
body: body.body,
|
|
1731
|
-
...data2
|
|
2101
|
+
data: body.body
|
|
1732
2102
|
});
|
|
1733
2103
|
return VideoData;
|
|
1734
2104
|
}
|
|
1735
2105
|
case "Emoji\u6570\u636E": {
|
|
1736
2106
|
const body = kuaishouApiUrls.\u8868\u60C5();
|
|
1737
|
-
const EmojiData = await GlobalGetData3({
|
|
2107
|
+
const EmojiData = await GlobalGetData3(data2.methodType, {
|
|
2108
|
+
...baseRequestConfig,
|
|
1738
2109
|
url: body.url,
|
|
1739
|
-
|
|
1740
|
-
headers: headers2,
|
|
1741
|
-
body: body.body,
|
|
1742
|
-
...data2
|
|
2110
|
+
data: body.body
|
|
1743
2111
|
});
|
|
1744
2112
|
return EmojiData;
|
|
1745
2113
|
}
|
|
@@ -1748,22 +2116,22 @@ var KuaishouData = async (data2, cookie) => {
|
|
|
1748
2116
|
return null;
|
|
1749
2117
|
}
|
|
1750
2118
|
};
|
|
1751
|
-
var GlobalGetData3 = async (options) => {
|
|
2119
|
+
var GlobalGetData3 = async (type, options) => {
|
|
1752
2120
|
let warningMessage = "";
|
|
1753
2121
|
try {
|
|
1754
|
-
const result = await
|
|
2122
|
+
const result = await fetchData(options);
|
|
1755
2123
|
if (result === "" || !result || result.result === 2) {
|
|
1756
2124
|
const Err = {
|
|
1757
2125
|
errorDescription: `\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF01`,
|
|
1758
|
-
requestType:
|
|
2126
|
+
requestType: type ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
1759
2127
|
requestUrl: options.url,
|
|
1760
|
-
requestBody: JSON.stringify(options.
|
|
2128
|
+
requestBody: JSON.stringify(options.data)
|
|
1761
2129
|
};
|
|
1762
2130
|
warningMessage = `
|
|
1763
2131
|
\u83B7\u53D6\u54CD\u5E94\u6570\u636E\u5931\u8D25\uFF01\u539F\u56E0\uFF1A${logger.yellow("\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A\uFF0C\u4F60\u7684\u5FEB\u624Bck\u53EF\u80FD\u5DF2\u7ECF\u5931\u6548\uFF01")}
|
|
1764
|
-
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${
|
|
2132
|
+
\u8BF7\u6C42\u7C7B\u578B\uFF1A\u300C${type}\u300D
|
|
1765
2133
|
\u8BF7\u6C42URL\uFF1A${options.url}
|
|
1766
|
-
\u8BF7\u6C42\u53C2\u6570\uFF1A${JSON.stringify(options.
|
|
2134
|
+
\u8BF7\u6C42\u53C2\u6570\uFF1A${JSON.stringify(options.data, null, 2)}
|
|
1767
2135
|
`;
|
|
1768
2136
|
logger.warn(warningMessage);
|
|
1769
2137
|
throw {
|
|
@@ -1783,7 +2151,7 @@ var GlobalGetData3 = async (options) => {
|
|
|
1783
2151
|
data: null,
|
|
1784
2152
|
amagiError: {
|
|
1785
2153
|
errorDescription: "\u672A\u77E5\u9519\u8BEF",
|
|
1786
|
-
requestType:
|
|
2154
|
+
requestType: type,
|
|
1787
2155
|
requestUrl: options.url
|
|
1788
2156
|
},
|
|
1789
2157
|
amagiMessage: warningMessage
|
|
@@ -2007,23 +2375,26 @@ var createErrorResponse = (error, message, code = 500) => {
|
|
|
2007
2375
|
};
|
|
2008
2376
|
|
|
2009
2377
|
// src/model/DataFetchers.ts
|
|
2010
|
-
async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2378
|
+
async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2011
2379
|
try {
|
|
2012
2380
|
let options;
|
|
2013
2381
|
let cookie;
|
|
2382
|
+
let config;
|
|
2014
2383
|
if (typeof optionsOrCookie === "string") {
|
|
2015
2384
|
cookie = optionsOrCookie;
|
|
2016
2385
|
options = cookieOrOptions;
|
|
2386
|
+
config = requestConfig;
|
|
2017
2387
|
} else {
|
|
2018
2388
|
options = optionsOrCookie;
|
|
2019
2389
|
cookie = cookieOrOptions;
|
|
2390
|
+
config = requestConfig;
|
|
2020
2391
|
}
|
|
2021
2392
|
const { typeMode: _, ...validationOptions } = options || {};
|
|
2022
2393
|
const validatedParams = validateDouyinParams(methodType, validationOptions);
|
|
2023
2394
|
const apiParams = {
|
|
2024
2395
|
...validatedParams
|
|
2025
2396
|
};
|
|
2026
|
-
const rawData = await DouyinData(apiParams, cookie);
|
|
2397
|
+
const rawData = await DouyinData(apiParams, cookie, config);
|
|
2027
2398
|
if (rawData.data === "") {
|
|
2028
2399
|
return createErrorResponse(rawData.amagiError, "\u6296\u97F3\u6570\u636E\u83B7\u53D6\u5931\u8D25");
|
|
2029
2400
|
}
|
|
@@ -2033,7 +2404,7 @@ async function getDouyinData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
|
2033
2404
|
throw new Error(`\u6296\u97F3\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
2034
2405
|
}
|
|
2035
2406
|
}
|
|
2036
|
-
async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2407
|
+
async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2037
2408
|
try {
|
|
2038
2409
|
let options;
|
|
2039
2410
|
let cookie;
|
|
@@ -2059,7 +2430,7 @@ async function getBilibiliData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
|
2059
2430
|
throw new Error(`B\u7AD9\u6570\u636E\u83B7\u53D6\u5931\u8D25: ${errorMessage}`);
|
|
2060
2431
|
}
|
|
2061
2432
|
}
|
|
2062
|
-
async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions) {
|
|
2433
|
+
async function getKuaishouData(methodType, optionsOrCookie, cookieOrOptions, requestConfig) {
|
|
2063
2434
|
try {
|
|
2064
2435
|
let options;
|
|
2065
2436
|
let cookie;
|
|
@@ -2225,7 +2596,7 @@ var bilibili = {
|
|
|
2225
2596
|
*/
|
|
2226
2597
|
convertBvToAv: createBilibiliApiMethod("BV\u8F6CAV")
|
|
2227
2598
|
};
|
|
2228
|
-
var createBoundBilibiliApi = (cookie) => {
|
|
2599
|
+
var createBoundBilibiliApi = (cookie, requestConfig) => {
|
|
2229
2600
|
return {
|
|
2230
2601
|
/**
|
|
2231
2602
|
* 获取单个视频作品数据
|
|
@@ -2431,10 +2802,10 @@ var createValidationMiddleware = (validateFn, methodType) => {
|
|
|
2431
2802
|
var createDouyinValidationMiddleware = (methodType) => createValidationMiddleware(validateDouyinParams, methodType);
|
|
2432
2803
|
var createBilibiliValidationMiddleware = (methodType) => createValidationMiddleware(validateBilibiliParams, methodType);
|
|
2433
2804
|
var createKuaishouValidationMiddleware = (methodType) => createValidationMiddleware(validateKuaishouParams, methodType);
|
|
2434
|
-
var createBilibiliRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
2805
|
+
var createBilibiliRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
|
|
2435
2806
|
return async (req, res) => {
|
|
2436
2807
|
try {
|
|
2437
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
2808
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2438
2809
|
res.json({
|
|
2439
2810
|
...result,
|
|
2440
2811
|
requestPath: req.originalUrl
|
|
@@ -2448,97 +2819,97 @@ var createBilibiliRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2448
2819
|
}
|
|
2449
2820
|
};
|
|
2450
2821
|
};
|
|
2451
|
-
var createBilibiliRoutes = (cookie) => {
|
|
2822
|
+
var createBilibiliRoutes = (cookie, requestConfig = getBilibiliDefaultConfig(cookie)) => {
|
|
2452
2823
|
const router = express.Router();
|
|
2453
2824
|
router.get(
|
|
2454
2825
|
"/fetch_one_video",
|
|
2455
2826
|
createBilibiliValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2456
|
-
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
2827
|
+
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2457
2828
|
);
|
|
2458
2829
|
router.get(
|
|
2459
2830
|
"/fetch_video_playurl",
|
|
2460
2831
|
createBilibiliValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"),
|
|
2461
|
-
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie)
|
|
2832
|
+
createBilibiliRouteHandler(getBilibiliData, "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2462
2833
|
);
|
|
2463
2834
|
router.get(
|
|
2464
2835
|
"/fetch_work_comments",
|
|
2465
2836
|
createBilibiliValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2466
|
-
createBilibiliRouteHandler(getBilibiliData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
2837
|
+
createBilibiliRouteHandler(getBilibiliData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2467
2838
|
);
|
|
2468
2839
|
router.get(
|
|
2469
2840
|
"/fetch_user_profile",
|
|
2470
2841
|
createBilibiliValidationMiddleware("\u7528\u6237\u4E3B\u9875\u6570\u636E"),
|
|
2471
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie)
|
|
2842
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig)
|
|
2472
2843
|
);
|
|
2473
2844
|
router.get(
|
|
2474
2845
|
"/fetch_user_dynamic",
|
|
2475
2846
|
createBilibiliValidationMiddleware("\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E"),
|
|
2476
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E", cookie)
|
|
2847
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E", cookie, requestConfig)
|
|
2477
2848
|
);
|
|
2478
2849
|
router.get(
|
|
2479
2850
|
"/fetch_emoji_list",
|
|
2480
2851
|
createBilibiliValidationMiddleware("Emoji\u6570\u636E"),
|
|
2481
|
-
createBilibiliRouteHandler(getBilibiliData, "Emoji\u6570\u636E", cookie)
|
|
2852
|
+
createBilibiliRouteHandler(getBilibiliData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2482
2853
|
);
|
|
2483
2854
|
router.get(
|
|
2484
2855
|
"/fetch_bangumi_video_info",
|
|
2485
2856
|
createBilibiliValidationMiddleware("\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E"),
|
|
2486
|
-
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", cookie)
|
|
2857
|
+
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2487
2858
|
);
|
|
2488
2859
|
router.get(
|
|
2489
2860
|
"/fetch_bangumi_video_playurl",
|
|
2490
2861
|
createBilibiliValidationMiddleware("\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E"),
|
|
2491
|
-
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie)
|
|
2862
|
+
createBilibiliRouteHandler(getBilibiliData, "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2492
2863
|
);
|
|
2493
2864
|
router.get(
|
|
2494
2865
|
"/fetch_dynamic_info",
|
|
2495
2866
|
createBilibiliValidationMiddleware("\u52A8\u6001\u8BE6\u60C5\u6570\u636E"),
|
|
2496
|
-
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u8BE6\u60C5\u6570\u636E", cookie)
|
|
2867
|
+
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u8BE6\u60C5\u6570\u636E", cookie, requestConfig)
|
|
2497
2868
|
);
|
|
2498
2869
|
router.get(
|
|
2499
2870
|
"/fetch_dynamic_card",
|
|
2500
2871
|
createBilibiliValidationMiddleware("\u52A8\u6001\u5361\u7247\u6570\u636E"),
|
|
2501
|
-
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u5361\u7247\u6570\u636E", cookie)
|
|
2872
|
+
createBilibiliRouteHandler(getBilibiliData, "\u52A8\u6001\u5361\u7247\u6570\u636E", cookie, requestConfig)
|
|
2502
2873
|
);
|
|
2503
2874
|
router.get(
|
|
2504
2875
|
"/fetch_live_room_detail",
|
|
2505
2876
|
createBilibiliValidationMiddleware("\u76F4\u64AD\u95F4\u4FE1\u606F"),
|
|
2506
|
-
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u4FE1\u606F", cookie)
|
|
2877
|
+
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u4FE1\u606F", cookie, requestConfig)
|
|
2507
2878
|
);
|
|
2508
2879
|
router.get(
|
|
2509
2880
|
"/fetch_liveroom_def",
|
|
2510
2881
|
createBilibiliValidationMiddleware("\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F"),
|
|
2511
|
-
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F", cookie)
|
|
2882
|
+
createBilibiliRouteHandler(getBilibiliData, "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F", cookie, requestConfig)
|
|
2512
2883
|
);
|
|
2513
2884
|
router.get(
|
|
2514
2885
|
"/login_basic_info",
|
|
2515
2886
|
createBilibiliValidationMiddleware("\u767B\u5F55\u57FA\u672C\u4FE1\u606F"),
|
|
2516
|
-
createBilibiliRouteHandler(getBilibiliData, "\u767B\u5F55\u57FA\u672C\u4FE1\u606F", cookie)
|
|
2887
|
+
createBilibiliRouteHandler(getBilibiliData, "\u767B\u5F55\u57FA\u672C\u4FE1\u606F", cookie, requestConfig)
|
|
2517
2888
|
);
|
|
2518
2889
|
router.get(
|
|
2519
2890
|
"/new_login_qrcode",
|
|
2520
2891
|
createBilibiliValidationMiddleware("\u7533\u8BF7\u4E8C\u7EF4\u7801"),
|
|
2521
|
-
createBilibiliRouteHandler(getBilibiliData, "\u7533\u8BF7\u4E8C\u7EF4\u7801", cookie)
|
|
2892
|
+
createBilibiliRouteHandler(getBilibiliData, "\u7533\u8BF7\u4E8C\u7EF4\u7801", cookie, requestConfig)
|
|
2522
2893
|
);
|
|
2523
2894
|
router.get(
|
|
2524
2895
|
"/check_qrcode",
|
|
2525
2896
|
createBilibiliValidationMiddleware("\u4E8C\u7EF4\u7801\u72B6\u6001"),
|
|
2526
|
-
createBilibiliRouteHandler(getBilibiliData, "\u4E8C\u7EF4\u7801\u72B6\u6001", cookie)
|
|
2897
|
+
createBilibiliRouteHandler(getBilibiliData, "\u4E8C\u7EF4\u7801\u72B6\u6001", cookie, requestConfig)
|
|
2527
2898
|
);
|
|
2528
2899
|
router.get(
|
|
2529
2900
|
"/fetch_user_full_view",
|
|
2530
2901
|
createBilibiliValidationMiddleware("\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF"),
|
|
2531
|
-
createBilibiliRouteHandler(getBilibiliData, "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF", cookie)
|
|
2902
|
+
createBilibiliRouteHandler(getBilibiliData, "\u83B7\u53D6UP\u4E3B\u603B\u64AD\u653E\u91CF", cookie, requestConfig)
|
|
2532
2903
|
);
|
|
2533
2904
|
router.get(
|
|
2534
2905
|
"/av_to_bv",
|
|
2535
2906
|
createBilibiliValidationMiddleware("AV\u8F6CBV"),
|
|
2536
|
-
createBilibiliRouteHandler(getBilibiliData, "AV\u8F6CBV", cookie)
|
|
2907
|
+
createBilibiliRouteHandler(getBilibiliData, "AV\u8F6CBV", cookie, requestConfig)
|
|
2537
2908
|
);
|
|
2538
2909
|
router.get(
|
|
2539
2910
|
"/bv_to_av",
|
|
2540
2911
|
createBilibiliValidationMiddleware("BV\u8F6CAV"),
|
|
2541
|
-
createBilibiliRouteHandler(getBilibiliData, "BV\u8F6CAV", cookie)
|
|
2912
|
+
createBilibiliRouteHandler(getBilibiliData, "BV\u8F6CAV", cookie, requestConfig)
|
|
2542
2913
|
);
|
|
2543
2914
|
return router;
|
|
2544
2915
|
};
|
|
@@ -2556,13 +2927,13 @@ var bilibiliUtils = {
|
|
|
2556
2927
|
|
|
2557
2928
|
// src/platform/douyin/DouyinApi.ts
|
|
2558
2929
|
var createDouyinApiMethod = (methodType) => {
|
|
2559
|
-
return async (options, cookie) => {
|
|
2560
|
-
return await getDouyinData(methodType, options, cookie);
|
|
2930
|
+
return async (options, cookie, requestConfig) => {
|
|
2931
|
+
return await getDouyinData(methodType, options, cookie, requestConfig);
|
|
2561
2932
|
};
|
|
2562
2933
|
};
|
|
2563
|
-
var createBoundDouyinApiMethod = (methodType, cookie) => {
|
|
2934
|
+
var createBoundDouyinApiMethod = (methodType, cookie, requestConfig) => {
|
|
2564
2935
|
return async (options) => {
|
|
2565
|
-
return await getDouyinData(methodType, options, cookie);
|
|
2936
|
+
return await getDouyinData(methodType, options, cookie, requestConfig);
|
|
2566
2937
|
};
|
|
2567
2938
|
};
|
|
2568
2939
|
var douyin = {
|
|
@@ -2665,98 +3036,98 @@ var douyin = {
|
|
|
2665
3036
|
*/
|
|
2666
3037
|
getLiveRoomInfo: createDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E")
|
|
2667
3038
|
};
|
|
2668
|
-
var createBoundDouyinApi = (cookie) => {
|
|
3039
|
+
var createBoundDouyinApi = (cookie, requestConfig) => {
|
|
2669
3040
|
return {
|
|
2670
3041
|
/**
|
|
2671
3042
|
* 聚合解析 (视频/图集/合辑)
|
|
2672
3043
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2673
3044
|
* @returns 统一格式的API响应,包含视频、图集或合辑数据
|
|
2674
3045
|
*/
|
|
2675
|
-
getWorkInfo: createBoundDouyinApiMethod("\u805A\u5408\u89E3\u6790", cookie),
|
|
3046
|
+
getWorkInfo: createBoundDouyinApiMethod("\u805A\u5408\u89E3\u6790", cookie, requestConfig),
|
|
2676
3047
|
/**
|
|
2677
3048
|
* 获取视频作品数据
|
|
2678
3049
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2679
3050
|
* @returns 统一格式的API响应,包含视频作品详细信息
|
|
2680
3051
|
*/
|
|
2681
|
-
getVideoWorkInfo: createBoundDouyinApiMethod("\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie),
|
|
3052
|
+
getVideoWorkInfo: createBoundDouyinApiMethod("\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2682
3053
|
/**
|
|
2683
3054
|
* 获取图集作品数据
|
|
2684
3055
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2685
3056
|
* @returns 统一格式的API响应,包含图集作品详细信息
|
|
2686
3057
|
*/
|
|
2687
|
-
getImageAlbumWorkInfo: createBoundDouyinApiMethod("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie),
|
|
3058
|
+
getImageAlbumWorkInfo: createBoundDouyinApiMethod("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2688
3059
|
/**
|
|
2689
3060
|
* 获取合辑作品数据
|
|
2690
3061
|
* @param options 请求参数,包含 aweme_id 和可选的 typeMode
|
|
2691
3062
|
* @returns 统一格式的API响应,包含合辑作品详细信息
|
|
2692
3063
|
*/
|
|
2693
|
-
getSlidesWorkInfo: createBoundDouyinApiMethod("\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie),
|
|
3064
|
+
getSlidesWorkInfo: createBoundDouyinApiMethod("\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie, requestConfig),
|
|
2694
3065
|
/**
|
|
2695
3066
|
* 获取评论数据
|
|
2696
3067
|
* @param options 请求参数,包含 aweme_id, 可选的 number, cursor 和 typeMode
|
|
2697
3068
|
* @returns 统一格式的API响应,包含评论列表数据
|
|
2698
3069
|
*/
|
|
2699
|
-
getComments: createBoundDouyinApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie),
|
|
3070
|
+
getComments: createBoundDouyinApiMethod("\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig),
|
|
2700
3071
|
/**
|
|
2701
3072
|
* 获取指定评论回复数据
|
|
2702
3073
|
* @param options 请求参数,包含 aweme_id, comment_id, 可选的 number, cursor 和 typeMode
|
|
2703
3074
|
* @returns 统一格式的API响应,包含评论回复数据
|
|
2704
3075
|
*/
|
|
2705
|
-
getCommentReplies: createBoundDouyinApiMethod("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie),
|
|
3076
|
+
getCommentReplies: createBoundDouyinApiMethod("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie, requestConfig),
|
|
2706
3077
|
/**
|
|
2707
3078
|
* 获取用户主页数据
|
|
2708
3079
|
* @param options 请求参数,包含 sec_uid 和可选的 typeMode
|
|
2709
3080
|
* @returns 统一格式的API响应,包含用户详细信息
|
|
2710
3081
|
*/
|
|
2711
|
-
getUserProfile: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie),
|
|
3082
|
+
getUserProfile: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig),
|
|
2712
3083
|
/**
|
|
2713
3084
|
* 获取 Emoji 数据
|
|
2714
3085
|
* @param options 可选的请求参数 (主要用于 typeMode)
|
|
2715
3086
|
* @returns 统一格式的API响应,包含Emoji列表数据
|
|
2716
3087
|
*/
|
|
2717
|
-
getEmojiList: createBoundDouyinApiMethod("Emoji\u6570\u636E", cookie),
|
|
3088
|
+
getEmojiList: createBoundDouyinApiMethod("Emoji\u6570\u636E", cookie, requestConfig),
|
|
2718
3089
|
/**
|
|
2719
3090
|
* 获取动态表情数据
|
|
2720
3091
|
* @param options 可选的请求参数 (主要用于 typeMode)
|
|
2721
3092
|
* @returns 统一格式的API响应,包含动态表情数据
|
|
2722
3093
|
*/
|
|
2723
|
-
getEmojiProList: createBoundDouyinApiMethod("\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie),
|
|
3094
|
+
getEmojiProList: createBoundDouyinApiMethod("\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie, requestConfig),
|
|
2724
3095
|
/**
|
|
2725
3096
|
* 获取用户主页视频列表数据
|
|
2726
3097
|
* @param options 请求参数,包含 sec_uid, 可选的 number, max_cursor 和 typeMode
|
|
2727
3098
|
* @returns 统一格式的API响应,包含用户发布的视频列表
|
|
2728
3099
|
*/
|
|
2729
|
-
getUserVideos: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie),
|
|
3100
|
+
getUserVideos: createBoundDouyinApiMethod("\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie, requestConfig),
|
|
2730
3101
|
/**
|
|
2731
3102
|
* 获取音乐数据
|
|
2732
3103
|
* @param options 请求参数,包含 music_id 和可选的 typeMode
|
|
2733
3104
|
* @returns 统一格式的API响应,包含音乐详细信息
|
|
2734
3105
|
*/
|
|
2735
|
-
getMusicInfo: createBoundDouyinApiMethod("\u97F3\u4E50\u6570\u636E", cookie),
|
|
3106
|
+
getMusicInfo: createBoundDouyinApiMethod("\u97F3\u4E50\u6570\u636E", cookie, requestConfig),
|
|
2736
3107
|
/**
|
|
2737
3108
|
* 获取热点词数据
|
|
2738
3109
|
* @param options 请求参数,包含 query, 可选的 number 和 typeMode
|
|
2739
3110
|
* @returns 统一格式的API响应,包含热点搜索词列表
|
|
2740
3111
|
*/
|
|
2741
|
-
getSuggestWords: createBoundDouyinApiMethod("\u70ED\u70B9\u8BCD\u6570\u636E", cookie),
|
|
3112
|
+
getSuggestWords: createBoundDouyinApiMethod("\u70ED\u70B9\u8BCD\u6570\u636E", cookie, requestConfig),
|
|
2742
3113
|
/**
|
|
2743
3114
|
* 获取搜索数据
|
|
2744
3115
|
* @param options 请求参数,包含 query, 可选的 number, search_id, cursor 和 typeMode
|
|
2745
3116
|
* @returns 统一格式的API响应,包含搜索结果数据
|
|
2746
3117
|
*/
|
|
2747
|
-
search: createBoundDouyinApiMethod("\u641C\u7D22\u6570\u636E", cookie),
|
|
3118
|
+
search: createBoundDouyinApiMethod("\u641C\u7D22\u6570\u636E", cookie, requestConfig),
|
|
2748
3119
|
/**
|
|
2749
3120
|
* 获取直播间信息
|
|
2750
3121
|
* @param options 请求参数,包含 sec_uid 和可选的 typeMode
|
|
2751
3122
|
* @returns 统一格式的API响应,包含直播间详细信息
|
|
2752
3123
|
*/
|
|
2753
|
-
getLiveRoomInfo: createBoundDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie)
|
|
3124
|
+
getLiveRoomInfo: createBoundDouyinApiMethod("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2754
3125
|
};
|
|
2755
3126
|
};
|
|
2756
|
-
var createDouyinRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
3127
|
+
var createDouyinRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getDouyinDefaultConfig(cookie)) => {
|
|
2757
3128
|
return async (req, res) => {
|
|
2758
3129
|
try {
|
|
2759
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
3130
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2760
3131
|
res.json({
|
|
2761
3132
|
...result,
|
|
2762
3133
|
requestPath: req.originalUrl
|
|
@@ -2770,77 +3141,77 @@ var createDouyinRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2770
3141
|
}
|
|
2771
3142
|
};
|
|
2772
3143
|
};
|
|
2773
|
-
var createDouyinRoutes = (cookie) => {
|
|
3144
|
+
var createDouyinRoutes = (cookie, requestConfig = getDouyinDefaultConfig(cookie)) => {
|
|
2774
3145
|
const router = express.Router();
|
|
2775
3146
|
router.get(
|
|
2776
3147
|
"/fetch_one_work",
|
|
2777
3148
|
createDouyinValidationMiddleware("\u805A\u5408\u89E3\u6790"),
|
|
2778
|
-
createDouyinRouteHandler(getDouyinData, "\u805A\u5408\u89E3\u6790", cookie)
|
|
3149
|
+
createDouyinRouteHandler(getDouyinData, "\u805A\u5408\u89E3\u6790", cookie, requestConfig)
|
|
2779
3150
|
);
|
|
2780
3151
|
router.get(
|
|
2781
3152
|
"/fetch_one_work",
|
|
2782
3153
|
createDouyinValidationMiddleware("\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2783
|
-
createDouyinRouteHandler(getDouyinData, "\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
3154
|
+
createDouyinRouteHandler(getDouyinData, "\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2784
3155
|
);
|
|
2785
3156
|
router.get(
|
|
2786
3157
|
"/fetch_one_work",
|
|
2787
3158
|
createDouyinValidationMiddleware("\u56FE\u96C6\u4F5C\u54C1\u6570\u636E"),
|
|
2788
|
-
createDouyinRouteHandler(getDouyinData, "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie)
|
|
3159
|
+
createDouyinRouteHandler(getDouyinData, "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2789
3160
|
);
|
|
2790
3161
|
router.get(
|
|
2791
3162
|
"/fetch_one_work",
|
|
2792
3163
|
createDouyinValidationMiddleware("\u5408\u8F91\u4F5C\u54C1\u6570\u636E"),
|
|
2793
|
-
createDouyinRouteHandler(getDouyinData, "\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie)
|
|
3164
|
+
createDouyinRouteHandler(getDouyinData, "\u5408\u8F91\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2794
3165
|
);
|
|
2795
3166
|
router.get(
|
|
2796
3167
|
"/fetch_work_comments",
|
|
2797
3168
|
createDouyinValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2798
|
-
createDouyinRouteHandler(getDouyinData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
3169
|
+
createDouyinRouteHandler(getDouyinData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2799
3170
|
);
|
|
2800
3171
|
router.get(
|
|
2801
3172
|
"/fetch_user_info",
|
|
2802
3173
|
createDouyinValidationMiddleware("\u7528\u6237\u4E3B\u9875\u6570\u636E"),
|
|
2803
|
-
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie)
|
|
3174
|
+
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u6570\u636E", cookie, requestConfig)
|
|
2804
3175
|
);
|
|
2805
3176
|
router.get(
|
|
2806
3177
|
"/fetch_user_post_videos",
|
|
2807
3178
|
createDouyinValidationMiddleware("\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E"),
|
|
2808
|
-
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie)
|
|
3179
|
+
createDouyinRouteHandler(getDouyinData, "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", cookie, requestConfig)
|
|
2809
3180
|
);
|
|
2810
3181
|
router.get(
|
|
2811
3182
|
"/fetch_search_info",
|
|
2812
3183
|
createDouyinValidationMiddleware("\u641C\u7D22\u6570\u636E"),
|
|
2813
|
-
createDouyinRouteHandler(getDouyinData, "\u641C\u7D22\u6570\u636E", cookie)
|
|
3184
|
+
createDouyinRouteHandler(getDouyinData, "\u641C\u7D22\u6570\u636E", cookie, requestConfig)
|
|
2814
3185
|
);
|
|
2815
3186
|
router.get(
|
|
2816
3187
|
"/fetch_suggest_words",
|
|
2817
3188
|
createDouyinValidationMiddleware("\u70ED\u70B9\u8BCD\u6570\u636E"),
|
|
2818
|
-
createDouyinRouteHandler(getDouyinData, "\u70ED\u70B9\u8BCD\u6570\u636E", cookie)
|
|
3189
|
+
createDouyinRouteHandler(getDouyinData, "\u70ED\u70B9\u8BCD\u6570\u636E", cookie, requestConfig)
|
|
2819
3190
|
);
|
|
2820
3191
|
router.get(
|
|
2821
3192
|
"/fetch_music_work",
|
|
2822
3193
|
createDouyinValidationMiddleware("\u97F3\u4E50\u6570\u636E"),
|
|
2823
|
-
createDouyinRouteHandler(getDouyinData, "\u97F3\u4E50\u6570\u636E", cookie)
|
|
3194
|
+
createDouyinRouteHandler(getDouyinData, "\u97F3\u4E50\u6570\u636E", cookie, requestConfig)
|
|
2824
3195
|
);
|
|
2825
3196
|
router.get(
|
|
2826
3197
|
"/fetch_emoji_list",
|
|
2827
3198
|
createDouyinValidationMiddleware("Emoji\u6570\u636E"),
|
|
2828
|
-
createDouyinRouteHandler(getDouyinData, "Emoji\u6570\u636E", cookie)
|
|
3199
|
+
createDouyinRouteHandler(getDouyinData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2829
3200
|
);
|
|
2830
3201
|
router.get(
|
|
2831
3202
|
"/fetch_emoji_pro_list",
|
|
2832
3203
|
createDouyinValidationMiddleware("\u52A8\u6001\u8868\u60C5\u6570\u636E"),
|
|
2833
|
-
createDouyinRouteHandler(getDouyinData, "\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie)
|
|
3204
|
+
createDouyinRouteHandler(getDouyinData, "\u52A8\u6001\u8868\u60C5\u6570\u636E", cookie, requestConfig)
|
|
2834
3205
|
);
|
|
2835
3206
|
router.get(
|
|
2836
3207
|
"/fetch_user_live_videos",
|
|
2837
3208
|
createDouyinValidationMiddleware("\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E"),
|
|
2838
|
-
createDouyinRouteHandler(getDouyinData, "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie)
|
|
3209
|
+
createDouyinRouteHandler(getDouyinData, "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", cookie, requestConfig)
|
|
2839
3210
|
);
|
|
2840
3211
|
router.get(
|
|
2841
3212
|
"/fetch_video_comment_replies",
|
|
2842
3213
|
createDouyinValidationMiddleware("\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E"),
|
|
2843
|
-
createDouyinRouteHandler(getDouyinData, "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie)
|
|
3214
|
+
createDouyinRouteHandler(getDouyinData, "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E", cookie, requestConfig)
|
|
2844
3215
|
);
|
|
2845
3216
|
return router;
|
|
2846
3217
|
};
|
|
@@ -2851,10 +3222,10 @@ var douyinUtils = {
|
|
|
2851
3222
|
douyinApiUrls,
|
|
2852
3223
|
api: douyin
|
|
2853
3224
|
};
|
|
2854
|
-
var createKuaishouRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
3225
|
+
var createKuaishouRouteHandler = (dataFetcher, methodType, cookie, requestConfig = getKuaishouDefaultConfig(cookie)) => {
|
|
2855
3226
|
return async (req, res) => {
|
|
2856
3227
|
try {
|
|
2857
|
-
const result = await dataFetcher(methodType, req.validatedParams, cookie);
|
|
3228
|
+
const result = await dataFetcher(methodType, req.validatedParams, cookie, requestConfig);
|
|
2858
3229
|
res.json({
|
|
2859
3230
|
...result,
|
|
2860
3231
|
requestPath: req.originalUrl
|
|
@@ -2868,22 +3239,22 @@ var createKuaishouRouteHandler = (dataFetcher, methodType, cookie) => {
|
|
|
2868
3239
|
}
|
|
2869
3240
|
};
|
|
2870
3241
|
};
|
|
2871
|
-
var createKuaishouRoutes = (cookie) => {
|
|
3242
|
+
var createKuaishouRoutes = (cookie, requestConfig = getKuaishouDefaultConfig(cookie)) => {
|
|
2872
3243
|
const router = express.Router();
|
|
2873
3244
|
router.get(
|
|
2874
3245
|
"/fetch_one_work",
|
|
2875
3246
|
createKuaishouValidationMiddleware("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E"),
|
|
2876
|
-
createKuaishouRouteHandler(getKuaishouData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie)
|
|
3247
|
+
createKuaishouRouteHandler(getKuaishouData, "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", cookie, requestConfig)
|
|
2877
3248
|
);
|
|
2878
3249
|
router.get(
|
|
2879
3250
|
"/fetch_work_comments",
|
|
2880
3251
|
createKuaishouValidationMiddleware("\u8BC4\u8BBA\u6570\u636E"),
|
|
2881
|
-
createKuaishouRouteHandler(getKuaishouData, "\u8BC4\u8BBA\u6570\u636E", cookie)
|
|
3252
|
+
createKuaishouRouteHandler(getKuaishouData, "\u8BC4\u8BBA\u6570\u636E", cookie, requestConfig)
|
|
2882
3253
|
);
|
|
2883
3254
|
router.get(
|
|
2884
3255
|
"/fetch_emoji_list",
|
|
2885
3256
|
createKuaishouValidationMiddleware("Emoji\u6570\u636E"),
|
|
2886
|
-
createKuaishouRouteHandler(getKuaishouData, "Emoji\u6570\u636E", cookie)
|
|
3257
|
+
createKuaishouRouteHandler(getKuaishouData, "Emoji\u6570\u636E", cookie, requestConfig)
|
|
2887
3258
|
);
|
|
2888
3259
|
return router;
|
|
2889
3260
|
};
|
|
@@ -2922,7 +3293,7 @@ var kuaishou = {
|
|
|
2922
3293
|
*/
|
|
2923
3294
|
getEmojiList: createKuaishouApiMethod("Emoji\u6570\u636E")
|
|
2924
3295
|
};
|
|
2925
|
-
var createBoundKuaishouApi = (cookie) => {
|
|
3296
|
+
var createBoundKuaishouApi = (cookie, requestConfig) => {
|
|
2926
3297
|
return {
|
|
2927
3298
|
/**
|
|
2928
3299
|
* 获取单个视频作品数据
|
|
@@ -2950,161 +3321,83 @@ var kuaishouUtils = {
|
|
|
2950
3321
|
kuaishouApiUrls,
|
|
2951
3322
|
api: kuaishou
|
|
2952
3323
|
};
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
options = arg3;
|
|
2961
|
-
} else {
|
|
2962
|
-
options = arg2;
|
|
2963
|
-
cookie = arg3;
|
|
2964
|
-
}
|
|
2965
|
-
const data2 = await DouyinData({ ...options, methodType: type }, cookie);
|
|
2966
|
-
return data2;
|
|
2967
|
-
}
|
|
2968
|
-
async function getBilibiliData2(methodType, arg2, arg3) {
|
|
2969
|
-
let cookie;
|
|
2970
|
-
let options;
|
|
2971
|
-
if (typeof arg2 === "string") {
|
|
2972
|
-
cookie = arg2;
|
|
2973
|
-
options = arg3;
|
|
2974
|
-
} else {
|
|
2975
|
-
options = arg2;
|
|
2976
|
-
cookie = arg3;
|
|
2977
|
-
}
|
|
2978
|
-
const data2 = await fetchBilibili({ ...options, methodType }, cookie);
|
|
2979
|
-
return data2;
|
|
2980
|
-
}
|
|
2981
|
-
async function getKuaishouData2(methodType, arg2, arg3) {
|
|
2982
|
-
let cookie;
|
|
2983
|
-
let options;
|
|
2984
|
-
if (typeof arg2 === "string") {
|
|
2985
|
-
cookie = arg2;
|
|
2986
|
-
options = arg3;
|
|
2987
|
-
} else {
|
|
2988
|
-
options = arg2;
|
|
2989
|
-
cookie = arg3;
|
|
2990
|
-
}
|
|
2991
|
-
const data2 = await KuaishouData({ ...options, methodType }, cookie);
|
|
2992
|
-
return data2;
|
|
2993
|
-
}
|
|
2994
|
-
var fetchDouyinData = getDouyinData2;
|
|
2995
|
-
var fetchBilibiliData = getBilibiliData2;
|
|
2996
|
-
var fetchKuaishouData = getKuaishouData2;
|
|
2997
|
-
var v4CompatibilityMiddleware = (req, res, next) => {
|
|
2998
|
-
const originalJson = res.json;
|
|
2999
|
-
res.json = (data2) => {
|
|
3000
|
-
if (data2 && typeof data2 === "object" && "data" in data2 && "message" in data2 && "code" in data2) {
|
|
3001
|
-
const v4Response = {
|
|
3002
|
-
...data2.data,
|
|
3003
|
-
...data2.requestPath && { requestPath: data2.requestPath }
|
|
3004
|
-
};
|
|
3005
|
-
return originalJson.call(void 0, v4Response);
|
|
3006
|
-
}
|
|
3007
|
-
return originalJson.call(void 0, data2);
|
|
3008
|
-
};
|
|
3009
|
-
next();
|
|
3010
|
-
};
|
|
3011
|
-
var amagiClient = class {
|
|
3012
|
-
#douyin;
|
|
3013
|
-
#bilibili;
|
|
3014
|
-
#kuaishou;
|
|
3015
|
-
/**
|
|
3016
|
-
*
|
|
3017
|
-
* @param cookie - 包含抖音ck、B站ck、快手ck的对象
|
|
3018
|
-
*/
|
|
3019
|
-
constructor(options) {
|
|
3020
|
-
this.#douyin = (options == null ? void 0 : options.douyin) ?? "";
|
|
3021
|
-
this.#bilibili = (options == null ? void 0 : options.bilibili) ?? "";
|
|
3022
|
-
this.#kuaishou = (options == null ? void 0 : options.kuaishou) ?? "";
|
|
3023
|
-
}
|
|
3024
|
-
/**
|
|
3025
|
-
* 启动本地 HTTP 服务
|
|
3026
|
-
* @param port - 监听端口
|
|
3027
|
-
* @defaultValue `port` 4567
|
|
3028
|
-
* @returns Express 应用实例
|
|
3029
|
-
*/
|
|
3030
|
-
startClient = (port = 4567) => {
|
|
3324
|
+
var createAmagiClient = (options) => {
|
|
3325
|
+
var _a, _b, _c;
|
|
3326
|
+
const douyinCookie = ((_a = options == null ? void 0 : options.cookies) == null ? void 0 : _a.douyin) ?? "";
|
|
3327
|
+
const bilibiliCookie = ((_b = options == null ? void 0 : options.cookies) == null ? void 0 : _b.bilibili) ?? "";
|
|
3328
|
+
const kuaishouCookie = ((_c = options == null ? void 0 : options.cookies) == null ? void 0 : _c.kuaishou) ?? "";
|
|
3329
|
+
const requestConfig = (options == null ? void 0 : options.request) ?? {};
|
|
3330
|
+
const startServer = (port = 4567) => {
|
|
3031
3331
|
const app = express__default.default();
|
|
3332
|
+
app.use(express__default.default.json());
|
|
3333
|
+
app.use(express__default.default.urlencoded({ extended: true }));
|
|
3032
3334
|
app.get("/", (_req, res) => {
|
|
3033
3335
|
res.redirect(301, "https://amagi.apifox.cn");
|
|
3034
3336
|
});
|
|
3035
3337
|
app.get("/docs", (_req, res) => {
|
|
3036
3338
|
res.redirect(301, "https://amagi.apifox.cn");
|
|
3037
3339
|
});
|
|
3038
|
-
app.use(
|
|
3039
|
-
app.use("/api/
|
|
3040
|
-
app.use("/api/
|
|
3041
|
-
app.use("/api/kuaishou", v4CompatibilityMiddleware);
|
|
3042
|
-
app.use("/api/douyin", createDouyinRoutes(this.#douyin));
|
|
3043
|
-
app.use("/api/bilibili", createBilibiliRoutes(this.#bilibili));
|
|
3044
|
-
app.use("/api/kuaishou", createKuaishouRoutes(this.#kuaishou));
|
|
3340
|
+
app.use("/api/douyin", createDouyinRoutes(douyinCookie, requestConfig));
|
|
3341
|
+
app.use("/api/bilibili", createBilibiliRoutes(bilibiliCookie, requestConfig));
|
|
3342
|
+
app.use("/api/kuaishou", createKuaishouRoutes(kuaishouCookie, requestConfig));
|
|
3045
3343
|
app.listen(port, "::", () => {
|
|
3046
3344
|
logger.mark(`Amagi server listening on ${logger.green(`http://localhost:${port}`)} ${logger.yellow("API docs: https://amagi.apifox.cn ")}`);
|
|
3047
3345
|
});
|
|
3048
3346
|
return app;
|
|
3049
3347
|
};
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
* @param type - 请求数据类型
|
|
3053
|
-
* @param options - 请求参数,是一个对象
|
|
3054
|
-
* @returns 返回接口的原始数据
|
|
3055
|
-
*/
|
|
3056
|
-
getDouyinData = async (methodType, options) => {
|
|
3057
|
-
const fullOptions = {
|
|
3058
|
-
methodType,
|
|
3059
|
-
...options
|
|
3060
|
-
};
|
|
3061
|
-
const result = await getDouyinData2(methodType, this.#douyin, fullOptions);
|
|
3062
|
-
return result && typeof result === "object" && "data" in result ? result.data : result;
|
|
3348
|
+
const startClient = (port = 4567) => {
|
|
3349
|
+
return startServer(port);
|
|
3063
3350
|
};
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
* @param type - 请求数据类型
|
|
3067
|
-
* @param options - 请求参数,是一个对象
|
|
3068
|
-
* @returns 返回接口的原始数据
|
|
3069
|
-
*/
|
|
3070
|
-
getBilibiliData = async (methodType, options) => {
|
|
3071
|
-
const fullOptions = {
|
|
3072
|
-
methodType,
|
|
3073
|
-
...options
|
|
3074
|
-
};
|
|
3075
|
-
const result = await getBilibiliData2(methodType, this.#bilibili, fullOptions);
|
|
3076
|
-
return result && typeof result === "object" && "data" in result ? result.data : result;
|
|
3351
|
+
const getDouyinDataWithCookie = async (methodType, options2) => {
|
|
3352
|
+
return await getDouyinData(methodType, options2, douyinCookie, requestConfig);
|
|
3077
3353
|
};
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3354
|
+
const getBilibiliDataWithCookie = async (methodType, options2) => {
|
|
3355
|
+
return await getBilibiliData(methodType, options2, bilibiliCookie);
|
|
3356
|
+
};
|
|
3357
|
+
const getKuaishouDataWithCookie = async (methodType, options2) => {
|
|
3358
|
+
return await getKuaishouData(methodType, options2, kuaishouCookie);
|
|
3359
|
+
};
|
|
3360
|
+
return {
|
|
3361
|
+
/** 启动本地HTTP服务 */
|
|
3362
|
+
startServer,
|
|
3363
|
+
/** @deprecated 此方法已废弃,请使用 startServer 方法代替 */
|
|
3364
|
+
startClient,
|
|
3365
|
+
getDouyinData: getDouyinDataWithCookie,
|
|
3366
|
+
getBilibiliData: getBilibiliDataWithCookie,
|
|
3367
|
+
getKuaishouData: getKuaishouDataWithCookie,
|
|
3368
|
+
douyin: {
|
|
3369
|
+
...douyinUtils,
|
|
3370
|
+
/** 绑定了cookie和请求配置的抖音API对象,调用时不需要传递cookie */
|
|
3371
|
+
api: createBoundDouyinApi(douyinCookie, requestConfig)
|
|
3372
|
+
},
|
|
3373
|
+
bilibili: {
|
|
3374
|
+
...bilibiliUtils,
|
|
3375
|
+
/** 绑定了cookie和请求配置的B站API对象,调用时不需要传递cookie */
|
|
3376
|
+
api: createBoundBilibiliApi(bilibiliCookie)
|
|
3377
|
+
},
|
|
3378
|
+
kuaishou: {
|
|
3379
|
+
...kuaishouUtils,
|
|
3380
|
+
/** 绑定了cookie和请求配置的快手API对象,调用时不需要传递cookie */
|
|
3381
|
+
api: createBoundKuaishouApi(kuaishouCookie)
|
|
3382
|
+
}
|
|
3091
3383
|
};
|
|
3092
3384
|
};
|
|
3093
3385
|
|
|
3094
3386
|
// src/index.ts
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3387
|
+
var amagiClient = createAmagiClient;
|
|
3388
|
+
function CreateAmagiApp(options = {}) {
|
|
3389
|
+
if (!(this instanceof CreateAmagiApp)) {
|
|
3390
|
+
return createAmagiClient(options);
|
|
3098
3391
|
}
|
|
3099
|
-
return
|
|
3392
|
+
return createAmagiClient(options);
|
|
3100
3393
|
}
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
var CreateApp =
|
|
3394
|
+
CreateAmagiApp.douyin = douyinUtils;
|
|
3395
|
+
CreateAmagiApp.bilibili = bilibiliUtils;
|
|
3396
|
+
CreateAmagiApp.kuaishou = kuaishouUtils;
|
|
3397
|
+
CreateAmagiApp.getDouyinData = getDouyinData;
|
|
3398
|
+
CreateAmagiApp.getBilibiliData = getBilibiliData;
|
|
3399
|
+
CreateAmagiApp.getKuaishouData = getKuaishouData;
|
|
3400
|
+
var CreateApp = CreateAmagiApp;
|
|
3108
3401
|
var Client = CreateApp;
|
|
3109
3402
|
var amagi = Client;
|
|
3110
3403
|
/*!
|
|
@@ -3113,8 +3406,38 @@ var amagi = Client;
|
|
|
3113
3406
|
* GPL-3.0 Licensed
|
|
3114
3407
|
*/
|
|
3115
3408
|
|
|
3409
|
+
exports.ApiError = ApiError;
|
|
3410
|
+
exports.BilibiliAv2BvParamsSchema = BilibiliAv2BvParamsSchema;
|
|
3411
|
+
exports.BilibiliBangumiInfoParamsSchema = BilibiliBangumiInfoParamsSchema;
|
|
3412
|
+
exports.BilibiliBangumiStreamParamsSchema = BilibiliBangumiStreamParamsSchema;
|
|
3413
|
+
exports.BilibiliBv2AvParamsSchema = BilibiliBv2AvParamsSchema;
|
|
3414
|
+
exports.BilibiliCommentParamsSchema = BilibiliCommentParamsSchema;
|
|
3415
|
+
exports.BilibiliDynamicParamsSchema = BilibiliDynamicParamsSchema;
|
|
3416
|
+
exports.BilibiliEmojiParamsSchema = BilibiliEmojiParamsSchema;
|
|
3417
|
+
exports.BilibiliLiveParamsSchema = BilibiliLiveParamsSchema;
|
|
3418
|
+
exports.BilibiliLoginParamsSchema = BilibiliLoginParamsSchema;
|
|
3419
|
+
exports.BilibiliQrcodeParamsSchema = BilibiliQrcodeParamsSchema;
|
|
3420
|
+
exports.BilibiliQrcodeStatusParamsSchema = BilibiliQrcodeStatusParamsSchema;
|
|
3421
|
+
exports.BilibiliUserParamsSchema = BilibiliUserParamsSchema;
|
|
3422
|
+
exports.BilibiliValidationSchemas = BilibiliValidationSchemas2;
|
|
3423
|
+
exports.BilibiliVideoDownloadParamsSchema = BilibiliVideoDownloadParamsSchema;
|
|
3424
|
+
exports.BilibiliVideoParamsSchema = BilibiliVideoParamsSchema;
|
|
3116
3425
|
exports.CreateApp = CreateApp;
|
|
3117
|
-
exports.
|
|
3426
|
+
exports.DouyinCommentParamsSchema = DouyinCommentParamsSchema;
|
|
3427
|
+
exports.DouyinCommentReplyParamsSchema = DouyinCommentReplyParamsSchema;
|
|
3428
|
+
exports.DouyinEmojiListParamsSchema = DouyinEmojiListParamsSchema;
|
|
3429
|
+
exports.DouyinEmojiProParamsSchema = DouyinEmojiProParamsSchema;
|
|
3430
|
+
exports.DouyinMusicParamsSchema = DouyinMusicParamsSchema;
|
|
3431
|
+
exports.DouyinQrcodeParamsSchema = DouyinQrcodeParamsSchema;
|
|
3432
|
+
exports.DouyinSearchParamsSchema = DouyinSearchParamsSchema;
|
|
3433
|
+
exports.DouyinUserParamsSchema = DouyinUserParamsSchema;
|
|
3434
|
+
exports.DouyinValidationSchemas = DouyinValidationSchemas2;
|
|
3435
|
+
exports.DouyinWorkParamsSchema = DouyinWorkParamsSchema;
|
|
3436
|
+
exports.KuaishouCommentParamsSchema = KuaishouCommentParamsSchema;
|
|
3437
|
+
exports.KuaishouEmojiParamsSchema = KuaishouEmojiParamsSchema;
|
|
3438
|
+
exports.KuaishouValidationSchemas = KuaishouValidationSchemas2;
|
|
3439
|
+
exports.KuaishouVideoParamsSchema = KuaishouVideoParamsSchema;
|
|
3440
|
+
exports.ValidationError = ValidationError;
|
|
3118
3441
|
exports.amagi = amagi;
|
|
3119
3442
|
exports.amagiClient = amagiClient;
|
|
3120
3443
|
exports.av2bv = av2bv;
|
|
@@ -3123,23 +3446,27 @@ exports.bilibiliApiUrls = bilibiliApiUrls;
|
|
|
3123
3446
|
exports.bilibiliErrorCodeMap = bilibiliErrorCodeMap;
|
|
3124
3447
|
exports.bilibiliUtils = bilibiliUtils;
|
|
3125
3448
|
exports.bv2av = bv2av;
|
|
3449
|
+
exports.createAmagiClient = createAmagiClient;
|
|
3126
3450
|
exports.createBilibiliRoutes = createBilibiliRoutes;
|
|
3127
3451
|
exports.createBoundBilibiliApi = createBoundBilibiliApi;
|
|
3128
3452
|
exports.createBoundDouyinApi = createBoundDouyinApi;
|
|
3129
3453
|
exports.createBoundKuaishouApi = createBoundKuaishouApi;
|
|
3130
3454
|
exports.createDouyinRoutes = createDouyinRoutes;
|
|
3455
|
+
exports.createErrorResponse = createErrorResponse;
|
|
3131
3456
|
exports.createKuaishouRoutes = createKuaishouRoutes;
|
|
3457
|
+
exports.createSuccessResponse = createSuccessResponse;
|
|
3132
3458
|
exports.default = Client;
|
|
3133
3459
|
exports.douyin = douyin;
|
|
3134
3460
|
exports.douyinApiUrls = douyinApiUrls;
|
|
3135
3461
|
exports.douyinSign = douyinSign;
|
|
3136
3462
|
exports.douyinUtils = douyinUtils;
|
|
3137
|
-
exports.
|
|
3138
|
-
exports.
|
|
3139
|
-
exports.
|
|
3140
|
-
exports.
|
|
3141
|
-
exports.
|
|
3142
|
-
exports.getKuaishouData =
|
|
3463
|
+
exports.fetchData = fetchData;
|
|
3464
|
+
exports.fetchResponse = fetchResponse;
|
|
3465
|
+
exports.getBilibiliData = getBilibiliData;
|
|
3466
|
+
exports.getDouyinData = getDouyinData;
|
|
3467
|
+
exports.getHeadersAndData = getHeadersAndData;
|
|
3468
|
+
exports.getKuaishouData = getKuaishouData;
|
|
3469
|
+
exports.handleError = handleError;
|
|
3143
3470
|
exports.httpLogger = httpLogger;
|
|
3144
3471
|
exports.kuaishou = kuaishou;
|
|
3145
3472
|
exports.kuaishouApiUrls = kuaishouApiUrls;
|
|
@@ -3147,7 +3474,10 @@ exports.kuaishouUtils = kuaishouUtils;
|
|
|
3147
3474
|
exports.logMiddleware = logMiddleware;
|
|
3148
3475
|
exports.logger = logger;
|
|
3149
3476
|
exports.qtparam = qtparam;
|
|
3150
|
-
exports.registerBilibiliRoutes =
|
|
3151
|
-
exports.registerDouyinRoutes =
|
|
3477
|
+
exports.registerBilibiliRoutes = createBilibiliRoutes;
|
|
3478
|
+
exports.registerDouyinRoutes = createDouyinRoutes;
|
|
3152
3479
|
exports.registerKuaishouRoutes = createKuaishouRoutes;
|
|
3480
|
+
exports.validateBilibiliParams = validateBilibiliParams;
|
|
3481
|
+
exports.validateDouyinParams = validateDouyinParams;
|
|
3482
|
+
exports.validateKuaishouParams = validateKuaishouParams;
|
|
3153
3483
|
exports.wbi_sign = wbi_sign;
|