@iflyrpa/actions 2.0.0-beta.3 → 2.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.
@@ -1,6 +1,5 @@
1
1
  import type { CommonAction } from "@iflyrpa/share";
2
2
  import { z } from "zod";
3
- import { Collection } from "../douyinGetCollection/index";
4
3
  export declare const DouyinPublishParamsSchema: z.ZodObject<{
5
4
  id: z.ZodOptional<z.ZodString>;
6
5
  userAgent: z.ZodOptional<z.ZodString>;
@@ -27,69 +26,32 @@ export declare const DouyinPublishParamsSchema: z.ZodObject<{
27
26
  huiwenToken: z.ZodOptional<z.ZodString>;
28
27
  articleId: z.ZodOptional<z.ZodString>;
29
28
  saveType: z.ZodOptional<z.ZodString>;
30
- banners: z.ZodArray<z.ZodString>;
31
29
  title: z.ZodString;
32
30
  content: z.ZodString;
33
- coverImage: z.ZodOptional<z.ZodString>;
34
- videoFile: z.ZodOptional<z.ZodString>;
35
- musicId: z.ZodString;
36
- musicDuration: z.ZodOptional<z.ZodNumber>;
37
31
  textExtra: z.ZodString;
38
- challengeIds: z.ZodString;
39
- hashtagSource: z.ZodString;
40
- hotSentence: z.ZodString;
41
- mix: z.ZodOptional<z.ZodCustom<Collection, Collection>>;
42
- address: z.ZodOptional<z.ZodObject<{
43
- id: z.ZodString;
44
- name: z.ZodString;
45
- latitude: z.ZodOptional<z.ZodNumber>;
46
- longitude: z.ZodOptional<z.ZodNumber>;
47
- }, z.core.$strip>>;
48
- selfDeclaration: z.ZodOptional<z.ZodCustom<{
49
- type: "fictional-rendition";
50
- } | {
51
- type: "ai-generated";
52
- } | {
53
- type: "source-statement";
54
- childType: "self-labeling" | "self-shooting" | "transshipment";
55
- shootingLocation?: {
56
- id: string;
57
- name: string;
58
- latitude?: number | undefined;
59
- longitude?: number | undefined;
60
- } | undefined;
61
- shootingDate?: string | undefined;
62
- sourceMedia?: string | undefined;
63
- }, {
64
- type: "fictional-rendition";
65
- } | {
66
- type: "ai-generated";
67
- } | {
68
- type: "source-statement";
69
- childType: "self-labeling" | "self-shooting" | "transshipment";
70
- shootingLocation?: {
71
- id: string;
72
- name: string;
73
- latitude?: number | undefined;
74
- longitude?: number | undefined;
75
- } | undefined;
76
- shootingDate?: string | undefined;
77
- sourceMedia?: string | undefined;
78
- }>>;
79
32
  topic: z.ZodOptional<z.ZodArray<z.ZodObject<{
80
33
  id: z.ZodString;
81
34
  word: z.ZodString;
82
35
  }, z.core.$strip>>>;
36
+ coverImage: z.ZodOptional<z.ZodString>;
37
+ banners: z.ZodArray<z.ZodString>;
38
+ mix: z.ZodObject<{
39
+ mix_id: z.ZodString;
40
+ mix_order: z.ZodNumber;
41
+ }, z.core.$strip>;
42
+ musicId: z.ZodString;
43
+ musicDuration: z.ZodOptional<z.ZodNumber>;
44
+ challengeIds: z.ZodString;
45
+ hotSentence: z.ZodString;
83
46
  proxyLoc: z.ZodOptional<z.ZodString>;
84
47
  localIP: z.ZodOptional<z.ZodString>;
85
48
  visibleRange: z.ZodOptional<z.ZodEnum<{
49
+ 0: "0";
86
50
  1: "1";
87
51
  2: "2";
88
- 3: "3";
89
52
  }>>;
90
53
  isImmediatelyPublish: z.ZodOptional<z.ZodBoolean>;
91
54
  scheduledPublish: z.ZodOptional<z.ZodString>;
92
- isOriginal: z.ZodOptional<z.ZodBoolean>;
93
55
  allowSave: z.ZodOptional<z.ZodBoolean>;
94
56
  publishType: z.ZodOptional<z.ZodEnum<{
95
57
  1: "1";
@@ -97,12 +59,17 @@ export declare const DouyinPublishParamsSchema: z.ZodObject<{
97
59
  3: "3";
98
60
  4: "4";
99
61
  }>>;
100
- publishAction: z.ZodOptional<z.ZodEnum<{
101
- draft: "draft";
102
- publish: "publish";
103
- }>>;
104
- isAiCoverImage: z.ZodOptional<z.ZodBoolean>;
105
- summary: z.ZodOptional<z.ZodString>;
62
+ extraParam: z.ZodObject<{
63
+ "security-sdk/s_sdk_pri_key": z.ZodObject<{
64
+ data: z.ZodString;
65
+ }, z.core.$strip>;
66
+ "security-sdk/s_sdk_pub_key": z.ZodObject<{
67
+ data: z.ZodString;
68
+ }, z.core.$strip>;
69
+ "security-sdk/s_sdk_sign_data_key/web_protect": z.ZodObject<{
70
+ data: z.ZodString;
71
+ }, z.core.$strip>;
72
+ }, z.core.$strip>;
106
73
  }, z.core.$strip>;
107
74
  export type DouyinPublishParams = z.infer<typeof DouyinPublishParamsSchema>;
108
75
  export type PublishAction = CommonAction<DouyinPublishParams, string>;
package/dist/bundle.js CHANGED
@@ -8238,7 +8238,7 @@ var __webpack_exports__ = {};
8238
8238
  origin: ()=>utils_origin
8239
8239
  });
