@iflyrpa/actions 4.0.4-beta.0 → 4.0.4-beta.2
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/actions/searchAccountInfo/getDouyinInfo.d.ts +16 -0
- package/dist/actions/searchAccountInfo/getShipinhaoInfo.d.ts +14 -0
- package/dist/actions/searchAccountInfo/index.d.ts +4 -2
- package/dist/actions/searchAccountInfo/types.d.ts +21 -1
- package/dist/actions/shipinhaoPublish/uploader.d.ts +4 -0
- package/dist/bundle.js +273 -46
- package/dist/bundle.js.map +1 -1
- package/dist/index.d.ts +16 -0
- package/dist/index.js +273 -46
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +273 -46
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -292,6 +292,22 @@ export declare class Action {
|
|
|
292
292
|
readNumYesterday: number | null;
|
|
293
293
|
likeNumYesterday: number | null;
|
|
294
294
|
commentNumYesterday: number | null;
|
|
295
|
+
} | {
|
|
296
|
+
fansNum: number;
|
|
297
|
+
favedNum: number;
|
|
298
|
+
fansNumLastWeek: number;
|
|
299
|
+
watchNumLastWeek: number;
|
|
300
|
+
likeNumLastWeek: number;
|
|
301
|
+
commentNumLastWeek: number;
|
|
302
|
+
shareNumLastWeek: number;
|
|
303
|
+
visitNumLastWeek: number;
|
|
304
|
+
} | {
|
|
305
|
+
fansNum: number;
|
|
306
|
+
feedsCount: number;
|
|
307
|
+
fansNumYesterday: number | null;
|
|
308
|
+
playNumYesterday: number | null;
|
|
309
|
+
likeNumYesterday: number | null;
|
|
310
|
+
commentNumYesterday: number | null;
|
|
295
311
|
} | null>>;
|
|
296
312
|
TTSessionCheck(params: ActiomCommonParams): Promise<ResponseData<{
|
|
297
313
|
isValidSession: boolean;
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4ae3c988-17b7-56c2-b8eb-b8828dfa6862")}catch(e){}}();
|
|
1
3
|
var __webpack_modules__ = {
|
|
2
4
|
"./src/utils/XhsXsCommonEnc.js": function(module) {
|
|
3
5
|
var encrypt_lookup = [
|
|
@@ -4398,7 +4400,7 @@ var __webpack_exports__ = {};
|
|
|
4398
4400
|
});
|
|
4399
4401
|
const package_json_namespaceObject = require("@iflyrpa/share/package.json");
|
|
4400
4402
|
var package_json_default = /*#__PURE__*/ __webpack_require__.n(package_json_namespaceObject);
|
|
4401
|
-
var package_namespaceObject = JSON.parse('{"i8":"4.0.4-beta.
|
|
4403
|
+
var package_namespaceObject = JSON.parse('{"i8":"4.0.4-beta.2"}');
|
|
4402
4404
|
const share_namespaceObject = require("@iflyrpa/share");
|
|
4403
4405
|
const external_node_fs_namespaceObject = require("node:fs");
|
|
4404
4406
|
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
@@ -4647,11 +4649,12 @@ var __webpack_exports__ = {};
|
|
|
4647
4649
|
this.logger?.debug(`未处理的网络错误代码: ${error.code} ${error.message}`, {
|
|
4648
4650
|
errorString: stringifyError(error)
|
|
4649
4651
|
});
|
|
4650
|
-
_message =
|
|
4652
|
+
_message = `网络错误: ${error.message}`;
|
|
4651
4653
|
break;
|
|
4652
4654
|
}
|
|
4653
4655
|
}
|
|
4654
|
-
|
|
4656
|
+
if (error.code && !error.response?.data) errorResponse.message = _message || errorResponse.message;
|
|
4657
|
+
else errorResponse.message = errorResponse.message ? errorResponse.message : _message;
|
|
4655
4658
|
if ("canceled" === errorResponse.message) {
|
|
4656
4659
|
const message = errorResponse.extra?.isProxyRequest ? "代理连接建立超时,请更换区域或稍后重试!" : "网络请求超时,请稍后重试!";
|
|
4657
4660
|
errorResponse.message = message;
|
|
@@ -15359,6 +15362,199 @@ var __webpack_exports__ = {};
|
|
|
15359
15362
|
};
|
|
15360
15363
|
return (0, share_namespaceObject.success)(bjhData, "百家号平台数据获取成功!");
|
|
15361
15364
|
}
|
|
15365
|
+
async function getDouyinData(_task, params) {
|
|
15366
|
+
try {
|
|
15367
|
+
const sessionidCookie = params.cookies.find((it)=>"sessionid" === it.name)?.value;
|
|
15368
|
+
if (!sessionidCookie) return types_errorResponse("抖音账号数据异常,请重新绑定账号后重试。", 414);
|
|
15369
|
+
const csrfToken = params.cookies.find((it)=>"passport_csrf_token" === it.name)?.value || "";
|
|
15370
|
+
const headers = {
|
|
15371
|
+
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
15372
|
+
referer: "https://creator.douyin.com/creator-micro/home",
|
|
15373
|
+
origin: "https://creator.douyin.com",
|
|
15374
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
|
|
15375
|
+
...csrfToken ? {
|
|
15376
|
+
"x-secsdk-csrf-token": csrfToken
|
|
15377
|
+
} : {}
|
|
15378
|
+
};
|
|
15379
|
+
const args = [
|
|
15380
|
+
{
|
|
15381
|
+
headers
|
|
15382
|
+
},
|
|
15383
|
+
_task.logger,
|
|
15384
|
+
params.proxyLoc,
|
|
15385
|
+
params.localIP,
|
|
15386
|
+
params.accountId
|
|
15387
|
+
];
|
|
15388
|
+
const http = new Http(...args);
|
|
15389
|
+
const toNum = (val)=>{
|
|
15390
|
+
if (null == val) return 0;
|
|
15391
|
+
const n = Number.parseInt(String(val).replace(/[+,]/g, ""), 10);
|
|
15392
|
+
return Number.isNaN(n) ? 0 : n;
|
|
15393
|
+
};
|
|
15394
|
+
const userProfileP = http.api({
|
|
15395
|
+
method: "get",
|
|
15396
|
+
url: "https://www.douyin.com/aweme/v1/web/user/profile/self/",
|
|
15397
|
+
params: {
|
|
15398
|
+
device_platform: "webapp",
|
|
15399
|
+
aid: "6383",
|
|
15400
|
+
channel: "channel_pc_web",
|
|
15401
|
+
pc_client_type: "1",
|
|
15402
|
+
version_code: "170400",
|
|
15403
|
+
version_name: "17.4.0",
|
|
15404
|
+
cookie_enabled: "true",
|
|
15405
|
+
platform: "PC"
|
|
15406
|
+
}
|
|
15407
|
+
}, {
|
|
15408
|
+
retries: 3,
|
|
15409
|
+
retryDelay: 100,
|
|
15410
|
+
timeout: 10000
|
|
15411
|
+
}).catch((e)=>{
|
|
15412
|
+
_task.logger.warn(`抖音用户信息获取失败: ${e instanceof Error ? e.message : String(e)}`);
|
|
15413
|
+
return null;
|
|
15414
|
+
});
|
|
15415
|
+
const overviewP = http.api({
|
|
15416
|
+
method: "get",
|
|
15417
|
+
url: "https://creator.douyin.com/aweme/janus/creator/data/overview/all/",
|
|
15418
|
+
params: {
|
|
15419
|
+
last_days_type: 1,
|
|
15420
|
+
aid: 2906,
|
|
15421
|
+
app_name: "aweme_creator_platform",
|
|
15422
|
+
device_platform: "web"
|
|
15423
|
+
}
|
|
15424
|
+
}, {
|
|
15425
|
+
retries: 3,
|
|
15426
|
+
retryDelay: 100,
|
|
15427
|
+
timeout: 5000
|
|
15428
|
+
}).catch((e)=>{
|
|
15429
|
+
_task.logger.warn(`抖音近7日数据获取失败(可能未开通数据中心或被风控): ${e instanceof Error ? e.message : String(e)}`);
|
|
15430
|
+
return null;
|
|
15431
|
+
});
|
|
15432
|
+
const [userProfile, overview] = await Promise.all([
|
|
15433
|
+
userProfileP,
|
|
15434
|
+
overviewP
|
|
15435
|
+
]);
|
|
15436
|
+
_task.logger.info(`抖音用户信息响应: ${JSON.stringify(userProfile)}`);
|
|
15437
|
+
_task.logger.info(`抖音近7日数据响应: ${JSON.stringify(overview)}`);
|
|
15438
|
+
let fansNum = 0;
|
|
15439
|
+
let favedNum = 0;
|
|
15440
|
+
let followingNum = 0;
|
|
15441
|
+
if (userProfile?.status_code === 0 && userProfile.user) {
|
|
15442
|
+
const user = userProfile.user;
|
|
15443
|
+
fansNum = toNum(user.follower_count);
|
|
15444
|
+
followingNum = toNum(user.following_count);
|
|
15445
|
+
favedNum = toNum(user.total_favorited);
|
|
15446
|
+
_task.logger.info(`提取用户数据 - 昵称: ${user.nickname}, 粉丝: ${fansNum}, 关注: ${followingNum}, 获赞: ${favedNum}, 作品: ${user.aweme_count}`);
|
|
15447
|
+
} else _task.logger.warn(`用户信息接口返回异常: status_code=${userProfile?.status_code}, msg=${userProfile?.status_msg}`);
|
|
15448
|
+
const ov = overview?.data;
|
|
15449
|
+
const douyinData = {
|
|
15450
|
+
fansNum,
|
|
15451
|
+
favedNum,
|
|
15452
|
+
fansNumLastWeek: toNum(ov?.fans_incr?.current_count),
|
|
15453
|
+
watchNumLastWeek: toNum(ov?.play_count?.current_count),
|
|
15454
|
+
likeNumLastWeek: toNum(ov?.like_count?.current_count),
|
|
15455
|
+
commentNumLastWeek: toNum(ov?.comment_count?.current_count),
|
|
15456
|
+
shareNumLastWeek: toNum(ov?.share_count?.current_count),
|
|
15457
|
+
visitNumLastWeek: toNum(ov?.profile_visit?.current_count)
|
|
15458
|
+
};
|
|
15459
|
+
return (0, share_namespaceObject.success)(douyinData, "抖音平台数据获取成功!");
|
|
15460
|
+
} catch (error) {
|
|
15461
|
+
if (error && "object" == typeof error && "code" in error && "message" in error) {
|
|
15462
|
+
const err = error;
|
|
15463
|
+
_task.logger.error(`抖音账号数据获取失败: ${err.message} (${err.code})`);
|
|
15464
|
+
return types_errorResponse(err.message, err.code);
|
|
15465
|
+
}
|
|
15466
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
15467
|
+
_task.logger.error(`抖音账号数据获取失败: ${errMsg}`);
|
|
15468
|
+
return types_errorResponse(errMsg || "抖音账号数据获取失败");
|
|
15469
|
+
}
|
|
15470
|
+
}
|
|
15471
|
+
async function getShipinhaoData(_task, params) {
|
|
15472
|
+
try {
|
|
15473
|
+
const sessionidCookie = params.cookies.find((it)=>"sessionid" === it.name)?.value;
|
|
15474
|
+
if (!sessionidCookie) return types_errorResponse("视频号账号数据异常,请重新绑定账号后重试。", 414);
|
|
15475
|
+
const uinCookie = params.cookies.find((it)=>"uin" === it.name || "wxuin" === it.name)?.value || "0000000000";
|
|
15476
|
+
const deviceIdCookie = params.cookies.find((it)=>"device_id" === it.name || "finger_print_device_id" === it.name)?.value;
|
|
15477
|
+
const aid = params.cookies.find((it)=>"_aid" === it.name)?.value || "9d3e0e9f-b842-498d-a273-4285d58df264";
|
|
15478
|
+
const finderId = params.cookies.find((it)=>"_log_finder_id" === it.name || "finder_id" === it.name)?.value || "";
|
|
15479
|
+
const headers = {
|
|
15480
|
+
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
15481
|
+
referer: "https://channels.weixin.qq.com/platform",
|
|
15482
|
+
origin: "https://channels.weixin.qq.com",
|
|
15483
|
+
"content-type": "application/json",
|
|
15484
|
+
"X-WECHAT-UIN": uinCookie,
|
|
15485
|
+
...deviceIdCookie ? {
|
|
15486
|
+
"finger-print-device-id": deviceIdCookie
|
|
15487
|
+
} : {}
|
|
15488
|
+
};
|
|
15489
|
+
const args = [
|
|
15490
|
+
{
|
|
15491
|
+
headers
|
|
15492
|
+
},
|
|
15493
|
+
_task.logger,
|
|
15494
|
+
params.proxyLoc,
|
|
15495
|
+
params.localIP,
|
|
15496
|
+
params.accountId
|
|
15497
|
+
];
|
|
15498
|
+
const http = new Http(...args);
|
|
15499
|
+
const authData = await http.api({
|
|
15500
|
+
method: "post",
|
|
15501
|
+
url: "https://channels.weixin.qq.com/cgi-bin/mmfinderassistant-bin/auth/auth_data",
|
|
15502
|
+
params: {
|
|
15503
|
+
_aid: aid,
|
|
15504
|
+
_rid: `${Date.now().toString(16)}-${Math.random().toString(36).substring(2, 9)}`,
|
|
15505
|
+
_pageUrl: encodeURIComponent("https://channels.weixin.qq.com/platform")
|
|
15506
|
+
},
|
|
15507
|
+
data: {
|
|
15508
|
+
timestamp: Date.now().toString(),
|
|
15509
|
+
_log_finder_uin: "",
|
|
15510
|
+
_log_finder_id: finderId,
|
|
15511
|
+
rawKeyBuff: "",
|
|
15512
|
+
pluginSessionId: null,
|
|
15513
|
+
scene: 7,
|
|
15514
|
+
reqScene: 7
|
|
15515
|
+
}
|
|
15516
|
+
}, {
|
|
15517
|
+
retries: 3,
|
|
15518
|
+
retryDelay: 100,
|
|
15519
|
+
timeout: 5000
|
|
15520
|
+
});
|
|
15521
|
+
_task.logger.info(`视频号账号数据响应: ${JSON.stringify(authData)}`);
|
|
15522
|
+
const AUTH_ERROR_CODES = [
|
|
15523
|
+
300333,
|
|
15524
|
+
300334,
|
|
15525
|
+
300330,
|
|
15526
|
+
300331,
|
|
15527
|
+
300332
|
|
15528
|
+
];
|
|
15529
|
+
if (authData.errCode && AUTH_ERROR_CODES.includes(authData.errCode)) {
|
|
15530
|
+
_task.logger.warn(`视频号登录已失效:${authData.errMsg} (${authData.errCode})`);
|
|
15531
|
+
return types_errorResponse("视频号账号信息获取失败,请检查账号状态", 414);
|
|
15532
|
+
}
|
|
15533
|
+
if (authData.errCode) {
|
|
15534
|
+
_task.logger.warn(`视频号账号API错误:${authData.errMsg} (${authData.errCode})`);
|
|
15535
|
+
return types_errorResponse(`视频号账号信息获取失败:${authData.errMsg || "未知错误"}`, 414);
|
|
15536
|
+
}
|
|
15537
|
+
const finderUser = authData.data?.finderUser;
|
|
15538
|
+
const shipinhaoData = {
|
|
15539
|
+
fansNum: finderUser?.fansCount || 0,
|
|
15540
|
+
feedsCount: finderUser?.feedsCount || 0,
|
|
15541
|
+
fansNumYesterday: null,
|
|
15542
|
+
playNumYesterday: null,
|
|
15543
|
+
likeNumYesterday: null,
|
|
15544
|
+
commentNumYesterday: null
|
|
15545
|
+
};
|
|
15546
|
+
return (0, share_namespaceObject.success)(shipinhaoData, "视频号平台数据获取成功!");
|
|
15547
|
+
} catch (error) {
|
|
15548
|
+
if (error && "object" == typeof error && "code" in error && "message" in error) {
|
|
15549
|
+
const err = error;
|
|
15550
|
+
_task.logger.error(`视频号账号数据获取失败: ${err.message} (${err.code})`);
|
|
15551
|
+
return types_errorResponse(err.message, err.code);
|
|
15552
|
+
}
|
|
15553
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
15554
|
+
_task.logger.error(`视频号账号数据获取失败: ${errMsg}`);
|
|
15555
|
+
return types_errorResponse(errMsg || "视频号账号数据获取失败");
|
|
15556
|
+
}
|
|
15557
|
+
}
|
|
15362
15558
|
async function getToutiaoData(_task, params) {
|
|
15363
15559
|
const http = new Http({
|
|
15364
15560
|
headers: {
|
|
@@ -15457,7 +15653,7 @@ var __webpack_exports__ = {};
|
|
|
15457
15653
|
userInfoHtmlPromise,
|
|
15458
15654
|
userSummaryHtmlPromise
|
|
15459
15655
|
]);
|
|
15460
|
-
if (userInfoHtml.includes("请重新<a id='jumpUrl' href='/'>登录</a>")) return types_errorResponse("
|
|
15656
|
+
if (userInfoHtml.includes("请重新<a id='jumpUrl' href='/'>登录</a>")) return types_errorResponse("微信公众号数据获取失败,请检查账号状态", 414);
|
|
15461
15657
|
const userInfoJson = exportWxCgiData(userInfoHtml);
|
|
15462
15658
|
const userSummaryJson = exportWxCgiData(userSummaryHtml);
|
|
15463
15659
|
const wxData = {
|
|
@@ -15534,7 +15730,9 @@ var __webpack_exports__ = {};
|
|
|
15534
15730
|
"toutiao",
|
|
15535
15731
|
"xiaohongshu",
|
|
15536
15732
|
"weixin",
|
|
15537
|
-
"baijiahao"
|
|
15733
|
+
"baijiahao",
|
|
15734
|
+
"douyin",
|
|
15735
|
+
"shipinhao"
|
|
15538
15736
|
])
|
|
15539
15737
|
});
|
|
15540
15738
|
const SearchAccountInfo = async (_task, params)=>{
|
|
@@ -15548,6 +15746,10 @@ var __webpack_exports__ = {};
|
|
|
15548
15746
|
return getWeixinData(_task, params);
|
|
15549
15747
|
case "baijiahao":
|
|
15550
15748
|
return getBaijiahaoData(_task, params);
|
|
15749
|
+
case "douyin":
|
|
15750
|
+
return getDouyinData(_task, params);
|
|
15751
|
+
case "shipinhao":
|
|
15752
|
+
return getShipinhaoData(_task, params);
|
|
15551
15753
|
default:
|
|
15552
15754
|
return (0, share_namespaceObject.success)(null, "暂不支持该平台");
|
|
15553
15755
|
}
|
|
@@ -15811,21 +16013,6 @@ var __webpack_exports__ = {};
|
|
|
15811
16013
|
params.accountId
|
|
15812
16014
|
];
|
|
15813
16015
|
const http = new Http(...args);
|
|
15814
|
-
let authorUid = "";
|
|
15815
|
-
try {
|
|
15816
|
-
const userInfo = await http.api({
|
|
15817
|
-
method: "get",
|
|
15818
|
-
url: "https://creator.douyin.com/aweme/v1/creator/user/info/"
|
|
15819
|
-
}, {
|
|
15820
|
-
retries: 3,
|
|
15821
|
-
retryDelay: 100,
|
|
15822
|
-
timeout: 5000
|
|
15823
|
-
});
|
|
15824
|
-
authorUid = userInfo.user_profile?.unique_id || "";
|
|
15825
|
-
if (!userInfo.has_data_mgmt_perm) _task.logger.warn("抖音账号未开通数据中心权限,近7日数据不可用");
|
|
15826
|
-
} catch (error) {
|
|
15827
|
-
_task.logger.warn("获取抖音用户信息失败");
|
|
15828
|
-
}
|
|
15829
16016
|
async function fetchWorks(cursor) {
|
|
15830
16017
|
return await http.api({
|
|
15831
16018
|
method: "get",
|
|
@@ -15844,25 +16031,31 @@ var __webpack_exports__ = {};
|
|
|
15844
16031
|
timeout: 5000
|
|
15845
16032
|
});
|
|
15846
16033
|
}
|
|
15847
|
-
const
|
|
15848
|
-
const
|
|
15849
|
-
|
|
16034
|
+
const isHasMore = (v)=>true === v || 1 === v;
|
|
16035
|
+
const skipCount = (pageNum - 1) * pageSize;
|
|
16036
|
+
const needCount = skipCount + pageSize;
|
|
16037
|
+
const workListResponse = await fetchWorks(0);
|
|
16038
|
+
if (!workListResponse || !Array.isArray(workListResponse.aweme_list)) return searchPublishInfo_types_errorResponse("抖音数据获取失败,请检查账号状态", 414);
|
|
15850
16039
|
const allWorks = [
|
|
15851
16040
|
...workListResponse.aweme_list
|
|
15852
16041
|
];
|
|
15853
|
-
let hasMore = workListResponse.has_more;
|
|
15854
|
-
let currentCursor = workListResponse.max_cursor;
|
|
15855
|
-
|
|
16042
|
+
let hasMore = isHasMore(workListResponse.has_more);
|
|
16043
|
+
let currentCursor = workListResponse.cursor ?? workListResponse.max_cursor ?? 0;
|
|
16044
|
+
let guard = 0;
|
|
16045
|
+
while(allWorks.length < needCount && hasMore && guard < 20){
|
|
15856
16046
|
const nextPageResponse = await fetchWorks(currentCursor);
|
|
16047
|
+
if (!Array.isArray(nextPageResponse.aweme_list) || 0 === nextPageResponse.aweme_list.length) break;
|
|
15857
16048
|
allWorks.push(...nextPageResponse.aweme_list);
|
|
15858
|
-
hasMore = nextPageResponse.has_more;
|
|
15859
|
-
currentCursor = nextPageResponse.max_cursor;
|
|
15860
|
-
|
|
16049
|
+
hasMore = isHasMore(nextPageResponse.has_more);
|
|
16050
|
+
currentCursor = nextPageResponse.cursor ?? nextPageResponse.max_cursor ?? currentCursor;
|
|
16051
|
+
guard++;
|
|
15861
16052
|
}
|
|
15862
|
-
const finalWorks = allWorks.slice(
|
|
16053
|
+
const finalWorks = allWorks.slice(skipCount, needCount);
|
|
15863
16054
|
const articleCell = finalWorks.map((item)=>{
|
|
15864
16055
|
const workDetailUrl = `https://creator.douyin.com/creator-micro/work-management/work-detail/${item.aweme_id}`;
|
|
15865
|
-
const workPublicUrl =
|
|
16056
|
+
const workPublicUrl = item.share_url || `https://www.douyin.com/video/${item.aweme_id}`;
|
|
16057
|
+
let statusText;
|
|
16058
|
+
statusText = item.status?.is_delete ? "deleted" : item.status?.is_private ? "private" : item.status?.in_reviewing ? "reviewing" : "public";
|
|
15866
16059
|
return {
|
|
15867
16060
|
title: item.desc || "无作品描述",
|
|
15868
16061
|
imageUrl: item.Cover?.url_list?.[0] || "",
|
|
@@ -15874,9 +16067,9 @@ var __webpack_exports__ = {};
|
|
|
15874
16067
|
shareNum: item.statistics?.share_count || 0,
|
|
15875
16068
|
collectNum: item.statistics?.collect_count || 0,
|
|
15876
16069
|
awemeId: item.aweme_id,
|
|
15877
|
-
awemeType: item.aweme_type,
|
|
16070
|
+
awemeType: item.aweme_type ?? 0,
|
|
15878
16071
|
duration: item.duration,
|
|
15879
|
-
status:
|
|
16072
|
+
status: statusText,
|
|
15880
16073
|
publicUrl: workPublicUrl,
|
|
15881
16074
|
...showOriginalData ? {
|
|
15882
16075
|
originalData: item
|
|
@@ -15887,8 +16080,8 @@ var __webpack_exports__ = {};
|
|
|
15887
16080
|
articleCell,
|
|
15888
16081
|
...onlySuccess ? {
|
|
15889
16082
|
pagination: {
|
|
15890
|
-
total: workListResponse.total ||
|
|
15891
|
-
nextPage:
|
|
16083
|
+
total: workListResponse.total || allWorks.length,
|
|
16084
|
+
nextPage: hasMore,
|
|
15892
16085
|
pageNum,
|
|
15893
16086
|
pageSize
|
|
15894
16087
|
}
|
|
@@ -15984,14 +16177,21 @@ var __webpack_exports__ = {};
|
|
|
15984
16177
|
const needArticle = "all" === postType || "article" === postType;
|
|
15985
16178
|
const AUTH_ERROR_CODES = [
|
|
15986
16179
|
300333,
|
|
15987
|
-
300334
|
|
16180
|
+
300334,
|
|
16181
|
+
300330,
|
|
16182
|
+
300331,
|
|
16183
|
+
300332
|
|
15988
16184
|
];
|
|
15989
16185
|
if (needVideo) try {
|
|
15990
16186
|
const videoPageUrl = "https://channels.weixin.qq.com/micro/content/post/list";
|
|
15991
16187
|
const videoResponse = await fetchPosts(pageNum, 11, videoPageUrl);
|
|
16188
|
+
_task.logger.info(`视频号视频获取响应:${JSON.stringify(videoResponse)}`);
|
|
15992
16189
|
if (videoResponse.errCode && AUTH_ERROR_CODES.includes(videoResponse.errCode)) throw new Error(`AUTH_ERROR:${videoResponse.errMsg || "登录已失效"}`);
|
|
15993
|
-
if (videoResponse.errCode)
|
|
15994
|
-
|
|
16190
|
+
if (videoResponse.errCode) {
|
|
16191
|
+
_task.logger.warn(`视频号API错误:${videoResponse.errMsg} (${videoResponse.errCode})`);
|
|
16192
|
+
throw new Error(`视频号API错误:${videoResponse.errMsg} (${videoResponse.errCode})`);
|
|
16193
|
+
}
|
|
16194
|
+
{
|
|
15995
16195
|
const posts = videoResponse.data?.list || videoResponse.posts || videoResponse.post_list || [];
|
|
15996
16196
|
const videoArticles = posts.filter((item)=>item.createTime || item.create_time).map((item)=>mapPost(item, "video"));
|
|
15997
16197
|
allArticles.push(...videoArticles);
|
|
@@ -16006,8 +16206,11 @@ var __webpack_exports__ = {};
|
|
|
16006
16206
|
const articlePageUrl = "https://channels.weixin.qq.com/micro/content/post/finderNewLifePostList";
|
|
16007
16207
|
const articleResponse = await fetchPosts(pageNum, 10, articlePageUrl);
|
|
16008
16208
|
if (articleResponse.errCode && AUTH_ERROR_CODES.includes(articleResponse.errCode)) throw new Error(`AUTH_ERROR:${articleResponse.errMsg || "登录已失效"}`);
|
|
16009
|
-
if (articleResponse.errCode)
|
|
16010
|
-
|
|
16209
|
+
if (articleResponse.errCode) {
|
|
16210
|
+
_task.logger.warn(`视频号图文API错误:${articleResponse.errMsg} (${articleResponse.errCode})`);
|
|
16211
|
+
throw new Error(`视频号图文API错误:${articleResponse.errMsg} (${articleResponse.errCode})`);
|
|
16212
|
+
}
|
|
16213
|
+
{
|
|
16011
16214
|
const posts = articleResponse.data?.list || articleResponse.posts || articleResponse.post_list || [];
|
|
16012
16215
|
const articleArticles = posts.filter((item)=>item.createTime || item.create_time).map((item)=>mapPost(item, "article"));
|
|
16013
16216
|
allArticles.push(...articleArticles);
|
|
@@ -17896,6 +18099,11 @@ var __webpack_exports__ = {};
|
|
|
17896
18099
|
this.concurrentLimit = config.concurrentLimit || 4;
|
|
17897
18100
|
this.singleFileSize = config.singleFileSize || 10485760;
|
|
17898
18101
|
this.http = config.http || new Http();
|
|
18102
|
+
this.reqOptions = {
|
|
18103
|
+
timeout: config.timeout ?? 60000,
|
|
18104
|
+
retries: config.retries ?? 3,
|
|
18105
|
+
retryDelay: config.retryDelay ?? 2000
|
|
18106
|
+
};
|
|
17899
18107
|
}
|
|
17900
18108
|
calculateMd5(buffer) {
|
|
17901
18109
|
const MAX_SIZE = 5242880;
|
|
@@ -17952,7 +18160,7 @@ var __webpack_exports__ = {};
|
|
|
17952
18160
|
url: filePath,
|
|
17953
18161
|
method: "get",
|
|
17954
18162
|
responseType: "arraybuffer"
|
|
17955
|
-
});
|
|
18163
|
+
}, this.reqOptions);
|
|
17956
18164
|
return Buffer.from(resp);
|
|
17957
18165
|
}
|
|
17958
18166
|
return external_node_fs_default().promises.readFile(filePath);
|
|
@@ -17982,7 +18190,7 @@ var __webpack_exports__ = {};
|
|
|
17982
18190
|
headers,
|
|
17983
18191
|
data: requestBody,
|
|
17984
18192
|
defaultErrorMsg: "获取UploadID失败"
|
|
17985
|
-
});
|
|
18193
|
+
}, this.reqOptions);
|
|
17986
18194
|
if (!resp?.UploadID) throw new Error(`获取 UploadID 失败: ${resp?.errMsg || "未知错误"}`);
|
|
17987
18195
|
return resp.UploadID;
|
|
17988
18196
|
}
|
|
@@ -18003,7 +18211,7 @@ var __webpack_exports__ = {};
|
|
|
18003
18211
|
headers,
|
|
18004
18212
|
data: chunk,
|
|
18005
18213
|
defaultErrorMsg: `分片 ${partNumber} 上传失败`
|
|
18006
|
-
});
|
|
18214
|
+
}, this.reqOptions);
|
|
18007
18215
|
if (resp?.errCode !== void 0 && 0 !== resp.errCode) throw new Error(`分片 ${partNumber} 上传失败: ${resp.errMsg}`);
|
|
18008
18216
|
if (onProgress) onProgress(chunk.length);
|
|
18009
18217
|
return resp.ETag || "";
|
|
@@ -18027,7 +18235,7 @@ var __webpack_exports__ = {};
|
|
|
18027
18235
|
headers,
|
|
18028
18236
|
data: requestBody,
|
|
18029
18237
|
defaultErrorMsg: "确认分片上传失败"
|
|
18030
|
-
});
|
|
18238
|
+
}, this.reqOptions);
|
|
18031
18239
|
if (resp?.ListPartsResult?.Part) return resp.ListPartsResult.Part.map((p)=>({
|
|
18032
18240
|
PartNumber: parseInt(p.PartNumber),
|
|
18033
18241
|
ETag: p.ETag
|
|
@@ -18053,7 +18261,7 @@ var __webpack_exports__ = {};
|
|
|
18053
18261
|
headers,
|
|
18054
18262
|
data: requestBody,
|
|
18055
18263
|
defaultErrorMsg: "完成上传失败"
|
|
18056
|
-
});
|
|
18264
|
+
}, this.reqOptions);
|
|
18057
18265
|
if (!resp?.DownloadURL) throw new Error(`完成上传失败: ${resp?.errMsg || "未知错误"}`);
|
|
18058
18266
|
return resp.DownloadURL;
|
|
18059
18267
|
}
|
|
@@ -25058,6 +25266,24 @@ var __webpack_exports__ = {};
|
|
|
25058
25266
|
likeNumYesterday: schemas_number().nullable(),
|
|
25059
25267
|
commentNumYesterday: schemas_number().nullable()
|
|
25060
25268
|
});
|
|
25269
|
+
schemas_object({
|
|
25270
|
+
fansNum: schemas_number(),
|
|
25271
|
+
favedNum: schemas_number(),
|
|
25272
|
+
fansNumLastWeek: schemas_number(),
|
|
25273
|
+
watchNumLastWeek: schemas_number(),
|
|
25274
|
+
likeNumLastWeek: schemas_number(),
|
|
25275
|
+
commentNumLastWeek: schemas_number(),
|
|
25276
|
+
shareNumLastWeek: schemas_number(),
|
|
25277
|
+
visitNumLastWeek: schemas_number()
|
|
25278
|
+
});
|
|
25279
|
+
schemas_object({
|
|
25280
|
+
fansNum: schemas_number(),
|
|
25281
|
+
feedsCount: schemas_number(),
|
|
25282
|
+
fansNumYesterday: schemas_number().nullable(),
|
|
25283
|
+
playNumYesterday: schemas_number().nullable(),
|
|
25284
|
+
likeNumYesterday: schemas_number().nullable(),
|
|
25285
|
+
commentNumYesterday: schemas_number().nullable()
|
|
25286
|
+
});
|
|
25061
25287
|
const BetaFlag = "HuiwenCanary";
|
|
25062
25288
|
class Action {
|
|
25063
25289
|
constructor(task){
|
|
@@ -25346,4 +25572,5 @@ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_targe
|
|
|
25346
25572
|
value: true
|
|
25347
25573
|
});
|
|
25348
25574
|
|
|
25349
|
-
//# sourceMappingURL=index.js.map
|
|
25575
|
+
//# sourceMappingURL=index.js.map
|
|
25576
|
+
//# debugId=4ae3c988-17b7-56c2-b8eb-b8828dfa6862
|