@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
|
@@ -1219,9 +1219,7 @@ var a_bogus_default = (url, user_agent) => {
|
|
|
1219
1219
|
};
|
|
1220
1220
|
|
|
1221
1221
|
// src/platform/douyin/sign/index.ts
|
|
1222
|
-
var
|
|
1223
|
-
"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"
|
|
1224
|
-
};
|
|
1222
|
+
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";
|
|
1225
1223
|
var douyinSign = class {
|
|
1226
1224
|
/**
|
|
1227
1225
|
* 生成一个指定长度的随机字符串
|
|
@@ -1238,8 +1236,8 @@ var douyinSign = class {
|
|
|
1238
1236
|
* @param url 需要签名的地址
|
|
1239
1237
|
* @returns 对此地址签名后的URL查询参数
|
|
1240
1238
|
*/
|
|
1241
|
-
static AB(url) {
|
|
1242
|
-
return a_bogus_default(url,
|
|
1239
|
+
static AB(url, userAgent) {
|
|
1240
|
+
return a_bogus_default(url, userAgent || defaultUserAgent);
|
|
1243
1241
|
}
|
|
1244
1242
|
/** 生成一个唯一的验证字符串 */
|
|
1245
1243
|
static VerifyFpManager() {
|
|
@@ -1263,73 +1261,417 @@ var douyinSign = class {
|
|
|
1263
1261
|
};
|
|
1264
1262
|
|
|
1265
1263
|
// src/platform/douyin/API.ts
|
|
1264
|
+
var extractBrowserVersion = (userAgent) => {
|
|
1265
|
+
if (!userAgent) return "125.0.0.0";
|
|
1266
|
+
const chromeMatch = userAgent.match(/Chrome\/(\d+\.\d+\.\d+\.\d+)/);
|
|
1267
|
+
if (chromeMatch) {
|
|
1268
|
+
return chromeMatch[1];
|
|
1269
|
+
}
|
|
1270
|
+
const edgeMatch = userAgent.match(/Edg\/(\d+\.\d+\.\d+\.\d+)/);
|
|
1271
|
+
if (edgeMatch) {
|
|
1272
|
+
return edgeMatch[1];
|
|
1273
|
+
}
|
|
1274
|
+
return "125.0.0.0";
|
|
1275
|
+
};
|
|
1276
|
+
var buildQueryString = (params) => {
|
|
1277
|
+
return Object.entries(params).filter(([_, value]) => value !== void 0 && value !== null).map(([key, value]) => `${key}=${encodeURIComponent(value)}`).join("&");
|
|
1278
|
+
};
|
|
1266
1279
|
var fp = douyinSign.VerifyFpManager();
|
|
1267
1280
|
var DouyinAPI = class {
|
|
1281
|
+
browserVersion;
|
|
1282
|
+
/**
|
|
1283
|
+
* 构造函数
|
|
1284
|
+
* @param userAgent - 用户代理字符串,用于提取浏览器版本信息
|
|
1285
|
+
*/
|
|
1286
|
+
constructor(userAgent) {
|
|
1287
|
+
this.browserVersion = extractBrowserVersion(userAgent);
|
|
1288
|
+
}
|
|
1289
|
+
/**
|
|
1290
|
+
* 获取通用的基础参数
|
|
1291
|
+
* @returns 通用基础参数对象
|
|
1292
|
+
*/
|
|
1293
|
+
getBaseParams() {
|
|
1294
|
+
return {
|
|
1295
|
+
device_platform: "webapp",
|
|
1296
|
+
aid: "6383",
|
|
1297
|
+
channel: "channel_pc_web",
|
|
1298
|
+
pc_client_type: "1",
|
|
1299
|
+
cookie_enabled: "true",
|
|
1300
|
+
browser_language: "zh-CN",
|
|
1301
|
+
browser_platform: "Win32",
|
|
1302
|
+
browser_name: "Chrome",
|
|
1303
|
+
browser_version: this.browserVersion,
|
|
1304
|
+
browser_online: "true",
|
|
1305
|
+
engine_name: "Blink",
|
|
1306
|
+
engine_version: this.browserVersion,
|
|
1307
|
+
os_name: "Windows",
|
|
1308
|
+
os_version: "10",
|
|
1309
|
+
cpu_core_num: "16",
|
|
1310
|
+
device_memory: "8",
|
|
1311
|
+
platform: "PC",
|
|
1312
|
+
downlink: "10",
|
|
1313
|
+
effective_type: "4g",
|
|
1314
|
+
msToken: douyinSign.Mstoken(116),
|
|
1315
|
+
verifyFp: fp,
|
|
1316
|
+
fp
|
|
1317
|
+
};
|
|
1318
|
+
}
|
|
1319
|
+
/**
|
|
1320
|
+
* 获取视频或图集数据的接口地址
|
|
1321
|
+
* @param data - 请求参数,包含aweme_id
|
|
1322
|
+
* @returns 完整的接口URL
|
|
1323
|
+
*/
|
|
1268
1324
|
\u89C6\u9891\u6216\u56FE\u96C6(data2) {
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1325
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/aweme/detail/";
|
|
1326
|
+
const params = {
|
|
1327
|
+
...this.getBaseParams(),
|
|
1328
|
+
aweme_id: data2.aweme_id,
|
|
1329
|
+
update_version_code: "170400",
|
|
1330
|
+
version_code: "190500",
|
|
1331
|
+
version_name: "19.5.0",
|
|
1332
|
+
screen_width: "2328",
|
|
1333
|
+
screen_height: "1310",
|
|
1334
|
+
round_trip_time: "150",
|
|
1335
|
+
webid: "7351848354471872041"
|
|
1336
|
+
};
|
|
1337
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1272
1338
|
}
|
|
1339
|
+
/**
|
|
1340
|
+
* 获取评论数据的接口地址
|
|
1341
|
+
* @param data - 请求参数,包含aweme_id、cursor、number等
|
|
1342
|
+
* @returns 完整的接口URL
|
|
1343
|
+
*/
|
|
1273
1344
|
\u8BC4\u8BBA(data2) {
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1345
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/comment/list/";
|
|
1346
|
+
const params = {
|
|
1347
|
+
...this.getBaseParams(),
|
|
1348
|
+
aweme_id: data2.aweme_id,
|
|
1349
|
+
cursor: data2.cursor ?? 0,
|
|
1350
|
+
count: data2.number ?? 50,
|
|
1351
|
+
item_type: "0",
|
|
1352
|
+
insert_ids: "",
|
|
1353
|
+
whale_cut_token: "",
|
|
1354
|
+
cut_version: "1",
|
|
1355
|
+
rcFT: "",
|
|
1356
|
+
version_code: "170400",
|
|
1357
|
+
version_name: "17.4.0",
|
|
1358
|
+
screen_width: "1552",
|
|
1359
|
+
screen_height: "970",
|
|
1360
|
+
round_trip_time: "50"
|
|
1361
|
+
};
|
|
1362
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1277
1363
|
}
|
|
1364
|
+
/**
|
|
1365
|
+
* 获取二级评论数据的接口地址
|
|
1366
|
+
* @param data - 请求参数,包含aweme_id、comment_id等
|
|
1367
|
+
* @returns 完整的接口URL
|
|
1368
|
+
*/
|
|
1278
1369
|
\u4E8C\u7EA7\u8BC4\u8BBA(data2) {
|
|
1279
|
-
|
|
1370
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/comment/list/reply/";
|
|
1371
|
+
const params = {
|
|
1372
|
+
device_platform: "webapp",
|
|
1373
|
+
aid: "6383",
|
|
1374
|
+
channel: "channel_pc_web",
|
|
1375
|
+
item_id: data2.aweme_id,
|
|
1376
|
+
comment_id: data2.comment_id,
|
|
1377
|
+
cut_version: "1",
|
|
1378
|
+
cursor: data2.cursor,
|
|
1379
|
+
count: data2.number,
|
|
1380
|
+
item_type: "0",
|
|
1381
|
+
update_version_code: "170400",
|
|
1382
|
+
pc_client_type: "1",
|
|
1383
|
+
pc_libra_divert: "Windows",
|
|
1384
|
+
support_h265: "1",
|
|
1385
|
+
support_dash: "1",
|
|
1386
|
+
version_code: "170400",
|
|
1387
|
+
version_name: "17.4.0",
|
|
1388
|
+
cookie_enabled: "true",
|
|
1389
|
+
screen_width: "1552",
|
|
1390
|
+
screen_height: "970",
|
|
1391
|
+
browser_language: "zh-CN",
|
|
1392
|
+
browser_platform: "Win32",
|
|
1393
|
+
browser_name: "Edge",
|
|
1394
|
+
browser_version: "132.0.0.0",
|
|
1395
|
+
browser_online: "true",
|
|
1396
|
+
engine_name: "Blink",
|
|
1397
|
+
engine_version: "132.0.0.0",
|
|
1398
|
+
os_name: "Windows",
|
|
1399
|
+
os_version: "10",
|
|
1400
|
+
cpu_core_num: "16",
|
|
1401
|
+
device_memory: "8",
|
|
1402
|
+
platform: "PC",
|
|
1403
|
+
downlink: "10",
|
|
1404
|
+
effective_type: "4g",
|
|
1405
|
+
round_trip_time: "50",
|
|
1406
|
+
webid: "7386217876267796006",
|
|
1407
|
+
verifyFp: fp,
|
|
1408
|
+
fp
|
|
1409
|
+
};
|
|
1410
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1280
1411
|
}
|
|
1412
|
+
/**
|
|
1413
|
+
* 获取动图数据的接口地址
|
|
1414
|
+
* @param data - 请求参数,包含aweme_id
|
|
1415
|
+
* @returns 完整的接口URL
|
|
1416
|
+
*/
|
|
1281
1417
|
\u52A8\u56FE(data2) {
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1418
|
+
const baseUrl = "https://www.iesdouyin.com/web/api/v2/aweme/slidesinfo/";
|
|
1419
|
+
const params = {
|
|
1420
|
+
reflow_source: "reflow_page",
|
|
1421
|
+
web_id: "7326472315356857893",
|
|
1422
|
+
device_id: "7326472315356857893",
|
|
1423
|
+
aweme_ids: `[${data2.aweme_id}]`,
|
|
1424
|
+
request_source: "200",
|
|
1425
|
+
msToken: douyinSign.Mstoken(116),
|
|
1426
|
+
verifyFp: fp,
|
|
1427
|
+
fp
|
|
1428
|
+
};
|
|
1429
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1285
1430
|
}
|
|
1431
|
+
/**
|
|
1432
|
+
* 获取表情数据的接口地址
|
|
1433
|
+
* @returns 完整的接口URL
|
|
1434
|
+
*/
|
|
1286
1435
|
\u8868\u60C5() {
|
|
1287
1436
|
return "https://www.douyin.com/aweme/v1/web/emoji/list";
|
|
1288
1437
|
}
|
|
1438
|
+
/**
|
|
1439
|
+
* 获取用户主页视频数据的接口地址
|
|
1440
|
+
* @param data - 请求参数,包含sec_uid
|
|
1441
|
+
* @returns 完整的接口URL
|
|
1442
|
+
*/
|
|
1289
1443
|
\u7528\u6237\u4E3B\u9875\u89C6\u9891(data2) {
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1444
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/aweme/post/";
|
|
1445
|
+
const params = {
|
|
1446
|
+
...this.getBaseParams(),
|
|
1447
|
+
sec_user_id: data2.sec_uid,
|
|
1448
|
+
max_cursor: "0",
|
|
1449
|
+
locate_query: "false",
|
|
1450
|
+
show_live_replay_strategy: "1",
|
|
1451
|
+
need_time_list: "1",
|
|
1452
|
+
time_list_query: "0",
|
|
1453
|
+
whale_cut_token: "",
|
|
1454
|
+
cut_version: "1",
|
|
1455
|
+
count: "18",
|
|
1456
|
+
publish_video_strategy_type: "2",
|
|
1457
|
+
version_code: "170400",
|
|
1458
|
+
version_name: "17.4.0",
|
|
1459
|
+
screen_width: "1552",
|
|
1460
|
+
screen_height: "970",
|
|
1461
|
+
round_trip_time: "50",
|
|
1462
|
+
webid: "7338423850134226495"
|
|
1463
|
+
};
|
|
1464
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1293
1465
|
}
|
|
1466
|
+
/**
|
|
1467
|
+
* 获取用户主页信息的接口地址
|
|
1468
|
+
* @param data - 请求参数,包含sec_uid
|
|
1469
|
+
* @returns 完整的接口URL
|
|
1470
|
+
*/
|
|
1294
1471
|
\u7528\u6237\u4E3B\u9875\u4FE1\u606F(data2) {
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1472
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/user/profile/other/";
|
|
1473
|
+
const params = {
|
|
1474
|
+
...this.getBaseParams(),
|
|
1475
|
+
publish_video_strategy_type: "2",
|
|
1476
|
+
source: "channel_pc_web",
|
|
1477
|
+
sec_user_id: data2.sec_uid,
|
|
1478
|
+
personal_center_strategy: "1",
|
|
1479
|
+
version_code: "170400",
|
|
1480
|
+
version_name: "17.4.0",
|
|
1481
|
+
screen_width: "1552",
|
|
1482
|
+
screen_height: "970",
|
|
1483
|
+
round_trip_time: "0",
|
|
1484
|
+
webid: "7327957959955580467"
|
|
1485
|
+
};
|
|
1486
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1298
1487
|
}
|
|
1488
|
+
/**
|
|
1489
|
+
* 获取热点词数据的接口地址
|
|
1490
|
+
* @param data - 请求参数,包含query
|
|
1491
|
+
* @returns 完整的接口URL
|
|
1492
|
+
*/
|
|
1299
1493
|
\u70ED\u70B9\u8BCD(data2) {
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1494
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/api/suggest_words/";
|
|
1495
|
+
const params = {
|
|
1496
|
+
...this.getBaseParams(),
|
|
1497
|
+
query: data2.query,
|
|
1498
|
+
business_id: "30088",
|
|
1499
|
+
from_group_id: "7129543174929812767",
|
|
1500
|
+
version_code: "170400",
|
|
1501
|
+
version_name: "17.4.0",
|
|
1502
|
+
screen_width: "1552",
|
|
1503
|
+
screen_height: "970",
|
|
1504
|
+
round_trip_time: "50",
|
|
1505
|
+
webid: "7327957959955580467"
|
|
1506
|
+
};
|
|
1507
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1303
1508
|
}
|
|
1509
|
+
/**
|
|
1510
|
+
* 获取搜索数据的接口地址
|
|
1511
|
+
* @param data - 请求参数,包含query、number、search_id等
|
|
1512
|
+
* @returns 完整的接口URL
|
|
1513
|
+
*/
|
|
1304
1514
|
\u641C\u7D22(data2) {
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1515
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/general/search/single/";
|
|
1516
|
+
const params = {
|
|
1517
|
+
...this.getBaseParams(),
|
|
1518
|
+
search_channel: "aweme_general",
|
|
1519
|
+
sort_type: "0",
|
|
1520
|
+
publish_time: "0",
|
|
1521
|
+
keyword: data2.query,
|
|
1522
|
+
search_source: "normal_search",
|
|
1523
|
+
query_correct_type: "1",
|
|
1524
|
+
is_filter_search: "0",
|
|
1525
|
+
from_group_id: "",
|
|
1526
|
+
offset: "0",
|
|
1527
|
+
version_code: "190600",
|
|
1528
|
+
version_name: "19.6.0",
|
|
1529
|
+
screen_width: "1552",
|
|
1530
|
+
screen_height: "970",
|
|
1531
|
+
round_trip_time: "50",
|
|
1532
|
+
webid: "7338423850134226495",
|
|
1533
|
+
search_id: data2.search_id ?? "",
|
|
1534
|
+
count: data2.number ?? 10
|
|
1535
|
+
};
|
|
1536
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1308
1537
|
}
|
|
1538
|
+
/**
|
|
1539
|
+
* 获取互动表情数据的接口地址
|
|
1540
|
+
* @returns 完整的接口URL
|
|
1541
|
+
*/
|
|
1309
1542
|
\u4E92\u52A8\u8868\u60C5() {
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1543
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/im/strategy/config";
|
|
1544
|
+
const params = {
|
|
1545
|
+
device_platform: "webapp",
|
|
1546
|
+
aid: "1128",
|
|
1547
|
+
channel: "channel_pc_web",
|
|
1548
|
+
publish_video_strategy_type: "2",
|
|
1549
|
+
app_id: "1128",
|
|
1550
|
+
scenes: "[%22interactive_resources%22]",
|
|
1551
|
+
pc_client_type: "1",
|
|
1552
|
+
version_code: "170400",
|
|
1553
|
+
version_name: "17.4.0",
|
|
1554
|
+
cookie_enabled: "true",
|
|
1555
|
+
screen_width: "2328",
|
|
1556
|
+
screen_height: "1310",
|
|
1557
|
+
browser_language: "zh-CN",
|
|
1558
|
+
browser_platform: "Win32",
|
|
1559
|
+
browser_name: "Chrome",
|
|
1560
|
+
browser_version: "126.0.0.0",
|
|
1561
|
+
browser_online: "true",
|
|
1562
|
+
engine_name: "Blink",
|
|
1563
|
+
engine_version: "126.0.0.0",
|
|
1564
|
+
os_name: "Windows",
|
|
1565
|
+
os_version: "10",
|
|
1566
|
+
cpu_core_num: "16",
|
|
1567
|
+
device_memory: "8",
|
|
1568
|
+
platform: "PC",
|
|
1569
|
+
downlink: "1.5",
|
|
1570
|
+
effective_type: "4g",
|
|
1571
|
+
round_trip_time: "350",
|
|
1572
|
+
webid: "7347329698282833447",
|
|
1573
|
+
msToken: douyinSign.Mstoken(116),
|
|
1574
|
+
verifyFp: fp,
|
|
1575
|
+
fp
|
|
1576
|
+
};
|
|
1577
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1313
1578
|
}
|
|
1579
|
+
/**
|
|
1580
|
+
* 获取背景音乐数据的接口地址
|
|
1581
|
+
* @param data - 请求参数,包含music_id
|
|
1582
|
+
* @returns 完整的接口URL
|
|
1583
|
+
*/
|
|
1314
1584
|
\u80CC\u666F\u97F3\u4E50(data2) {
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1585
|
+
const baseUrl = "https://www.douyin.com/aweme/v1/web/music/detail/";
|
|
1586
|
+
const params = {
|
|
1587
|
+
device_platform: "webapp",
|
|
1588
|
+
aid: "6383",
|
|
1589
|
+
channel: "channel_pc_web",
|
|
1590
|
+
music_id: data2.music_id,
|
|
1591
|
+
scene: "1",
|
|
1592
|
+
pc_client_type: "1",
|
|
1593
|
+
version_code: "170400",
|
|
1594
|
+
version_name: "17.4.0",
|
|
1595
|
+
cookie_enabled: "true",
|
|
1596
|
+
screen_width: "2328",
|
|
1597
|
+
screen_height: "1310",
|
|
1598
|
+
browser_language: "zh-CN",
|
|
1599
|
+
browser_platform: "Win32",
|
|
1600
|
+
browser_name: "Chrome",
|
|
1601
|
+
browser_version: "126.0.0.0",
|
|
1602
|
+
browser_online: "true",
|
|
1603
|
+
engine_name: "Blink",
|
|
1604
|
+
engine_version: "126.0.0.0",
|
|
1605
|
+
os_name: "Windows",
|
|
1606
|
+
os_version: "10",
|
|
1607
|
+
cpu_core_num: "16",
|
|
1608
|
+
device_memory: "8",
|
|
1609
|
+
platform: "PC",
|
|
1610
|
+
downlink: "1.5",
|
|
1611
|
+
effective_type: "4g",
|
|
1612
|
+
round_trip_time: "350",
|
|
1613
|
+
webid: "7347329698282833447",
|
|
1614
|
+
msToken: douyinSign.Mstoken(116),
|
|
1615
|
+
verifyFp: fp,
|
|
1616
|
+
fp
|
|
1617
|
+
};
|
|
1618
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1318
1619
|
}
|
|
1620
|
+
/**
|
|
1621
|
+
* 获取直播间信息的接口地址
|
|
1622
|
+
* @param data - 请求参数,包含web_rid、room_id
|
|
1623
|
+
* @returns 完整的接口URL
|
|
1624
|
+
*/
|
|
1319
1625
|
\u76F4\u64AD\u95F4\u4FE1\u606F(data2) {
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1626
|
+
const baseUrl = "https://live.douyin.com/webcast/room/web/enter/";
|
|
1627
|
+
const params = {
|
|
1628
|
+
aid: "6383",
|
|
1629
|
+
app_name: "douyin_web",
|
|
1630
|
+
live_id: "1",
|
|
1631
|
+
device_platform: "web",
|
|
1632
|
+
language: "zh-CN",
|
|
1633
|
+
enter_from: "web_share_link",
|
|
1634
|
+
cookie_enabled: "true",
|
|
1635
|
+
screen_width: "2048",
|
|
1636
|
+
screen_height: "1152",
|
|
1637
|
+
browser_language: "zh-CN",
|
|
1638
|
+
browser_platform: "Win32",
|
|
1639
|
+
browser_name: "Chrome",
|
|
1640
|
+
browser_version: "125.0.0.0",
|
|
1641
|
+
web_rid: data2.web_rid,
|
|
1642
|
+
room_id_str: data2.room_id,
|
|
1643
|
+
enter_source: "",
|
|
1644
|
+
is_need_double_stream: "false",
|
|
1645
|
+
insert_task_id: "",
|
|
1646
|
+
live_reason: "",
|
|
1647
|
+
msToken: douyinSign.Mstoken(116),
|
|
1648
|
+
verifyFp: fp,
|
|
1649
|
+
fp
|
|
1650
|
+
};
|
|
1651
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1323
1652
|
}
|
|
1653
|
+
/**
|
|
1654
|
+
* 获取申请二维码的接口地址
|
|
1655
|
+
* @param data - 请求参数,包含verify_fp
|
|
1656
|
+
* @returns 完整的接口URL
|
|
1657
|
+
*/
|
|
1324
1658
|
\u7533\u8BF7\u4E8C\u7EF4\u7801(data2) {
|
|
1325
|
-
|
|
1659
|
+
const baseUrl = "https://sso.douyin.com/get_qrcode/";
|
|
1660
|
+
const params = {
|
|
1661
|
+
verifyFp: data2.verify_fp,
|
|
1662
|
+
fp: data2.verify_fp
|
|
1663
|
+
};
|
|
1664
|
+
return `${baseUrl}?${buildQueryString(params)}`;
|
|
1326
1665
|
}
|
|
1327
1666
|
};
|
|
1667
|
+
var createDouyinApiUrls = (userAgent) => {
|
|
1668
|
+
return new DouyinAPI(userAgent);
|
|
1669
|
+
};
|
|
1328
1670
|
var douyinApiUrls = new DouyinAPI();
|
|
1329
1671
|
|
|
1330
1672
|
// src/platform/douyin/getdata.ts
|
|
1331
1673
|
var DouyinData = async (data2, cookie, requestConfig) => {
|
|
1332
|
-
var _a, _b, _c, _d;
|
|
1674
|
+
var _a, _b, _c, _d, _e;
|
|
1333
1675
|
const defHeaders = getDouyinDefaultConfig(cookie)["headers"];
|
|
1334
1676
|
const baseRequestConfig = {
|
|
1335
1677
|
method: "GET",
|
|
@@ -1340,20 +1682,22 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1340
1682
|
...(requestConfig == null ? void 0 : requestConfig.headers) || {}
|
|
1341
1683
|
}
|
|
1342
1684
|
};
|
|
1685
|
+
const userAgent = (_a = baseRequestConfig.headers) == null ? void 0 : _a["User-Agent"];
|
|
1686
|
+
const douyinApiUrls3 = createDouyinApiUrls(userAgent);
|
|
1343
1687
|
switch (data2.methodType) {
|
|
1344
1688
|
case "\u805A\u5408\u89E3\u6790":
|
|
1345
1689
|
case "\u89C6\u9891\u4F5C\u54C1\u6570\u636E":
|
|
1346
1690
|
case "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E":
|
|
1347
1691
|
case "\u5408\u8F91\u4F5C\u54C1\u6570\u636E": {
|
|
1348
|
-
const url =
|
|
1692
|
+
const url = douyinApiUrls3.\u89C6\u9891\u6216\u56FE\u96C6({ aweme_id: data2.aweme_id });
|
|
1349
1693
|
const VideoData = await GlobalGetData2(data2.methodType, {
|
|
1350
1694
|
...baseRequestConfig,
|
|
1351
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1695
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1352
1696
|
});
|
|
1353
1697
|
return VideoData;
|
|
1354
1698
|
}
|
|
1355
1699
|
case "\u8BC4\u8BBA\u6570\u636E": {
|
|
1356
|
-
const urlGenerator = (params) =>
|
|
1700
|
+
const urlGenerator = (params) => douyinApiUrls3.\u8BC4\u8BBA(params);
|
|
1357
1701
|
const response = await fetchPaginatedData(
|
|
1358
1702
|
data2.methodType,
|
|
1359
1703
|
urlGenerator,
|
|
@@ -1364,7 +1708,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1364
1708
|
return response;
|
|
1365
1709
|
}
|
|
1366
1710
|
case "\u6307\u5B9A\u8BC4\u8BBA\u56DE\u590D\u6570\u636E": {
|
|
1367
|
-
const urlGenerator = (params) =>
|
|
1711
|
+
const urlGenerator = (params) => douyinApiUrls3.\u4E8C\u7EA7\u8BC4\u8BBA(params);
|
|
1368
1712
|
const customConfig = {
|
|
1369
1713
|
...baseRequestConfig,
|
|
1370
1714
|
headers: {
|
|
@@ -1385,7 +1729,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1385
1729
|
return response;
|
|
1386
1730
|
}
|
|
1387
1731
|
case "\u7528\u6237\u4E3B\u9875\u6570\u636E": {
|
|
1388
|
-
const url =
|
|
1732
|
+
const url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1389
1733
|
const customConfig = {
|
|
1390
1734
|
...baseRequestConfig,
|
|
1391
1735
|
headers: {
|
|
@@ -1398,12 +1742,12 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1398
1742
|
};
|
|
1399
1743
|
const UserInfoData = await GlobalGetData2(data2.methodType, {
|
|
1400
1744
|
...customConfig,
|
|
1401
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1745
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1402
1746
|
});
|
|
1403
1747
|
return UserInfoData;
|
|
1404
1748
|
}
|
|
1405
1749
|
case "Emoji\u6570\u636E": {
|
|
1406
|
-
const url =
|
|
1750
|
+
const url = douyinApiUrls3.\u8868\u60C5();
|
|
1407
1751
|
const EmojiData = await GlobalGetData2(data2.methodType, {
|
|
1408
1752
|
...baseRequestConfig,
|
|
1409
1753
|
url
|
|
@@ -1411,7 +1755,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1411
1755
|
return EmojiData;
|
|
1412
1756
|
}
|
|
1413
1757
|
case "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E": {
|
|
1414
|
-
const url =
|
|
1758
|
+
const url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u89C6\u9891({ sec_uid: data2.sec_uid });
|
|
1415
1759
|
const customConfig = {
|
|
1416
1760
|
...baseRequestConfig,
|
|
1417
1761
|
headers: {
|
|
@@ -1423,12 +1767,12 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1423
1767
|
};
|
|
1424
1768
|
const UserVideoListData = await GlobalGetData2(data2.methodType, {
|
|
1425
1769
|
...customConfig,
|
|
1426
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1770
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1427
1771
|
});
|
|
1428
1772
|
return UserVideoListData;
|
|
1429
1773
|
}
|
|
1430
1774
|
case "\u70ED\u70B9\u8BCD\u6570\u636E": {
|
|
1431
|
-
const url =
|
|
1775
|
+
const url = douyinApiUrls3.\u70ED\u70B9\u8BCD({ query: data2.query, number: data2.number ?? 10 });
|
|
1432
1776
|
const customConfig = {
|
|
1433
1777
|
...baseRequestConfig,
|
|
1434
1778
|
headers: {
|
|
@@ -1440,7 +1784,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1440
1784
|
};
|
|
1441
1785
|
const SuggestWordsData = await GlobalGetData2(data2.methodType, {
|
|
1442
1786
|
...customConfig,
|
|
1443
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1787
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1444
1788
|
});
|
|
1445
1789
|
return SuggestWordsData;
|
|
1446
1790
|
}
|
|
@@ -1460,16 +1804,16 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1460
1804
|
};
|
|
1461
1805
|
while (fetchedSearchList.length < Number(data2.number ?? 10)) {
|
|
1462
1806
|
const requestCount = Math.min(Number(data2.number ?? 50) - fetchedSearchList.length, maxPageSize);
|
|
1463
|
-
const url =
|
|
1807
|
+
const url = douyinApiUrls3.\u641C\u7D22({
|
|
1464
1808
|
query: data2.query,
|
|
1465
1809
|
number: requestCount,
|
|
1466
1810
|
search_id: search_id === "" ? void 0 : search_id
|
|
1467
1811
|
});
|
|
1468
1812
|
const response = await GlobalGetData2(data2.methodType, {
|
|
1469
1813
|
...customConfig,
|
|
1470
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1814
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1471
1815
|
});
|
|
1472
|
-
if (((
|
|
1816
|
+
if (((_b = response.data) == null ? void 0 : _b.length) === 0) {
|
|
1473
1817
|
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);
|
|
1474
1818
|
return false;
|
|
1475
1819
|
}
|
|
@@ -1478,7 +1822,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1478
1822
|
}
|
|
1479
1823
|
fetchedSearchList.push(...response.data);
|
|
1480
1824
|
tmpresp = response;
|
|
1481
|
-
search_id = (
|
|
1825
|
+
search_id = (_c = response.log_pb) == null ? void 0 : _c.impr_id;
|
|
1482
1826
|
}
|
|
1483
1827
|
const finalResponse = {
|
|
1484
1828
|
...tmpresp,
|
|
@@ -1487,24 +1831,24 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1487
1831
|
return finalResponse;
|
|
1488
1832
|
}
|
|
1489
1833
|
case "\u52A8\u6001\u8868\u60C5\u6570\u636E": {
|
|
1490
|
-
const url =
|
|
1834
|
+
const url = douyinApiUrls3.\u4E92\u52A8\u8868\u60C5();
|
|
1491
1835
|
const ExpressionPlusData = await GlobalGetData2(data2.methodType, {
|
|
1492
1836
|
...baseRequestConfig,
|
|
1493
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1837
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1494
1838
|
});
|
|
1495
1839
|
return ExpressionPlusData;
|
|
1496
1840
|
}
|
|
1497
1841
|
case "\u97F3\u4E50\u6570\u636E": {
|
|
1498
|
-
const url =
|
|
1842
|
+
const url = douyinApiUrls3.\u80CC\u666F\u97F3\u4E50({ music_id: data2.music_id });
|
|
1499
1843
|
const MusicData = await GlobalGetData2(data2.methodType, {
|
|
1500
1844
|
...baseRequestConfig,
|
|
1501
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1845
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1502
1846
|
});
|
|
1503
1847
|
return MusicData;
|
|
1504
1848
|
}
|
|
1505
1849
|
case "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E": {
|
|
1506
|
-
let url =
|
|
1507
|
-
const fetchUrl = `${url}&a_bogus=${douyinSign.AB(url)}`;
|
|
1850
|
+
let url = douyinApiUrls3.\u7528\u6237\u4E3B\u9875\u4FE1\u606F({ sec_uid: data2.sec_uid });
|
|
1851
|
+
const fetchUrl = `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`;
|
|
1508
1852
|
const customConfig = {
|
|
1509
1853
|
...baseRequestConfig,
|
|
1510
1854
|
headers: {
|
|
@@ -1518,8 +1862,8 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1518
1862
|
...customConfig,
|
|
1519
1863
|
url: fetchUrl
|
|
1520
1864
|
});
|
|
1521
|
-
if (!((
|
|
1522
|
-
logger.error((((
|
|
1865
|
+
if (!((_d = UserInfoData == null ? void 0 : UserInfoData.user) == null ? void 0 : _d.live_status) || UserInfoData.user.live_status !== 1) {
|
|
1866
|
+
logger.error((((_e = UserInfoData == null ? void 0 : UserInfoData.user) == null ? void 0 : _e.nickname) || "\u7528\u6237") + "\u5F53\u524D\u672A\u5728\u76F4\u64AD");
|
|
1523
1867
|
const Err = {
|
|
1524
1868
|
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')",
|
|
1525
1869
|
requestType: data2.methodType ?? "\u672A\u77E5\u8BF7\u6C42\u7C7B\u578B",
|
|
@@ -1541,7 +1885,7 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1541
1885
|
};
|
|
1542
1886
|
}
|
|
1543
1887
|
const room_data = JSON.parse(UserInfoData.user.room_data);
|
|
1544
|
-
url =
|
|
1888
|
+
url = douyinApiUrls3.\u76F4\u64AD\u95F4\u4FE1\u606F({ room_id: UserInfoData.user.room_id_str, web_rid: room_data.owner.web_rid });
|
|
1545
1889
|
const liveCustomConfig = {
|
|
1546
1890
|
...baseRequestConfig,
|
|
1547
1891
|
headers: {
|
|
@@ -1553,15 +1897,15 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1553
1897
|
};
|
|
1554
1898
|
const LiveRoomData = await GlobalGetData2(data2.methodType, {
|
|
1555
1899
|
...liveCustomConfig,
|
|
1556
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1900
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1557
1901
|
});
|
|
1558
1902
|
return LiveRoomData;
|
|
1559
1903
|
}
|
|
1560
1904
|
case "\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E": {
|
|
1561
|
-
const url =
|
|
1905
|
+
const url = douyinApiUrls3.\u7533\u8BF7\u4E8C\u7EF4\u7801({ verify_fp: data2.verify_fp });
|
|
1562
1906
|
const LoginQrcodeStatusData = await GlobalGetData2(data2.methodType, {
|
|
1563
1907
|
...baseRequestConfig,
|
|
1564
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1908
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1565
1909
|
});
|
|
1566
1910
|
return LoginQrcodeStatusData;
|
|
1567
1911
|
}
|
|
@@ -1572,9 +1916,11 @@ var DouyinData = async (data2, cookie, requestConfig) => {
|
|
|
1572
1916
|
}
|
|
1573
1917
|
};
|
|
1574
1918
|
var fetchPaginatedData = async (type, apiUrlGenerator, params, maxPageSize, requestConfig) => {
|
|
1919
|
+
var _a;
|
|
1575
1920
|
let cursor = params.cursor ?? 0;
|
|
1576
1921
|
let fetchedData = [];
|
|
1577
1922
|
let tmpresp = {};
|
|
1923
|
+
const userAgent = (_a = requestConfig.headers) == null ? void 0 : _a["User-Agent"];
|
|
1578
1924
|
while (fetchedData.length < Number(params.number ?? maxPageSize)) {
|
|
1579
1925
|
const requestCount = Math.min(Number(params.number ?? maxPageSize) - fetchedData.length, maxPageSize);
|
|
1580
1926
|
const url = apiUrlGenerator({
|
|
@@ -1584,7 +1930,7 @@ var fetchPaginatedData = async (type, apiUrlGenerator, params, maxPageSize, requ
|
|
|
1584
1930
|
});
|
|
1585
1931
|
const response = await GlobalGetData2(type, {
|
|
1586
1932
|
...requestConfig,
|
|
1587
|
-
url: `${url}&a_bogus=${douyinSign.AB(url)}`
|
|
1933
|
+
url: `${url}&a_bogus=${douyinSign.AB(url, userAgent)}`
|
|
1588
1934
|
});
|
|
1589
1935
|
fetchedData.push(...response.comments || response.data || []);
|
|
1590
1936
|
tmpresp = response;
|