8240
8240
  var package_namespaceObject = JSON.parse('{"i8":"0.0.18-beta.0"}');
8241
- var package_namespaceObject_0 = JSON.parse('{"i8":"2.0.0-beta.2"}');
8241
+ var package_namespaceObject_0 = JSON.parse('{"i8":"2.0.0-beta.3"}');
8242
8242
  const external_node_fs_namespaceObject = require("node:fs");
8243
8243
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
8244
8244
  const external_node_https_namespaceObject = require("node:https");
@@ -30588,6 +30588,16 @@ var __webpack_exports__ = {};
30588
30588
  error: e
30589
30589
  });
30590
30590
  }
30591
+ else if (url.includes("/aweme/v1/creator/pc/user/info/")) try {
30592
+ const jsonUserInfo = await resp.json();
30593
+ userInfo.uniqueId = jsonUserInfo.uid ?? "";
30594
+ task.debug && task.logger.info("用户uniqueId 获取成功", userInfo);
30595
+ } catch (e) {
30596
+ task.logger.warn("无法解析用户信息:", {
30597
+ url,
30598
+ error: e
30599
+ });
30600
+ }
30591
30601
  } catch (err) {
30592
30602
  task.logger.error("监听登录结果出现异常", err);
30593
30603
  cleanup(err);
@@ -30648,21 +30658,21 @@ var __webpack_exports__ = {};
30648
30658
  };
30649
30659
  }
30650
30660
  let securityData = {};
