@ikenxuan/amagi 5.0.0 → 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 +413 -67
- package/dist/default/esm/index.mjs +412 -66
- package/dist/default/index.d.ts +76 -1
- package/package.json +1 -1
|
@@ -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 = () => {
|
|
@@ -1235,9 +1235,7 @@ var a_bogus_default = (url, user_agent) => {
|
|
|
1235
1235
|
};
|
|
1236
1236
|
|
|
1237
1237
|
// src/platform/douyin/sign/index.ts
|
|
1238
|
-
var
|
|
1239
|
-
"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"
|
|
1240
|
-
};
|
|
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";
|
|
1241
1239
|
var douyinSign = class {
|
|
1242
1240
|
/**
|
|
1243
1241
|
* 生成一个指定长度的随机字符串
|
|
@@ -1254,8 +1252,8 @@ var douyinSign = class {
|
|
|
1254
1252
|
* @param url 需要签名的地址
|
|
1255
1253
|
* @returns 对此地址签名后的URL查询参数
|
|
1256
1254
|
*/
|
|
1257
|
-
static AB(url) {
|
|
1258
|
-
return a_bogus_default(url,
|
|
1255
|
+
static AB(url, userAgent) {
|
|
1256
|
+
return a_bogus_default(url, userAgent || defaultUserAgent);
|
|
1259
1257
|
}
|
|
1260
1258
|
/** 生成一个唯一的验证字符串 */
|
|
1261
1259
|
static VerifyFpManager() {
|
|
@@ -1279,73 +1277,417 @@ var douyinSign = class {
|
|
|
1279
1277
|
};
|
|
1280
1278
|
|
|
1281
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
|
+
};
|
|
1282
1295
|
var fp = douyinSign.VerifyFpManager();
|
|
1283
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
|
+
*/
|
|
1284
1340
|
\u89C6\u9891\u6216\u56FE\u96C6(data2) {
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
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)}`;
|
|
1288
1354
|
}
|
|
1355
|
+
/**
|
|
1356
|
+
* 获取评论数据的接口地址
|
|
1357
|
+
* @param data - 请求参数,包含aweme_id、cursor、number等
|
|
1358
|
+
* @returns 完整的接口URL
|
|
1359
|
+
*/
|
|
1289
1360
|
\u8BC4\u8BBA(data2) {
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
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)}`;
|
|
1293
1379
|
}
|
|
1380
|
+
/**
|
|
1381
|
+
* 获取二级评论数据的接口地址
|
|
1382
|
+
* @param data - 请求参数,包含aweme_id、comment_id等
|
|
1383
|
+
* @returns 完整的接口URL
|
|
1384
|
+
*/
|
|
1294
1385
|
\u4E8C\u7EA7\u8BC4\u8BBA(data2) {
|
|
1295
|
-
|
|
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)}`;
|
|
1296
1427
|
}
|
|
1428
|
+
/**
|
|
1429
|
+
* 获取动图数据的接口地址
|
|
1430
|
+
* @param data - 请求参数,包含aweme_id
|
|
1431
|
+
* @returns 完整的接口URL
|
|
1432
|
+
*/
|
|
1297
1433
|
\u52A8\u56FE(data2) {
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
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)}`;
|
|
1301
1446
|
}
|
|
1447
|
+
/**
|
|
1448
|
+
* 获取表情数据的接口地址
|
|
1449
|
+
* @returns 完整的接口URL
|
|
1450
|
+
*/
|
|
1302
1451
|
\u8868\u60C5() {
|
|
1303
1452
|
return "https://www.douyin.com/aweme/v1/web/emoji/list";
|
|
1304
1453
|
}
|
|
1454
|
+
/**
|
|
1455
|
+
* 获取用户主页视频数据的接口地址
|
|
1456
|
+
* @param data - 请求参数,包含sec_uid
|
|
1457
|
+
* @returns 完整的接口URL
|
|
1458
|
+
*/
|
|
1305
1459
|
\u7528\u6237\u4E3B\u9875\u89C6\u9891(data2) {
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
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)}`;
|
|
1309
1481
|
}
|
|
1482
|
+
/**
|
|
1483
|
+
* 获取用户主页信息的接口地址
|
|
1484
|
+
* @param data - 请求参数,包含sec_uid
|
|
1485
|
+
* @returns 完整的接口URL
|
|
1486
|
+
*/
|
|
1310
1487
|
\u7528\u6237\u4E3B\u9875\u4FE1\u606F(data2) {
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
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)}`;
|
|
1314
1503
|
}
|
|
1504
|
+
/**
|
|
1505
|
+
* 获取热点词数据的接口地址
|
|
1506
|
+
* @param data - 请求参数,包含query
|
|
1507
|
+
* @returns 完整的接口URL
|
|
1508
|
+
*/
|
|
1315
1509
|
\u70ED\u70B9\u8BCD(data2) {
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
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)}`;
|
|
1319
1524
|
}
|
|
1525
|
+
/**
|
|
1526
|
+
* 获取搜索数据的接口地址
|
|
1527
|
+
* @param data - 请求参数,包含query、number、search_id等
|
|
1528
|
+
* @returns 完整的接口URL
|
|
1529
|
+
*/
|
|
1320
1530
|
\u641C\u7D22(data2) {
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
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)}`;
|
|
1324
1553
|
}
|
|
1554
|
+
/**
|
|
1555
|
+
* 获取互动表情数据的接口地址
|
|
1556
|
+
* @returns 完整的接口URL
|
|
1557
|
+
*/
|
|
1325
1558
|
\u4E92\u52A8\u8868\u60C5() {
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
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)}`;
|
|
1329
1594
|
}
|
|
1595
|
+
/**
|
|
1596
|
+
* 获取背景音乐数据的接口地址
|
|
1597
|
+
* @param data - 请求参数,包含music_id
|
|
1598
|
+
* @returns 完整的接口URL
|
|
1599
|
+
*/
|
|
1330
1600
|
\u80CC\u666F\u97F3\u4E50(data2) {
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
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)}`;
|
|
1334
1635
|
}
|
|
1636
|
+
/**
|
|
1637
|
+
* 获取直播间信息的接口地址
|
|
1638
|
+
* @param data - 请求参数,包含web_rid、room_id
|
|
1639
|
+
* @returns 完整的接口URL
|
|
1640
|
+
*/
|
|
1335
1641
|
\u76F4\u64AD\u95F4\u4FE1\u606F(data2) {
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
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)}`;
|
|
1339
1668
|
}
|
|
1669
|
+
/**
|
|
1670
|
+
* 获取申请二维码的接口地址
|
|
1671
|
+
* @param data - 请求参数,包含verify_fp
|
|
1672
|
+
* @returns 完整的接口URL
|
|
1673
|
+
*/
|
|
1340
1674
|
\u7533\u8BF7\u4E8C\u7EF4\u7801(data2) {
|
|
1341
|
-
|
|
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)}`;
|
|
1342
1681
|
}
|
|
1343
1682
|
};
|
|
1683
|
+
var createDouyinApiUrls = (userAgent) => {
|
|
1684
|
+
return new DouyinAPI(userAgent);
|
|
1685
|
+
};
|
|
1344
1686
|
var douyinApiUrls = new DouyinAPI();
|
|
1345
1687
|
|
|
1346
1688
|
// src/platform/douyin/getdata.ts
|
|
1347
1689
|
var DouyinData = async (data2, cookie, requestConfig) => {
|
|
1348
|
-
var _a, _b, _c, _d;
|
|
1690
|
+
var _a, _b, _c, _d, _e;
|
|
1349
1691
|
const defHeaders = getDouyinDefaultConfig(cookie)["headers"];
|
|
1350
1692
|
const baseRequestConfig = {
|
|
1351
1693
|
method: "GET",
|
|
@@ -1356,20 +1698,22 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1356
1698
|
...(requestConfig == null ? void 0 : requestConfig.headers) || {}
|
|
1357
1699
|
}
|
|
1358
1700
|
};
|
|
1701
|
+
const userAgent = (_a = baseRequestConfig.headers) == null ? void 0 : _a["User-Agent"];
|
|
1702
|
+
const douyinApiUrls3 = createDouyinApiUrls(userAgent);
|
|
1359
1703
|
switch (data2.methodType) {
|
|
1360
1704
|
case "\u805A\u5408\u89E3\u6790":
|
|
1361
1705
|
case "\u89C6\u9891\u4F5C\u54C1\u6570\u636E":
|
|
1362
1706
|
case "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E":
|
|
1363
1707
|
case "\u5408\u8F91\u4F5C\u54C1\u6570\u636E": {
|
|
1364
|
-
const url =
|
|
1708
|
+
const url = douyinApiUrls3.\u89C6\u9891\u6216\u56FE\u96C6({ aweme_id: data2.aweme_id });
|
|
1365
1709
|
const VideoData = await GlobalGetData2(data2.methodType, {
|
|
1366
1710
|
...baseRequestConfig,
|
|
1367
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1711
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1368
1712
|
});
|
|
1369
1713
|
return VideoData;
|
|
1370
1714
|
}
|
|
1371
1715
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1372
|
-
const urlGenerator = (params) =>
|
|
1716
|
+
const urlGenerator = (params) => douyinApiUrls3.\u8BC4\u8BBA(params);
|
|
1373
1717
|
const response = await fetchPaginatedData(
|
|
1374
1718
|
data2.methodType,
|
|
1375
1719
|
urlGenerator,
|
|
@@ -1380,7 +1724,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1380
1724
|
return response;
|
|
1381
1725
|
}
|
|
1382
1726
|
case "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E": {
|
|
1383
|
-
const urlGenerator = (params) =>
|
|
1727
|
+
const urlGenerator = (params) => douyinApiUrls3.\u4E8C\u7EA7\u8BC4\u8BBA(params);
|
|
1384
1728
|
const customConfig = {
|
|
1385
1729
|
...baseRequestConfig,
|
|
1386
1730
|
headers: {
|
|
@@ -1401,7 +1745,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1401
1745
|
return response;
|
|
1402
1746
|
}
|
|
1403
1747
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
1404
|
-
const url =
|
|
1748
|
+
const url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1405
1749
|
const customConfig = {
|
|
1406
1750
|
...baseRequestConfig,
|
|
1407
1751
|
headers: {
|
|
@@ -1414,12 +1758,12 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1414
1758
|
};
|
|
1415
1759
|
const UserInfoData = await GlobalGetData2(data2.methodType, {
|
|
1416
1760
|
...customConfig,
|
|
1417
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1761
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1418
1762
|
});
|
|
1419
1763
|
return UserInfoData;
|
|
1420
1764
|
}
|
|
1421
1765
|
case "Emoji\u6570\u636E": {
|
|
1422
|
-
const url =
|
|
1766
|
+
const url = douyinApiUrls3.\u8868\u60C5();
|
|
1423
1767
|
const EmojiData = await GlobalGetData2(data2.methodType, {
|
|
1424
1768
|
...baseRequestConfig,
|
|
1425
1769
|
url
|
|
@@ -1427,7 +1771,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1427
1771
|
return EmojiData;
|
|
1428
1772
|
}
|
|
1429
1773
|
case "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E": {
|
|
1430
|
-
const url =
|
|
1774
|
+
const url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u89C6\u9891({ sec_uid: data2.sec_uid });
|
|
1431
1775
|
const customConfig = {
|
|
1432
1776
|
...baseRequestConfig,
|
|
1433
1777
|
headers: {
|
|
@@ -1439,12 +1783,12 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1439
1783
|
};
|
|
1440
1784
|
const UserVideoListData = await GlobalGetData2(data2.methodType, {
|
|
1441
1785
|
...customConfig,
|
|
1442
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1786
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1443
1787
|
});
|
|
1444
1788
|
return UserVideoListData;
|
|
1445
1789
|
}
|
|
1446
1790
|
case "\u70ED\u70B9\u8BCD\u6570\u636E": {
|
|
1447
|
-
const url =
|
|
1791
|
+
const url = douyinApiUrls3.\u70ED\u70B9\u8BCD({ query: data2.query, number: data2.number ?? 10 });
|
|
1448
1792
|
const customConfig = {
|
|
1449
1793
|
...baseRequestConfig,
|
|
1450
1794
|
headers: {
|
|
@@ -1456,7 +1800,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1456
1800
|
};
|
|
1457
1801
|
const SuggestWordsData = await GlobalGetData2(data2.methodType, {
|
|
1458
1802
|
...customConfig,
|
|
1459
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1803
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1460
1804
|
});
|
|
1461
1805
|
return SuggestWordsData;
|
|
1462
1806
|
}
|
|
@@ -1476,16 +1820,16 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1476
1820
|
};
|
|
1477
1821
|
while (fetchedSearchList.length < Number(data2.number ?? 10)) {
|
|
1478
1822
|
const requestCount = Math.min(Number(data2.number ?? 50) - fetchedSearchList.length, maxPageSize);
|
|
1479
|
-
const url =
|
|
1823
|
+
const url = douyinApiUrls3.\u641C\u7D22({
|
|
1480
1824
|
query: data2.query,
|
|
1481
1825
|
number: requestCount,
|
|
1482
1826
|
search_id: search_id === "" ? void 0 : search_id
|
|
1483
1827
|
});
|
|
1484
1828
|
const response = await GlobalGetData2(data2.methodType, {
|
|
1485
1829
|
...customConfig,
|
|
1486
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1830
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1487
1831
|
});
|
|
1488
|
-
if (((
|
|
1832
|
+
if (((_b = response.data) == null ? void 0 : _b.length) === 0) {
|
|
1489
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);
|
|
1490
1834
|
return false;
|
|
1491
1835
|
}
|
|
@@ -1494,7 +1838,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1494
1838
|
}
|
|
1495
1839
|
fetchedSearchList.push(...response.data);
|
|
1496
1840
|
tmpresp = response;
|
|
1497
|
-
search_id = (
|
|
1841
|
+
search_id = (_c = response.log_pb) == null ? void 0 : _c.impr_id;
|
|
1498
1842
|
}
|
|
1499
1843
|
const finalResponse = {
|
|
1500
1844
|
...tmpresp,
|
|
@@ -1503,24 +1847,24 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1503
1847
|
return finalResponse;
|
|
1504
1848
|
}
|
|
1505
1849
|
case "\u52A8\u6001\u8868\u60C5\u6570\u636E": {
|
|
1506
|
-
const url =
|
|
1850
|
+
const url = douyinApiUrls3.\u4E92\u52A8\u8868\u60C5();
|
|
1507
1851
|
const ExpressionPlusData = await GlobalGetData2(data2.methodType, {
|
|
1508
1852
|
...baseRequestConfig,
|
|
1509
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1853
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1510
1854
|
});
|
|
1511
1855
|
return ExpressionPlusData;
|
|
1512
1856
|
}
|
|
1513
1857
|
case "\u97F3\u4E50\u6570\u636E": {
|
|
1514
|
-
const url =
|
|
1858
|
+
const url = douyinApiUrls3.\u80CC\u666F\u97F3\u4E50({ music_id: data2.music_id });
|
|
1515
1859
|
const MusicData = await GlobalGetData2(data2.methodType, {
|
|
1516
1860
|
...baseRequestConfig,
|
|
1517
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1861
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1518
1862
|
});
|
|
1519
1863
|
return MusicData;
|
|
1520
1864
|
}
|
|
1521
1865
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E": {
|
|
1522
|
-
let url =
|
|
1523
|
-
const fetchUrl = `${url}&a_bogus=${douyinSign.AB(url)}`;
|
|
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)}`;
|
|
1524
1868
|
const customConfig = {
|
|
1525
1869
|
...baseRequestConfig,
|
|
1526
1870
|
headers: {
|
|
@@ -1534,8 +1878,8 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1534
1878
|
...customConfig,
|
|
1535
1879
|
url: fetchUrl
|
|
1536
1880
|
});
|
|
1537
|
-
if (!((
|
|
1538
|
-
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");
|
|
1539
1883
|
const Err = {
|
|
1540
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')",
|
|
1541
1885
|
requestType: data2.methodType ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
@@ -1557,7 +1901,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1557
1901
|
};
|
|
1558
1902
|
}
|
|
1559
1903
|
const room_data = JSON.parse(UserInfoData.user.room_data);
|
|
1560
|
-
url =
|
|
1904
|
+
url = douyinApiUrls3.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: UserInfoData.user.room_id_str, web_rid: room_data.owner.web_rid });
|
|
1561
1905
|
const liveCustomConfig = {
|
|
1562
1906
|
...baseRequestConfig,
|
|
1563
1907
|
headers: {
|
|
@@ -1569,15 +1913,15 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1569
1913
|
};
|
|
1570
1914
|
const LiveRoomData = await GlobalGetData2(data2.methodType, {
|
|
1571
1915
|
...liveCustomConfig,
|
|
1572
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1916
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1573
1917
|
});
|
|
1574
1918
|
return LiveRoomData;
|
|
1575
1919
|
}
|
|
1576
1920
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E": {
|
|
1577
|
-
const url =
|
|
1921
|
+
const url = douyinApiUrls3.\u7533\u8BF7\u4E8C\u7EF4\u7801({ verify_fp: data2.verify_fp });
|
|
1578
1922
|
const LoginQrcodeStatusData = await GlobalGetData2(data2.methodType, {
|
|
1579
1923
|
...baseRequestConfig,
|
|
1580
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1924
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1581
1925
|
});
|
|
1582
1926
|
return LoginQrcodeStatusData;
|
|
1583
1927
|
}
|
|
@@ -1588,9 +1932,11 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1588
1932
|
}
|
|
1589
1933
|
};
|
|
1590
1934
|
var fetchPaginatedData = async (type, apiUrlGenerator, params, maxPageSize, requestConfig) => {
|
|
1935
|
+
var _a;
|
|
1591
1936
|
let cursor = params.cursor ?? 0;
|
|
1592
1937
|
let fetchedData = [];
|
|
1593
1938
|
let tmpresp = {};
|
|
1939
|
+
const userAgent = (_a = requestConfig.headers) == null ? void 0 : _a["User-Agent"];
|
|
1594
1940
|
while (fetchedData.length < Number(params.number ?? maxPageSize)) {
|
|
1595
1941
|
const requestCount = Math.min(Number(params.number ?? maxPageSize) - fetchedData.length, maxPageSize);
|
|
1596
1942
|
const url = apiUrlGenerator({
|
|
@@ -1600,7 +1946,7 @@ var fetchPaginatedData = async (type, apiUrlGenerator, params, maxPageSize, requ
|
|
|
1600
1946
|
});
|
|
1601
1947
|
const response = await GlobalGetData2(type, {
|
|
1602
1948
|
...requestConfig,
|
|
1603
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1949
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1604
1950
|
});
|
|
1605
1951
|
fetchedData.push(...response.comments || response.data || []);
|
|
1606
1952
|
tmpresp = response;
|