@iflyrpa/actions 4.0.0-beta.2 → 4.0.0-beta.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 +122 -44
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +122 -44
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +122 -44
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5489,7 +5489,7 @@ var __webpack_exports__ = {};
|
|
|
5489
5489
|
});
|
|
5490
5490
|
const package_json_namespaceObject = require("@iflyrpa/share/package.json");
|
|
5491
5491
|
var package_json_default = /*#__PURE__*/ __webpack_require__.n(package_json_namespaceObject);
|
|
5492
|
-
var package_namespaceObject = JSON.parse('{"i8":"
|
|
5492
|
+
var package_namespaceObject = JSON.parse('{"i8":"3.0.7-beta.3"}');
|
|
5493
5493
|
const share_namespaceObject = require("@iflyrpa/share");
|
|
5494
5494
|
const external_node_fs_namespaceObject = require("node:fs");
|
|
5495
5495
|
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
@@ -5594,6 +5594,13 @@ var __webpack_exports__ = {};
|
|
|
5594
5594
|
}
|
|
5595
5595
|
};
|
|
5596
5596
|
if (foundError) Object.assign(errorResponse, foundError);
|
|
5597
|
+
if (error.response?.status === 403) {
|
|
5598
|
+
this.logger?.warn(`[403 详细信息] URL: ${error.config?.url}`);
|
|
5599
|
+
this.logger?.warn(`[403 响应头] ${JSON.stringify(error.response?.headers || {})}`);
|
|
5600
|
+
this.logger?.warn(`[403 响应体] ${JSON.stringify(error.response?.data || null)}`);
|
|
5601
|
+
const verifyDecision = error.response?.headers?.["x-tt-verify-passport-decision"];
|
|
5602
|
+
if (verifyDecision) this.logger?.warn(`[403 验证决策] x-tt-verify-passport-decision: ${verifyDecision}`);
|
|
5603
|
+
}
|
|
5597
5604
|
if (error.response?.data) {
|
|
5598
5605
|
if ("object" == typeof error.response.data) {
|
|
5599
5606
|
const serverError = error.response.data;
|
|
@@ -14483,21 +14490,13 @@ var __webpack_exports__ = {};
|
|
|
14483
14490
|
console.log("拦截器收到响应:", JSON.stringify(response.data));
|
|
14484
14491
|
task.logger.info(`拦截器收到响应response.headers: ${JSON.stringify(response.headers)} `);
|
|
14485
14492
|
task.logger.info(`拦截器收到响应response.data: ${JSON.stringify(response.data)} `);
|
|
14486
|
-
task.logger.info(`拦截器收到响应response.data类型: ${typeof response.data}, 值: ${JSON.stringify(response.data)}`);
|
|
14487
14493
|
decision = parseVerifyPassportDecision(response.headers["x-tt-verify-passport-decision"]);
|
|
14488
|
-
task.logger.info(`解析后的decision: ${JSON.stringify(decision)}`);
|
|
14489
14494
|
if (needsVerification(decision)) {
|
|
14490
|
-
task.logger.info(
|
|
14491
|
-
task.logger.info("拦截器即将return,不抛错");
|
|
14492
|
-
return;
|
|
14493
|
-
}
|
|
14494
|
-
task.logger.info("不需要验证,继续检查response.data");
|
|
14495
|
-
if (!response || !response.data) {
|
|
14496
|
-
task.logger.info("response或response.data为空,拦截器return");
|
|
14495
|
+
task.logger.info(`需要验证: ${JSON.stringify(decision)}`);
|
|
14497
14496
|
return;
|
|
14498
14497
|
}
|
|
14498
|
+
if (!response || !response.data) return;
|
|
14499
14499
|
const responseData = response.data;
|
|
14500
|
-
task.logger.info(`responseData.status_code: ${responseData?.status_code}`);
|
|
14501
14500
|
if (response && responseData?.status_code && 0 !== responseData.status_code) {
|
|
14502
14501
|
const errorCode = 4 === responseData.status_code ? 500 : responseData.status_code;
|
|
14503
14502
|
if (4 === responseData.status_code) task.logger.warn(`抖音服务器错误 status_code: 4,映射为 500 触发重试。原始响应: ${JSON.stringify(responseData)}`);
|
|
@@ -14594,9 +14593,30 @@ var __webpack_exports__ = {};
|
|
|
14594
14593
|
retryDelay: 2000
|
|
14595
14594
|
});
|
|
14596
14595
|
task.logger.info("========== api调用完成 ==========");
|
|
14597
|
-
task.logger.info(`
|
|
14598
|
-
|
|
14599
|
-
|
|
14596
|
+
task.logger.info(`decision值: ${JSON.stringify(decision)}, needsVerification(decision): ${needsVerification(decision)}`);
|
|
14597
|
+
if (needsVerification(decision)) {
|
|
14598
|
+
const details = [
|
|
14599
|
+
publishResult.status_msg,
|
|
14600
|
+
decision?.verify_title,
|
|
14601
|
+
decision?.verify_desc
|
|
14602
|
+
].filter(Boolean).join(" ");
|
|
14603
|
+
const message = `图文发布失败,原因:${details}${task.debug ? ` ${http.proxyInfo}` : ""}`;
|
|
14604
|
+
task.logger.warn(`TaskId:${task.taskId},检测到需要验证,准备返回验证信息`);
|
|
14605
|
+
const mockData = {
|
|
14606
|
+
state: share_namespaceObject.TaskState.FAILED,
|
|
14607
|
+
error: message,
|
|
14608
|
+
result: {
|
|
14609
|
+
data: decision,
|
|
14610
|
+
uploadedImgList: JSON.stringify(publishData.item.common.images)
|
|
14611
|
+
}
|
|
14612
|
+
};
|
|
14613
|
+
await updateTaskState?.(mockData);
|
|
14614
|
+
return {
|
|
14615
|
+
code: 0,
|
|
14616
|
+
data: mockData,
|
|
14617
|
+
message: "操作成功"
|
|
14618
|
+
};
|
|
14619
|
+
}
|
|
14600
14620
|
task.logger.info("不需要验证,继续正常流程");
|
|
14601
14621
|
reportLogger({
|
|
14602
14622
|
token: params.huiwenToken || "",
|
|
@@ -15293,15 +15313,41 @@ var __webpack_exports__ = {};
|
|
|
15293
15313
|
}
|
|
15294
15314
|
task.logger?.info("准备发布...");
|
|
15295
15315
|
await page.waitForTimeout(1000);
|
|
15296
|
-
const
|
|
15316
|
+
const result = await new Promise((resolve, reject)=>{
|
|
15297
15317
|
const handleResponse = async (res)=>{
|
|
15298
15318
|
if (res.url().includes("/web/api/media/aweme/create_v2")) {
|
|
15299
15319
|
task.logger?.info("匹配到发布接口响应");
|
|
15320
|
+
let decision = null;
|
|
15321
|
+
try {
|
|
15322
|
+
const headers = await res.allHeaders();
|
|
15323
|
+
decision = parseVerifyPassportDecision(headers["x-tt-verify-passport-decision"]);
|
|
15324
|
+
} catch (error) {
|
|
15325
|
+
task.logger?.warn(`解析验证决策头失败: ${error}`);
|
|
15326
|
+
}
|
|
15300
15327
|
const jsonResponse = await res.json();
|
|
15301
15328
|
task.logger?.info(`发布接口响应数据: ${JSON.stringify(jsonResponse)}`);
|
|
15302
15329
|
page.off("response", handleResponse);
|
|
15303
|
-
if (
|
|
15304
|
-
|
|
15330
|
+
if (needsVerification(decision)) {
|
|
15331
|
+
task.logger?.warn("检测到需要二次验证,文章未真正发布");
|
|
15332
|
+
resolve({
|
|
15333
|
+
itemId: "",
|
|
15334
|
+
decision
|
|
15335
|
+
});
|
|
15336
|
+
return;
|
|
15337
|
+
}
|
|
15338
|
+
if (jsonResponse?.status_code !== 0) {
|
|
15339
|
+
reject(new Error(jsonResponse?.status_msg || "发布失败"));
|
|
15340
|
+
return;
|
|
15341
|
+
}
|
|
15342
|
+
const itemId = jsonResponse?.data?.item_id || jsonResponse?.item_id || "";
|
|
15343
|
+
if (!itemId) {
|
|
15344
|
+
reject(new Error(jsonResponse?.status_msg || "发布异常:未返回作品ID,文章可能未真正发布"));
|
|
15345
|
+
return;
|
|
15346
|
+
}
|
|
15347
|
+
resolve({
|
|
15348
|
+
itemId,
|
|
15349
|
+
decision: null
|
|
15350
|
+
});
|
|
15305
15351
|
}
|
|
15306
15352
|
};
|
|
15307
15353
|
page.on("response", handleResponse);
|
|
@@ -15323,20 +15369,42 @@ var __webpack_exports__ = {};
|
|
|
15323
15369
|
await page.close();
|
|
15324
15370
|
return null;
|
|
15325
15371
|
});
|
|
15326
|
-
if (!
|
|
15372
|
+
if (!result) return {
|
|
15327
15373
|
code: 414,
|
|
15328
15374
|
message: "发布失败",
|
|
15329
15375
|
data: ""
|
|
15330
15376
|
};
|
|
15331
|
-
|
|
15377
|
+
if (needsVerification(result.decision)) {
|
|
15378
|
+
const decision = result.decision;
|
|
15379
|
+
const details = [
|
|
15380
|
+
decision?.verify_title,
|
|
15381
|
+
decision?.verify_desc
|
|
15382
|
+
].filter(Boolean).join(" ");
|
|
15383
|
+
const message = `发布失败,需要二次验证${details ? `:${details}` : ""}`;
|
|
15384
|
+
task.logger?.warn(message);
|
|
15385
|
+
await updateTaskState?.({
|
|
15386
|
+
state: share_namespaceObject.TaskState.FAILED,
|
|
15387
|
+
error: message,
|
|
15388
|
+
result: {
|
|
15389
|
+
data: decision
|
|
15390
|
+
}
|
|
15391
|
+
});
|
|
15392
|
+
await page.close();
|
|
15393
|
+
return {
|
|
15394
|
+
code: 414,
|
|
15395
|
+
message,
|
|
15396
|
+
data: ""
|
|
15397
|
+
};
|
|
15398
|
+
}
|
|
15399
|
+
task.logger?.info(`✓ 发布成功,item_id: ${result.itemId}`);
|
|
15332
15400
|
await updateTaskState?.({
|
|
15333
15401
|
state: share_namespaceObject.TaskState.SUCCESS,
|
|
15334
15402
|
result: {
|
|
15335
|
-
response
|
|
15403
|
+
response: result.itemId
|
|
15336
15404
|
}
|
|
15337
15405
|
});
|
|
15338
15406
|
await page.close();
|
|
15339
|
-
return (0, share_namespaceObject.success)(
|
|
15407
|
+
return (0, share_namespaceObject.success)(result.itemId);
|
|
15340
15408
|
};
|
|
15341
15409
|
const DouyinPublishParamsSchema = ActionCommonParamsSchema.extend({
|
|
15342
15410
|
title: schemas_string(),
|
|
@@ -16116,26 +16184,26 @@ var __webpack_exports__ = {};
|
|
|
16116
16184
|
const http = new Http({
|
|
16117
16185
|
headers: {
|
|
16118
16186
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
16119
|
-
referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
|
|
16187
|
+
referer: "https://mp.toutiao.com/profile_v4/graphic/publish",
|
|
16188
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
|
|
16189
|
+
}
|
|
16190
|
+
});
|
|
16191
|
+
const totalData = await http.api({
|
|
16192
|
+
method: "get",
|
|
16193
|
+
url: "https://mp.toutiao.com/mp/fe_api/home/merge_v2",
|
|
16194
|
+
params: {
|
|
16195
|
+
app_id: 1231
|
|
16196
|
+
}
|
|
16197
|
+
});
|
|
16198
|
+
await new Promise((r)=>setTimeout(r, 1000));
|
|
16199
|
+
const contentDataYesterday = await http.api({
|
|
16200
|
+
method: "get",
|
|
16201
|
+
url: "https://mp.toutiao.com/mp/agw/statistic/v2/content_stat",
|
|
16202
|
+
params: {
|
|
16203
|
+
type: 0,
|
|
16204
|
+
app_id: 1231
|
|
16120
16205
|
}
|
|
16121
16206
|
});
|
|
16122
|
-
const [totalData, contentDataYesterday] = await Promise.all([
|
|
16123
|
-
http.api({
|
|
16124
|
-
method: "get",
|
|
16125
|
-
url: "https://mp.toutiao.com/mp/fe_api/home/merge_v2",
|
|
16126
|
-
params: {
|
|
16127
|
-
app_id: 1231
|
|
16128
|
-
}
|
|
16129
|
-
}),
|
|
16130
|
-
http.api({
|
|
16131
|
-
method: "get",
|
|
16132
|
-
url: "https://mp.toutiao.com/mp/agw/statistic/v2/content_stat",
|
|
16133
|
-
params: {
|
|
16134
|
-
type: 0,
|
|
16135
|
-
app_id: 1231
|
|
16136
|
-
}
|
|
16137
|
-
})
|
|
16138
|
-
]);
|
|
16139
16207
|
const isSuccess = !!(totalData?.data?.statistic && contentDataYesterday?.author_stat);
|
|
16140
16208
|
if (!isSuccess || !totalData?.data || !contentDataYesterday?.author_stat) return types_errorResponse(totalData?.message || contentDataYesterday?.message || "头条号数据获取失败,请检查Cookie是否有效", 414);
|
|
16141
16209
|
const ttData = {
|
|
@@ -20312,8 +20380,10 @@ var __webpack_exports__ = {};
|
|
|
20312
20380
|
tuwen_wtt_trans_flag: params.settingInfo?.toutiaoTransWtt ? "2" : "0",
|
|
20313
20381
|
info_source: sourceData,
|
|
20314
20382
|
...location ? {
|
|
20315
|
-
|
|
20316
|
-
|
|
20383
|
+
manual_selected_city: JSON.stringify({
|
|
20384
|
+
city: location.label,
|
|
20385
|
+
city_code: location.value
|
|
20386
|
+
})
|
|
20317
20387
|
} : null,
|
|
20318
20388
|
...params.settingInfo?.toutiaoCollectionId ? {
|
|
20319
20389
|
want_join_collection_id: params.settingInfo.toutiaoCollectionId
|
|
@@ -20363,6 +20433,12 @@ var __webpack_exports__ = {};
|
|
|
20363
20433
|
claim_exclusive: toutiaoExclusive ? toutiaoExclusive : toutiaoOriginal?.includes("exclusive") ? 1 : 0
|
|
20364
20434
|
};
|
|
20365
20435
|
task._timerRecord.PrePublish = Date.now();
|
|
20436
|
+
task.logger.info(`[toutiaoPublish] ${"draft" === params.saveType ? "同步草稿" : "发布文章"}参数`, {
|
|
20437
|
+
saveType: params.saveType,
|
|
20438
|
+
title: params.title,
|
|
20439
|
+
extra: extraData,
|
|
20440
|
+
publishData
|
|
20441
|
+
});
|
|
20366
20442
|
const msToken = params.cookies.find((it)=>"msToken" === it.name)?.value;
|
|
20367
20443
|
let publishOption = {};
|
|
20368
20444
|
if (msToken) {
|
|
@@ -21558,8 +21634,8 @@ var __webpack_exports__ = {};
|
|
|
21558
21634
|
headers
|
|
21559
21635
|
});
|
|
21560
21636
|
const proxyHttp = new Http(...args);
|
|
21561
|
-
|
|
21562
|
-
const responseData = response
|
|
21637
|
+
const baseRespFinder = (response)=>{
|
|
21638
|
+
const responseData = response?.data;
|
|
21563
21639
|
const msgType = "draft" === params.saveType ? "同步" : "发布";
|
|
21564
21640
|
if (response && responseData?.base_resp && 0 !== responseData.base_resp.ret && !ignoreErrno.includes(responseData.base_resp.ret)) {
|
|
21565
21641
|
const errmsg = weixinPublish_mock_errnoMap[responseData.base_resp.ret] || response.config.defaultErrorMsg || responseData.base_resp.err_msg || `文章${msgType}异常,请稍后重试。`;
|
|
@@ -21569,7 +21645,9 @@ var __webpack_exports__ = {};
|
|
|
21569
21645
|
data: responseData
|
|
21570
21646
|
};
|
|
21571
21647
|
}
|
|
21572
|
-
}
|
|
21648
|
+
};
|
|
21649
|
+
http.addResponseInterceptor(baseRespFinder);
|
|
21650
|
+
proxyHttp.addResponseInterceptor(baseRespFinder);
|
|
21573
21651
|
await http.api({
|
|
21574
21652
|
method: "get",
|
|
21575
21653
|
url: "https://mp.weixin.qq.com/cgi-bin/appmsgpublish",
|