30651
- try {
30661
+ let retryCount = 0;
30662
+ const maxRetries = 10;
30663
+ while(retryCount < maxRetries){
30652
30664
  securityData = await page.evaluate(()=>({
30653
30665
  "security-sdk/s_sdk_pri_key": localStorage.getItem("security-sdk/s_sdk_pri_key") || "",
30654
30666
  "security-sdk/s_sdk_pub_key": localStorage.getItem("security-sdk/s_sdk_pub_key") || "",
30655
- "security-sdk/s_sdk_sign_data_key": localStorage.getItem("security-sdk/s_sdk_sign_data_key/web_protect") || ""
30667
+ "security-sdk/s_sdk_sign_data_key/web_protect": localStorage.getItem("security-sdk/s_sdk_sign_data_key/web_protect") || ""
30656
30668
  }));
30657
- task.debug && task.logger.info("Security SDK 数据提取成功:", {
30658
- "security-sdk/s_sdk_pri_key": !!securityData["security-sdk/s_sdk_pri_key"],
30659
- "security-sdk/s_sdk_pub_key": !!securityData["security-sdk/s_sdk_pub_key"],
30660
- "security-sdk/s_sdk_sign_data_key": !!securityData["security-sdk/s_sdk_sign_data_key"]
30661
- });
30662
- } catch (error) {
30663
- task.logger.warn("提取 Security SDK 数据失败:", {
30664
- error: error instanceof Error ? error.message : String(error)
30665
- });
30669
+ if (securityData["security-sdk/s_sdk_pri_key"] && securityData["security-sdk/s_sdk_pub_key"] && securityData["security-sdk/s_sdk_sign_data_key/web_protect"]) {
30670
+ task.logger.info("Security SDK 数据已获取");
30671
+ break;
30672
+ }
30673
+ retryCount++;
30674
+ task.logger.info(`等待 Security SDK 数据... (${retryCount}/${maxRetries})`);
30675
+ await page.waitForTimeout(1000);
30666
30676
  }
30667
30677
  const cookie = JSON.stringify(await task._steelBrowserContext?.cookies());
30668
30678
  isSelfClosing = true;
@@ -30671,7 +30681,7 @@ var __webpack_exports__ = {};
30671
30681
  connectAddress,
30672
30682
  cookie,
30673
30683
  userInfo,
30674
- ...securityData
30684
+ extraParam: securityData
30675
30685
  }, "登陆成功!");
30676
30686
  };
30677
30687
  const douyinLogin_rpa_server_scanRetryMaxCount = 60;
@@ -30800,6 +30810,16 @@ var __webpack_exports__ = {};
30800
30810
  error: e
30801
30811
  });
30802
30812
  }
30813
+ else if (url.includes("/aweme/v1/creator/pc/user/info/")) try {
30814
+ const jsonUserInfo = await resp.json();
30815
+ userInfo.uniqueId = jsonUserInfo.uid ?? "";
30816
+ task.debug && task.logger.info("用户uniqueId 获取成功", userInfo);
30817
+ } catch (e) {
30818
+ task.logger.warn("无法解析用户信息:", {
30819
+ url,
30820
+ error: e
30821
+ });
30822
+ }
30803
30823
  } catch (err) {
30804
30824
  cleanup();
30805
30825
  reject(err);
@@ -30876,27 +30896,27 @@ var __webpack_exports__ = {};
30876
30896
  case types_ExecutionState.SUCCESS:
30877
30897
  {
30878
30898
  let securityData = {};
30879
- try {
30899
+ let retryCount = 0;
30900
+ const maxRetries = 10;
30901
+ while(retryCount < maxRetries){
30880
30902
  securityData = await page.evaluate(()=>({
30881
30903
  "security-sdk/s_sdk_pri_key": localStorage.getItem("security-sdk/s_sdk_pri_key") || "",
30882
30904
  "security-sdk/s_sdk_pub_key": localStorage.getItem("security-sdk/s_sdk_pub_key") || "",
30883
- "security-sdk/s_sdk_sign_data_key": localStorage.getItem("security-sdk/s_sdk_sign_data_key/web_protect") || ""
30905
+ "security-sdk/s_sdk_sign_data_key/web_protect": localStorage.getItem("security-sdk/s_sdk_sign_data_key/web_protect") || ""
30884
30906
  }));
30885
- task.logger.info("Security SDK 数据提取成功:", {
30886
- "security-sdk/s_sdk_pri_key": !!securityData["security-sdk/s_sdk_pri_key"],
30887
- "security-sdk/s_sdk_pub_key": !!securityData["security-sdk/s_sdk_pub_key"],
30888
- "security-sdk/s_sdk_sign_data_key": !!securityData["security-sdk/s_sdk_sign_data_key"]
30889
- });
30890
- } catch (error) {
30891
- task.logger.warn("提取 Security SDK 数据失败:", {
30892
- error: error instanceof Error ? error.message : String(error)
30893
- });
30907
+ if (securityData["security-sdk/s_sdk_pri_key"] && securityData["security-sdk/s_sdk_pub_key"] && securityData["security-sdk/s_sdk_sign_data_key/web_protect"]) {
30908
+ task.logger.info("Security SDK 数据已获取");
30909
+ break;
30910
+ }
30911
+ retryCount++;
30912
+ task.logger.info(`等待 Security SDK 数据... (${retryCount}/${maxRetries})`);
30913
+ await page.waitForTimeout(1000);
30894
30914
  }
30895
30915
  await updateTaskState?.({
30896
30916
  state: types_TaskState.SUCCESS,
30897
30917
  result: {
30898
30918
  cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),
30899
- ...securityData,
30919
+ extraParam: securityData,
30900
30920
  userInfo: userInfo
30901
30921
  }
30902
30922
  });
@@ -30905,7 +30925,7 @@ var __webpack_exports__ = {};
30905
30925
  message: "成功",
30906
30926
  data: {
30907
30927
  cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),
30908
- ...securityData,
30928
+ extraParam: securityData,
30909
30929
  userInfo
30910
30930
  }
30911
30931
  };
