@iflyrpa/actions 4.0.4-beta.7 → 4.0.4
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/bundle.js +123 -133
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +123 -133
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +123 -133
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/*! For license information please see bundle.js.LICENSE.txt */
|
|
2
|
+
|
|
3
|
+
!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]="aed90b90-6fd5-5e1b-ba81-6ede67b0dc32")}catch(e){}}();
|
|
2
4
|
var __webpack_modules__ = {
|
|
3
5
|
"../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js": function(__unused_webpack_module, exports1, __webpack_require__) {
|
|
4
6
|
"use strict";
|
|
@@ -12490,7 +12492,9 @@ var __webpack_exports__ = {};
|
|
|
12490
12492
|
var package_namespaceObject = {
|
|
12491
12493
|
i8: "0.1.2"
|
|
12492
12494
|
};
|
|
12493
|
-
var package_namespaceObject_0 =
|
|
12495
|
+
var package_namespaceObject_0 = {
|
|
12496
|
+
i8: "4.0.4"
|
|
12497
|
+
};
|
|
12494
12498
|
const external_node_fs_namespaceObject = require("node:fs");
|
|
12495
12499
|
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
12496
12500
|
const external_node_http_namespaceObject = require("node:http");
|
|
@@ -38660,8 +38664,8 @@ var __webpack_exports__ = {};
|
|
|
38660
38664
|
if (!response || !response.data) return;
|
|
38661
38665
|
const responseData = response.data;
|
|
38662
38666
|
if (response && responseData?.status_code && 0 !== responseData.status_code) {
|
|
38663
|
-
const errorCode = 4 === responseData.status_code ?
|
|
38664
|
-
if (4 === responseData.status_code) task.logger.warn(`[douyinPublish] status_code:4
|
|
38667
|
+
const errorCode = 4 === responseData.status_code ? 500 : responseData.status_code;
|
|
38668
|
+
if (4 === responseData.status_code) task.logger.warn(`[douyinPublish] 抖音服务器错误 status_code: 4,映射为 500 触发重试。原始响应: ${JSON.stringify(responseData)}`);
|
|
38665
38669
|
return {
|
|
38666
38670
|
code: errorCode,
|
|
38667
38671
|
message: responseData.status_msg || "文章发布异常,请稍后重试。",
|
|
@@ -38728,141 +38732,132 @@ var __webpack_exports__ = {};
|
|
|
38728
38732
|
return utils_response(414, "安全参数 certificate 解析失败,请重新获取后重试", "");
|
|
38729
38733
|
}
|
|
38730
38734
|
const ree_public_key = webProtectData.client_cert.replace("pub.", "");
|
|
38731
|
-
|
|
38732
|
-
|
|
38733
|
-
|
|
38734
|
-
|
|
38735
|
-
|
|
38736
|
-
|
|
38737
|
-
|
|
38738
|
-
|
|
38739
|
-
|
|
38740
|
-
|
|
38741
|
-
|
|
38742
|
-
|
|
38743
|
-
if (!bdTicketGuardClientData || !bdTicketGuardClientData["headers_bd_ticket_guard_client_data"]) {
|
|
38744
|
-
task.logger.error(`[douyinPublish] bdTicketGuardClientData 生成失败或不完整: ${JSON.stringify(bdTicketGuardClientData)}`);
|
|
38745
|
-
throw utils_response(414, "安全参数 bdTicketGuardClientData 生成失败,请重新获取后重试", "");
|
|
38746
|
-
}
|
|
38747
|
-
} catch (error) {
|
|
38748
|
-
if (error && "object" == typeof error && "code" in error) throw error;
|
|
38749
|
-
task.logger.error(`[douyinPublish] 生成 bdTicketGuardClientData 失败: ${error}`);
|
|
38750
|
-
throw utils_response(414, "安全参数 bdTicketGuardClientData 生成异常,请重新获取后重试", "");
|
|
38751
|
-
}
|
|
38752
|
-
task.logger.info("[douyinPublish] bdTicketGuardClientData 生成成功");
|
|
38753
|
-
const publishQuery = {
|
|
38754
|
-
...publishParams,
|
|
38755
|
-
a_bogus: ""
|
|
38756
|
-
};
|
|
38757
|
-
const queryString = new URLSearchParams(publishQuery).toString();
|
|
38758
|
-
let aBogus;
|
|
38759
|
-
try {
|
|
38760
|
-
aBogus = mock_getABogus(`https://creator.douyin.com/web/api/media/aweme/create_v2/?${queryString}`, publishData, userAgent);
|
|
38761
|
-
if (!aBogus || aBogus.length < 10) {
|
|
38762
|
-
task.logger.error(`[douyinPublish] a_bogus 生成异常,长度过短: ${aBogus}`);
|
|
38763
|
-
throw utils_response(414, "安全参数 a_bogus 生成失败,请重试", "");
|
|
38764
|
-
}
|
|
38765
|
-
} catch (error) {
|
|
38766
|
-
if (error && "object" == typeof error && "code" in error) throw error;
|
|
38767
|
-
task.logger.error(`[douyinPublish] 生成 a_bogus 失败: ${error}`);
|
|
38768
|
-
throw utils_response(414, "安全参数 a_bogus 生成异常,请重试", "");
|
|
38735
|
+
let bdTicketGuardClientData;
|
|
38736
|
+
try {
|
|
38737
|
+
bdTicketGuardClientData = getBdV2({
|
|
38738
|
+
ticket,
|
|
38739
|
+
ts_sign: ts_sign,
|
|
38740
|
+
ec_privateKey: ec_privateKey,
|
|
38741
|
+
certificate: certificate,
|
|
38742
|
+
bd_ticket_guard_ree_public_key: ree_public_key
|
|
38743
|
+
});
|
|
38744
|
+
if (!bdTicketGuardClientData || !bdTicketGuardClientData["headers_bd_ticket_guard_client_data"]) {
|
|
38745
|
+
task.logger.error(`[douyinPublish] bdTicketGuardClientData 生成失败或不完整: ${JSON.stringify(bdTicketGuardClientData)}`);
|
|
38746
|
+
return utils_response(414, "安全参数 bdTicketGuardClientData 生成失败,请重新获取后重试", "");
|
|
38769
38747
|
}
|
|
38770
|
-
|
|
38771
|
-
|
|
38772
|
-
|
|
38773
|
-
|
|
38774
|
-
|
|
38775
|
-
|
|
38776
|
-
|
|
38777
|
-
|
|
38778
|
-
|
|
38779
|
-
|
|
38780
|
-
|
|
38781
|
-
|
|
38782
|
-
|
|
38783
|
-
|
|
38784
|
-
task.logger.
|
|
38785
|
-
|
|
38786
|
-
if (error && "object" == typeof error && "code" in error) throw error;
|
|
38787
|
-
task.logger.error(`[douyinPublish] 生成 csrfToken 失败: ${error}`);
|
|
38788
|
-
throw utils_response(414, "安全参数 csrfToken 生成异常,请重试", "");
|
|
38748
|
+
} catch (error) {
|
|
38749
|
+
task.logger.error(`[douyinPublish] 生成 bdTicketGuardClientData 失败: ${error}`);
|
|
38750
|
+
return utils_response(414, "安全参数 bdTicketGuardClientData 生成异常,请重新获取后重试", "");
|
|
38751
|
+
}
|
|
38752
|
+
task.logger.info("[douyinPublish] bdTicketGuardClientData 生成成功");
|
|
38753
|
+
const publishQuery = {
|
|
38754
|
+
...publishParams,
|
|
38755
|
+
a_bogus: ""
|
|
38756
|
+
};
|
|
38757
|
+
const queryString = new URLSearchParams(publishQuery).toString();
|
|
38758
|
+
let aBogus;
|
|
38759
|
+
try {
|
|
38760
|
+
aBogus = mock_getABogus(`https://creator.douyin.com/web/api/media/aweme/create_v2/?${queryString}`, publishData, userAgent);
|
|
38761
|
+
if (!aBogus || aBogus.length < 10) {
|
|
38762
|
+
task.logger.error(`[douyinPublish] a_bogus 生成异常,长度过短: ${aBogus}`);
|
|
38763
|
+
return utils_response(414, "安全参数 a_bogus 生成失败,请重试", "");
|
|
38789
38764
|
}
|
|
38790
|
-
|
|
38791
|
-
|
|
38792
|
-
|
|
38793
|
-
|
|
38794
|
-
|
|
38795
|
-
|
|
38796
|
-
|
|
38765
|
+
} catch (error) {
|
|
38766
|
+
task.logger.error(`[douyinPublish] 生成 a_bogus 失败: ${error}`);
|
|
38767
|
+
return utils_response(414, "安全参数 a_bogus 生成异常,请重试", "");
|
|
38768
|
+
}
|
|
38769
|
+
publishQuery.a_bogus = aBogus;
|
|
38770
|
+
const publishQueryParams = new URLSearchParams(publishQuery).toString();
|
|
38771
|
+
let csrfToken;
|
|
38772
|
+
try {
|
|
38773
|
+
csrfToken = mock_generateCsrfTokenAdvanced({
|
|
38774
|
+
cookies: params.cookies,
|
|
38775
|
+
url: "https://creator.douyin.com/web/api/media/aweme/create_v2/",
|
|
38776
|
+
method: "POST",
|
|
38777
|
+
userAgent
|
|
38778
|
+
});
|
|
38779
|
+
if (!csrfToken || csrfToken.length < 10) {
|
|
38780
|
+
task.logger.error(`[douyinPublish] csrfToken 生成异常,长度过短: ${csrfToken}`);
|
|
38781
|
+
return utils_response(414, "安全参数 csrfToken 生成失败,请重试", "");
|
|
38797
38782
|
}
|
|
38798
|
-
|
|
38799
|
-
|
|
38800
|
-
|
|
38801
|
-
|
|
38802
|
-
|
|
38803
|
-
|
|
38804
|
-
|
|
38805
|
-
|
|
38806
|
-
|
|
38807
|
-
|
|
38808
|
-
|
|
38809
|
-
|
|
38810
|
-
|
|
38811
|
-
|
|
38812
|
-
|
|
38813
|
-
|
|
38783
|
+
task.logger.info(`[douyinPublish] csrfToken 生成成功: ${csrfToken.substring(0, 20)}...`);
|
|
38784
|
+
} catch (error) {
|
|
38785
|
+
task.logger.error(`[douyinPublish] 生成 csrfToken 失败: ${error}`);
|
|
38786
|
+
return utils_response(414, "安全参数 csrfToken 生成异常,请重试", "");
|
|
38787
|
+
}
|
|
38788
|
+
let sessionDtrait;
|
|
38789
|
+
try {
|
|
38790
|
+
sessionDtrait = mock_generateDtrait("/web/api/media/aweme/create_v2/");
|
|
38791
|
+
task.logger.info(`[douyinPublish] sessionDtrait 生成成功: ${sessionDtrait || "(空)"}`);
|
|
38792
|
+
} catch (error) {
|
|
38793
|
+
task.logger.error(`[douyinPublish] 生成 sessionDtrait 失败: ${error}`);
|
|
38794
|
+
return utils_response(414, "安全参数 sessionDtrait 生成异常,请重试", "");
|
|
38795
|
+
}
|
|
38796
|
+
task.logger.info(`[douyinPublish] headers: ${JSON.stringify({
|
|
38797
|
+
...headers,
|
|
38798
|
+
Referer: "https://creator.douyin.com/creator-micro/content/post/image?default-tab=3&enter_from=publish_page&media_type=image&type=new",
|
|
38799
|
+
"Content-Type": "application/json",
|
|
38800
|
+
Accept: "application/json, text/plain, */*",
|
|
38801
|
+
"bd-ticket-guard-client-data": bdTicketGuardClientData["headers_bd_ticket_guard_client_data"],
|
|
38802
|
+
"bd-ticket-guard-ree-public-key": bdTicketGuardClientData["headers_bd_ticket_guard_ree_public_key"],
|
|
38803
|
+
"bd-ticket-guard-version": "2",
|
|
38804
|
+
"bd-ticket-guard-web-sign-type": "1",
|
|
38805
|
+
"bd-ticket-guard-web-version": "2",
|
|
38806
|
+
"x-secsdk-csrf-token": csrfToken,
|
|
38807
|
+
"x-tt-session-dtrait": sessionDtrait || ""
|
|
38808
|
+
})}`);
|
|
38809
|
+
task.logger.info(`[douyinPublish] url: https://creator.douyin.com/web/api/media/aweme/create_v2/?${publishQueryParams}`);
|
|
38810
|
+
let publishResult;
|
|
38811
|
+
try {
|
|
38812
|
+
publishResult = await proxyHttp.api({
|
|
38814
38813
|
method: "post",
|
|
38815
38814
|
url: `https://creator.douyin.com/web/api/media/aweme/create_v2/?${publishQueryParams}`,
|
|
38816
38815
|
data: publishData,
|
|
38817
38816
|
defaultErrorMsg: "发布异常,请稍后重试。",
|
|
38818
|
-
headers:
|
|
38817
|
+
headers: {
|
|
38818
|
+
...headers,
|
|
38819
|
+
Referer: "https://creator.douyin.com/creator-micro/content/post/image?default-tab=3&enter_from=publish_page&media_type=image&type=new",
|
|
38820
|
+
"Content-Type": "application/json",
|
|
38821
|
+
Accept: "application/json, text/plain, */*",
|
|
38822
|
+
"bd-ticket-guard-client-data": bdTicketGuardClientData["headers_bd_ticket_guard_client_data"],
|
|
38823
|
+
"bd-ticket-guard-ree-public-key": bdTicketGuardClientData["headers_bd_ticket_guard_ree_public_key"],
|
|
38824
|
+
"bd-ticket-guard-version": "2",
|
|
38825
|
+
"bd-ticket-guard-web-sign-type": "1",
|
|
38826
|
+
"bd-ticket-guard-web-version": "2",
|
|
38827
|
+
"x-secsdk-csrf-token": csrfToken,
|
|
38828
|
+
"x-tt-session-dtrait": sessionDtrait || ""
|
|
38829
|
+
}
|
|
38819
38830
|
}, {
|
|
38820
38831
|
timeout: 60000,
|
|
38821
|
-
retries:
|
|
38832
|
+
retries: 3,
|
|
38833
|
+
retryDelay: 2000
|
|
38822
38834
|
});
|
|
38823
|
-
}
|
|
38824
|
-
|
|
38825
|
-
|
|
38826
|
-
|
|
38827
|
-
|
|
38828
|
-
|
|
38829
|
-
|
|
38830
|
-
|
|
38831
|
-
|
|
38832
|
-
|
|
38833
|
-
|
|
38834
|
-
const
|
|
38835
|
-
|
|
38836
|
-
|
|
38837
|
-
|
|
38838
|
-
|
|
38839
|
-
|
|
38840
|
-
|
|
38841
|
-
|
|
38842
|
-
|
|
38843
|
-
|
|
38844
|
-
|
|
38845
|
-
|
|
38846
|
-
].includes(handledError.code);
|
|
38847
|
-
if (isProxyOrNetworkError) {
|
|
38848
|
-
const isProxyRequest = handledError.extra?.isProxyRequest === true;
|
|
38849
|
-
const errorType = 599 === handledError.code || isProxyRequest ? "代理错误" : "网络错误";
|
|
38850
|
-
const message = `图文发布失败,${errorType}:${handledError.message}${task.debug ? ` ${http.proxyInfo}` : ""}`;
|
|
38851
|
-
task.logger.error(`[douyinPublish] ${errorType},直接返回: ${message}`, stringifyError(handledError));
|
|
38852
|
-
await updateTaskState?.({
|
|
38853
|
-
state: types_TaskState.FAILED,
|
|
38854
|
-
error: message
|
|
38855
|
-
});
|
|
38856
|
-
return {
|
|
38857
|
-
code: 414,
|
|
38858
|
-
data: "",
|
|
38859
|
-
message
|
|
38860
|
-
};
|
|
38861
|
-
}
|
|
38862
|
-
throw error;
|
|
38835
|
+
} catch (error) {
|
|
38836
|
+
const handledError = Http.handleApiError(error);
|
|
38837
|
+
const isProxyOrNetworkError = [
|
|
38838
|
+
599,
|
|
38839
|
+
500,
|
|
38840
|
+
502,
|
|
38841
|
+
503,
|
|
38842
|
+
504
|
|
38843
|
+
].includes(handledError.code);
|
|
38844
|
+
if (isProxyOrNetworkError) {
|
|
38845
|
+
const isProxyRequest = handledError.extra?.isProxyRequest === true;
|
|
38846
|
+
const errorType = 599 === handledError.code || isProxyRequest ? "代理错误" : "网络错误";
|
|
38847
|
+
const message = `图文发布失败,${errorType}:${handledError.message}${task.debug ? ` ${http.proxyInfo}` : ""}`;
|
|
38848
|
+
task.logger.error(`[douyinPublish] ${errorType},直接返回: ${message}`, stringifyError(handledError));
|
|
38849
|
+
await updateTaskState?.({
|
|
38850
|
+
state: types_TaskState.FAILED,
|
|
38851
|
+
error: message
|
|
38852
|
+
});
|
|
38853
|
+
return {
|
|
38854
|
+
code: 414,
|
|
38855
|
+
data: "",
|
|
38856
|
+
message
|
|
38857
|
+
};
|
|
38863
38858
|
}
|
|
38859
|
+
throw error;
|
|
38864
38860
|
}
|
|
38865
|
-
if (!publishResult) throw utils_response(414, "发布异常,请稍后重试。", "");
|
|
38866
38861
|
task.logger.info(`[douyinPublish] decision值: ${JSON.stringify(decision)}, needsVerification(decision): ${needsVerification(decision)}`);
|
|
38867
38862
|
if (needsVerification(decision)) {
|
|
38868
38863
|
const details = [
|
|
@@ -40542,7 +40537,6 @@ var __webpack_exports__ = {};
|
|
|
40542
40537
|
fansNum = toNum(user.follower_count);
|
|
40543
40538
|
followingNum = toNum(user.following_count);
|
|
40544
40539
|
favedNum = toNum(user.total_favorited);
|
|
40545
|
-
_task.logger.info(`提取用户数据 - 昵称: ${user.nickname}, 粉丝: ${fansNum}, 关注: ${followingNum}, 获赞: ${favedNum}, 作品: ${user.aweme_count}`);
|
|
40546
40540
|
} else _task.logger.warn(`用户信息接口返回异常: status_code=${userProfile?.status_code}, msg=${userProfile?.status_msg}`);
|
|
40547
40541
|
const ov = overview?.data;
|
|
40548
40542
|
const douyinData = {
|
|
@@ -40674,7 +40668,6 @@ var __webpack_exports__ = {};
|
|
|
40674
40668
|
playNumYesterday = Number.parseInt(data.browse?.[1] || "0", 10) || 0;
|
|
40675
40669
|
likeNumYesterday = Number.parseInt(data.like?.[1] || "0", 10) || 0;
|
|
40676
40670
|
commentNumYesterday = Number.parseInt(data.comment?.[1] || "0", 10) || 0;
|
|
40677
|
-
_task.logger.info(`视频号昨日数据提取成功 - 净增关注:${fansNumYesterday}, 播放:${playNumYesterday}, 喜欢:${likeNumYesterday}, 评论:${commentNumYesterday}`);
|
|
40678
40671
|
}
|
|
40679
40672
|
} catch (error) {
|
|
40680
40673
|
const errMsg = error instanceof Error ? error.message : String(error);
|
|
@@ -41313,7 +41306,6 @@ var __webpack_exports__ = {};
|
|
|
41313
41306
|
allPosts.push(...posts);
|
|
41314
41307
|
continueFlag = response.data?.continueFlag ?? false;
|
|
41315
41308
|
rawKeyBuff = response.data?.lastBuff || "";
|
|
41316
|
-
_task.logger.info(`获取${11 === userpageType ? "视频" : "图文"}第${currentPage}页,本页${posts.length}条,累计${allPosts.length}条,continueFlag=${continueFlag}`);
|
|
41317
41309
|
currentPage++;
|
|
41318
41310
|
if (currentPage > 100) {
|
|
41319
41311
|
_task.logger.warn("分页超过100页,停止请求");
|
|
@@ -41368,7 +41360,6 @@ var __webpack_exports__ = {};
|
|
|
41368
41360
|
if (needVideo) try {
|
|
41369
41361
|
const videoPageUrl = "https://channels.weixin.qq.com/micro/content/post/list";
|
|
41370
41362
|
const { posts, totalCount } = await fetchAllPosts(11, videoPageUrl);
|
|
41371
|
-
_task.logger.info(`视频号视频获取响应:共${posts.length}条,totalCount=${totalCount}`);
|
|
41372
41363
|
const videoArticles = posts.filter((item)=>item.createTime || item.create_time).map((item)=>mapPost(item, "video"));
|
|
41373
41364
|
allArticles.push(...videoArticles);
|
|
41374
41365
|
combinedTotal += totalCount || videoArticles.length;
|
|
@@ -41380,7 +41371,6 @@ var __webpack_exports__ = {};
|
|
|
41380
41371
|
if (needArticle) try {
|
|
41381
41372
|
const articlePageUrl = "https://channels.weixin.qq.com/micro/content/post/finderNewLifePostList";
|
|
41382
41373
|
const { posts, totalCount } = await fetchAllPosts(10, articlePageUrl);
|
|
41383
|
-
_task.logger.info(`视频号图文获取响应:共${posts.length}条,totalCount=${totalCount}`);
|
|
41384
41374
|
const articleArticles = posts.filter((item)=>item.createTime || item.create_time).map((item)=>mapPost(item, "article"));
|
|
41385
41375
|
allArticles.push(...articleArticles);
|
|
41386
41376
|
combinedTotal += totalCount || articleArticles.length;
|
|
@@ -41393,7 +41383,6 @@ var __webpack_exports__ = {};
|
|
|
41393
41383
|
const total = allArticles.length;
|
|
41394
41384
|
const start = (pageNum - 1) * pageSize;
|
|
41395
41385
|
const pageItems = allArticles.slice(start, start + pageSize);
|
|
41396
|
-
_task.logger.info(`视频号数据获取成功,合计${total}条,第${pageNum}页返回${pageItems.length}条`);
|
|
41397
41386
|
return success({
|
|
41398
41387
|
articleCell: pageItems,
|
|
41399
41388
|
pagination: {
|
|
@@ -50757,4 +50746,5 @@ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_targe
|
|
|
50757
50746
|
value: true
|
|
50758
50747
|
});
|
|
50759
50748
|
|
|
50760
|
-
//# sourceMappingURL=bundle.js.map
|
|
50749
|
+
//# sourceMappingURL=bundle.js.map
|
|
50750
|
+
//# debugId=aed90b90-6fd5-5e1b-ba81-6ede67b0dc32
|