@@ -30929,6 +30949,7 @@ var __webpack_exports__ = {};
30929
30949
  const { generateCsrfTokenAdvanced } = __webpack_require__("./src/utils/douyin/csrfToken.js");
30930
30950
  const { generateAuthorization, randomS, canonicalQueryString, calculateFileCrc32 } = __webpack_require__("./src/utils/douyin/douyinSign.js");
30931
30951
  const mock_mockAction = async (task, params)=>{
30952
+ if (!params.extraParam || !params.extraParam["security-sdk/s_sdk_pri_key"] || !params.extraParam["security-sdk/s_sdk_pub_key"] || !params.extraParam["security-sdk/s_sdk_sign_data_key/web_protect"]) return utils_response(400, "extraParam 参数缺失或不完整", "");
30932
30953
  const tmpCachePath = task.getTmpPath();
30933
30954
  let bdTicketGuardClientDataV2 = params.cookies.find((e)=>"bd_ticket_guard_client_data" === e.name)?.value || "";
30934
30955
  if (!bdTicketGuardClientDataV2) return utils_response(400, "bdTicketGuardClientDataV2 不能为空", "");
@@ -30948,9 +30969,9 @@ var __webpack_exports__ = {};
30948
30969
  ree_public_key = parsed.ree_public_key || "";
30949
30970
  ts_sign = parsed.ts_sign || "";
30950
30971
  } catch {}
30951
- const privateKey = params["security-sdk/s_sdk_pri_key"]?.data || "";
30952
- const publicKey = params["security-sdk/s_sdk_pub_key"]?.data || "";
30953
- const signData = JSON.parse(params["security-sdk/s_sdk_sign_data_key/web_protect"]?.data || "{}");
30972
+ const privateKey = params.extraParam["security-sdk/s_sdk_pri_key"]?.data || "";
30973
+ const publicKey = params.extraParam["security-sdk/s_sdk_pub_key"]?.data || "";
30974
+ const signData = JSON.parse(params.extraParam["security-sdk/s_sdk_sign_data_key/web_protect"]?.data || "{}");
30954
30975
  console.log("privateKey:", privateKey);
30955
30976
  console.log("publicKey:", publicKey);
30956
30977
  console.log("signData:", signData);
@@ -30993,11 +31014,11 @@ var __webpack_exports__ = {};
30993
31014
  const publishData = {
30994
31015
  item: {
30995
31016
  common: {
30996
- text: `${params.title}。${params.content}`,
31017
+ text: params.content,
30997
31018
  text_extra: params.textExtra,
30998
31019
  activity: "[]",
30999
31020
  challenges: params.challengeIds,
31000
- hashtag_source: params.hashtagSource || "",
31021
+ hashtag_source: "",
31001
31022
  mentions: "[]",
31002
31023
  music_id: params.musicId,
31003
31024
  music_end_time: 1000 * (params.musicDuration || 0),
@@ -31014,7 +31035,7 @@ var __webpack_exports__ = {};
31014
31035
  mix: params.mix || {},
31015
31036
  anchor: {},
31016
31037
  declare: {
31017
- user_declare_info: params.selfDeclaration || "{}"
31038
+ user_declare_info: "{}"
31018
31039
  }
31019
31040
  }
31020
31041
  };
@@ -31276,8 +31297,8 @@ var __webpack_exports__ = {};
31276
31297
  const descInstance = page.locator("div[data-placeholder='添加作品描述...']");
31277
31298
  await descInstance.click();
31278
31299
  await descInstance.pressSequentially(params.content.replace(/#.*?\[.*?]#/g, "") || "22222");
31279
- if ("2" === params.visibleRange) await page.locator("label:has-text('好友可见')").first().click();
31280
- else if ("3" === params.visibleRange) await page.locator("label:has-text('仅自己可见')").first().click();
31300
+ if ("1" === params.visibleRange) await page.locator("label:has-text('好友可见')").first().click();
31301
+ else if ("2" === params.visibleRange) await page.locator("label:has-text('仅自己可见')").first().click();
31281
31302
  if (!params.isImmediatelyPublish) {
31282
31303
  await await page.locator('label:has-text("定时发布")').first().click();
31283
31304
  await page.waitForTimeout(500);
@@ -31312,67 +31333,33 @@ var __webpack_exports__ = {};
31312
31333
  await page.close();
31313
31334
  return success(response);
31314
31335
  };
31315
- const FictionalRendition = classic_schemas_object({
31316
- type: literal("fictional-rendition")
31317
- });
31318
- const AIGenerated = classic_schemas_object({
31319
- type: literal("ai-generated")
31320
- });
31321
- const SourceStatement = classic_schemas_object({
31322
- type: literal("source-statement"),
31323
- childType: classic_schemas_enum([
31324
- "self-labeling",
31325
- "self-shooting",
31326
- "transshipment"
31327
- ]),
31328
- shootingLocation: classic_schemas_object({
31329
- id: classic_schemas_string(),
31330
- name: classic_schemas_string(),
31331
- latitude: classic_schemas_number().optional(),
31332
- longitude: classic_schemas_number().optional()
31333
- }).optional(),
31334
- shootingDate: classic_schemas_string().optional(),
31335
- sourceMedia: classic_schemas_string().optional()
31336
- });
31337
- schemas_union([
31338
- FictionalRendition,
31339
- AIGenerated,
31340
- SourceStatement
31341
- ]);
31342
31336
  const DouyinPublishParamsSchema = ActionCommonParamsSchema.extend({
31343
- banners: classic_schemas_array(classic_schemas_string()),
31344
31337
  title: classic_schemas_string(),
31345
31338
  content: classic_schemas_string(),
31346
- coverImage: classic_schemas_string().optional(),
31347
- videoFile: classic_schemas_string().optional(),
31348
- musicId: classic_schemas_string(),
31349
- musicDuration: classic_schemas_number().optional(),
31350
31339
  textExtra: classic_schemas_string(),
31351
- challengeIds: classic_schemas_string(),
31352
- hashtagSource: classic_schemas_string(),
31353
- hotSentence: classic_schemas_string(),
31354
- mix: custom().optional(),
31355
- address: classic_schemas_object({
31356
- id: classic_schemas_string(),
31357
- name: classic_schemas_string(),
31358
- latitude: classic_schemas_number().optional(),
31359
- longitude: classic_schemas_number().optional()
31360
- }).optional(),
31361
- selfDeclaration: custom().optional(),
31362
31340
  topic: classic_schemas_array(classic_schemas_object({
31363
31341
  id: classic_schemas_string(),
31364
31342
  word: classic_schemas_string()
31365
31343
  })).optional(),
31344
+ coverImage: classic_schemas_string().optional(),
31345
+ banners: classic_schemas_array(classic_schemas_string()),
31346
+ mix: classic_schemas_object({
31347
+ mix_id: classic_schemas_string(),
31348
+ mix_order: classic_schemas_number()
31349
+ }),
31350
+ musicId: classic_schemas_string(),
31351
+ musicDuration: classic_schemas_number().optional(),
31352
+ challengeIds: classic_schemas_string(),
31353
+ hotSentence: classic_schemas_string(),
31366
31354
  proxyLoc: classic_schemas_string().optional(),
31367
31355
  localIP: classic_schemas_string().optional(),
31368
31356
  visibleRange: classic_schemas_enum([
31357
+ "0",
31369
31358
  "1",
31370
- "2",
31371
- "3"
31359
+ "2"
31372
31360
  ]).optional(),
31373
31361
  isImmediatelyPublish: classic_schemas_boolean().optional(),
31374
31362
  scheduledPublish: classic_schemas_string().optional(),
31375
- isOriginal: classic_schemas_boolean().optional(),
31376
31363
  allowSave: classic_schemas_boolean().optional(),
31377
31364
  publishType: classic_schemas_enum([
31378
31365
  "1",
@@ -31380,12 +31367,17 @@ var __webpack_exports__ = {};
31380
31367
  "3",
31381
31368
  "4"
31382
31369
  ]).optional(),
31383
- publishAction: classic_schemas_enum([
31384
- "publish",
31385
- "draft"
31386
- ]).optional(),
31387
- isAiCoverImage: classic_schemas_boolean().optional(),
31388
- summary: classic_schemas_string().optional()
31370
+ extraParam: classic_schemas_object({
31371
+ "security-sdk/s_sdk_pri_key": classic_schemas_object({
31372
+ data: classic_schemas_string()
31373
+ }),
31374
+ "security-sdk/s_sdk_pub_key": classic_schemas_object({
31375
+ data: classic_schemas_string()
31376
+ }),
31377
+ "security-sdk/s_sdk_sign_data_key/web_protect": classic_schemas_object({
31378
+ data: classic_schemas_string()
31379
+ })
31380
+ })
31389
31381
  });
31390
31382
  const douyinPublish = async (task, params)=>{
31391
31383
  if ("rpa" === params.actionType) return douyinPublish_rpa_rpaAction(task, params);
@@ -37846,13 +37838,13 @@ var __webpack_exports__ = {};
37846
37838
  });
37847
37839
  return success(data, message);
37848
37840
  };
37849
- const xiaohongshuPublish_FictionalRendition = classic_schemas_object({
37841
+ const FictionalRendition = classic_schemas_object({
37850
37842
  type: literal("fictional-rendition")
37851
37843
  });
37852
- const xiaohongshuPublish_AIGenerated = classic_schemas_object({
37844
+ const AIGenerated = classic_schemas_object({
37853
37845
  type: literal("ai-generated")
37854
37846
  });
37855
- const xiaohongshuPublish_SourceStatement = classic_schemas_object({
37847
+ const SourceStatement = classic_schemas_object({
37856
37848
  type: literal("source-statement"),
37857
37849
  childType: classic_schemas_enum([
37858
37850
  "self-labeling",
@@ -37864,9 +37856,9 @@ var __webpack_exports__ = {};
37864
37856
  sourceMedia: classic_schemas_string().optional()
37865
37857
  });
37866
37858
  schemas_union([
37867
- xiaohongshuPublish_FictionalRendition,
37868
- xiaohongshuPublish_AIGenerated,
37869
- xiaohongshuPublish_SourceStatement
37859
+ FictionalRendition,
37860
+ AIGenerated,
37861
+ SourceStatement
37870
37862
  ]);
37871
37863
  const XiaohongshuPublishParamsSchema = ActionCommonParamsSchema.extend({
37872
37864
  banners: classic_schemas_array(classic_schemas_string()),