@iflyrpa/actions 1.2.6-beta.0 → 1.2.6-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.
@@ -0,0 +1,7 @@
1
+ import { type CommonAction } from "@iflyrpa/share";
2
+ import type { ActiomCommonParams, Xiaohongshu } from "../../types";
3
+ export interface SearchXiaohongshuTopicListParams extends ActiomCommonParams {
4
+ searchValue: string;
5
+ }
6
+ export type PublishAction = CommonAction<SearchXiaohongshuTopicListParams, Xiaohongshu.Topic[]>;
7
+ export declare const searchXiaohongshuTopicList: PublishAction;
@@ -20,6 +20,7 @@ export interface XiaohongshuPublishParams extends ActiomCommonParams {
20
20
  content: string;
21
21
  address?: Xiaohongshu.Location;
22
22
  selfDeclaration?: SelfDeclaration;
23
+ topic?: Xiaohongshu.Topic[];
23
24
  visibleRange: "public" | "private";
24
25
  isImmediatelyPublish?: boolean;
25
26
  scheduledPublish?: string;
package/dist/bundle.js CHANGED
@@ -13583,6 +13583,36 @@ var __webpack_exports__ = {};
13583
13583
  return success([]);
13584
13584
  }
13585
13585
  };
13586
+ const searchXiaohongshuTopicList = async (_task, params)=>{
13587
+ const http = new Http({
13588
+ headers: {
13589
+ cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
13590
+ referer: "https://creator.xiaohongshu.com",
13591
+ origin: "https://creator.xiaohongshu.com"
13592
+ }
13593
+ });
13594
+ try {
13595
+ const result = await http.api({
13596
+ method: "post",
13597
+ url: "https://edith.xiaohongshu.com/web_api/sns/v1/search/topic",
13598
+ data: {
13599
+ keyword: params.searchValue,
13600
+ suggest_topic_request: {
13601
+ title: "",
13602
+ desc: `#${params.searchValue}`
13603
+ },
13604
+ page: {
13605
+ page_size: 20,
13606
+ page: 1
13607
+ }
13608
+ },
13609
+ defaultErrorMsg: "话题搜索异常,请稍后重试。"
13610
+ });
13611
+ return success(0 === result.code ? result.data.topic_info_dtos : [], '获取话题成功');
13612
+ } catch (error) {
13613
+ return success([]);
13614
+ }
13615
+ };
13586
13616
  const mock_errnoMap = {
13587
13617
  20004020: "图片上传异常,请重新绑定账号后同步。",
13588
13618
  7115: "正文图片和封面图片推荐jpg、png格式。",
@@ -13791,6 +13821,10 @@ var __webpack_exports__ = {};
13791
13821
  });
13792
13822
  } else await route.continue();
13793
13823
  });
13824
+ PopupListener(page, '.byte-modal.publish-exclusive-modal .title', "激励", '.byte-modal-close-icon', {
13825
+ checkInterval: 1000,
13826
+ stopAfterClick: false
13827
+ });
13794
13828
  const titleInstance = page.locator(".publish-editor-title-wrapper .publish-editor-title textarea");
13795
13829
  await titleInstance.click();
13796
13830
  await titleInstance.fill(params.title);
@@ -14063,7 +14097,10 @@ var __webpack_exports__ = {};
14063
14097
  153201: "不支持发布审核中或转码中的视频",
14064
14098
  200007: "登陆失败,请重新登陆账户后重试。",
14065
14099
  64703: "摘要超出120字长度限制,请修改摘要后重试。",
14066
- "-4": "不支持发布审核中或转码中的视频"
14100
+ "-4": "不支持发布审核中或转码中的视频",
14101
+ "-2": "不支持发布审核中或转码中的视频",
14102
+ 770001: "不支持发布审核中或转码中的视频",
14103
+ 200074: "系统繁忙,请稍后重试!"
14067
14104
  };
14068
14105
  const ignoreErrno = [
14069
14106
  154019
@@ -15430,7 +15467,8 @@ var __webpack_exports__ = {};
15430
15467
  }
15431
15468
  }
15432
15469
  const xiaohongshuPublish_mock_errnoMap = {
15433
- 903: "账户已登出,需重新登陆重试!"
15470
+ 903: "账户已登出,需重新登陆重试!",
15471
+ 902: "登录已过期,请重新登录!"
15434
15472
  };
15435
15473
  const xsEncrypt = new XsEncrypt();
15436
15474
  const xiaohongshuPublish_mock_mockAction = async (task, params)=>{
@@ -15500,13 +15538,34 @@ var __webpack_exports__ = {};
15500
15538
  };
15501
15539
  };
15502
15540
  const coverInfos = await Promise.all(params.banners.map((it, idx)=>uploadFile(it, idx)));
15541
+ if (params.topic && params.topic.length > 0) await Promise.all(params.topic.map(async (topic)=>{
15542
+ if (!topic["id"]) {
15543
+ const topicData = {
15544
+ topic_names: topic["name"]
15545
+ };
15546
+ const topicDataStr = xsEncrypt.dumps(topicData);
15547
+ const publishXt = Date.now().toString();
15548
+ const publishXs = await xsEncrypt.encryptXs(`/web_api/sns/capa/postgw/topic/batch_customized${topicDataStr}`, a1Cookie, publishXt);
15549
+ let createTopic = await http.api({
15550
+ method: "POST",
15551
+ url: "https://edith.xiaohongshu.com/web_api/sns/capa/postgw/topic/batch_customized",
15552
+ headers: {
15553
+ "x-s": publishXs,
15554
+ "x-t": publishXt
15555
+ },
15556
+ data: topicData,
15557
+ defaultErrorMsg: "话题创建异常,请稍后重试。"
15558
+ });
15559
+ Object.assign(topic, createTopic.data.topic_infos[0]);
15560
+ }
15561
+ }));
15503
15562
  const publishData = {
15504
15563
  common: {
15505
15564
  ats: [],
15506
15565
  biz_relations: [],
15507
15566
  desc: params?.content,
15508
15567
  goods_info: {},
15509
- hash_tag: [],
15568
+ hash_tag: params.topic || [],
15510
15569
  note_id: "",
15511
15570
  source: JSON.stringify({
15512
15571
  type: "web",
@@ -15624,6 +15683,7 @@ var __webpack_exports__ = {};
15624
15683
  '/api/galaxy/v2/creator/activity_center/list',
15625
15684
  '/web_api/sns/v5/creator/topic/template/list',
15626
15685
  '/web_api/sns/v5/creator/file/encryption',
15686
+ '/web_api/sns/capa/postgw/topic/batch_customized',
15627
15687
  '/web_api/sns/v2/note'
15628
15688
  ];
15629
15689
  await page.route('**', async (route, request)=>{
@@ -15645,11 +15705,11 @@ var __webpack_exports__ = {};
15645
15705
  });
15646
15706
  return;
15647
15707
  }
15648
- const isNoteRequest = urlObj.pathname.includes(interceptUrls[4]);
15708
+ const isNoteRequest = urlObj.pathname.includes(interceptUrls[5]);
15649
15709
  const xs = await (isNoteRequest ? (async ()=>{
15650
15710
  const publishData = JSON.parse(request.postData() || "");
15651
15711
  const publishDataStr = rpa_xsEncrypt.dumps(publishData);
15652
- return rpa_xsEncrypt.encryptXs(interceptUrls[4] + publishDataStr, a1Cookie, xt);
15712
+ return rpa_xsEncrypt.encryptXs(interceptUrls[5] + publishDataStr, a1Cookie, xt);
15653
15713
  })() : rpa_xsEncrypt.encryptXs(fetchCoverUrl, a1Cookie, xt));
15654
15714
  const newHeaders = {
15655
15715
  ...request.headers(),
@@ -15703,7 +15763,7 @@ var __webpack_exports__ = {};
15703
15763
  data: page.url()
15704
15764
  };
15705
15765
  }
15706
- await page.locator("#content-area .menu-container .publish-video a").click();
15766
+ await page.locator("#content-area .menu-container .publish-video .btn").click();
15707
15767
  await page.locator('.creator-container .header .creator-tab:not([style*="-9999px"]) .title').filter({
15708
15768
  hasText: /^上传图文$/
15709
15769
  }).click();
@@ -15720,7 +15780,15 @@ var __webpack_exports__ = {};
15720
15780
  await titleInstance.fill(params.title);
15721
15781
  const descInstance = page.locator(".editor-container #quillEditor .ql-editor");
15722
15782
  await descInstance.click();
15723
- await descInstance.fill(params.content);
15783
+ await descInstance.pressSequentially(params.content.replace(/#.*?\[.*?]\#/g, ""));
15784
+ if (params.topic && params.topic.length > 0) for (const it of params.topic){
15785
+ await descInstance.pressSequentially(`#${it["name"]}`);
15786
+ await page.locator('.ql-mention-loading').waitFor({
15787
+ state: 'detached'
15788
+ });
15789
+ await page.waitForTimeout(1000);
15790
+ await page.locator('#quill-mention-item-0 .item-view-num').click();
15791
+ }
15724
15792
  const container = page.locator(".creator-container .content .scroll-content");
15725
15793
  await container.focus();
15726
15794
  await page.mouse.wheel(0, 500);
@@ -15729,8 +15797,8 @@ var __webpack_exports__ = {};
15729
15797
  }), params.address.name);
15730
15798
  if (params.selfDeclaration) {
15731
15799
  await page.locator(".media-settings .flexbox").filter({
15732
- hasText: "自主声明"
15733
- }).locator(".d-select-wrapper").click();
15800
+ hasText: "内容类型声明"
15801
+ }).locator(".d-select-placeholder").click();
15734
15802
  const poperInstance = await getPoperInstance();
15735
15803
  const selfDeclarationInstance = poperInstance.locator(".d-options .d-option");
15736
15804
  if ("fictional-rendition" === params.selfDeclaration.type) await selfDeclarationInstance.filter({
@@ -15806,9 +15874,7 @@ var __webpack_exports__ = {};
15806
15874
  if ("mockApi" === params.actionType) return xiaohongshuPublish_mock_mockAction(task, params);
15807
15875
  return executeAction(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
15808
15876
  };
15809
- var package_namespaceObject = {
15810
- i8: "1.2.5"
15811
- };
15877
+ var package_namespaceObject = JSON.parse('{"i8":"1.2.6-beta.1"}');
15812
15878
  class Action {
15813
15879
  constructor(task){
15814
15880
  this.task = task;
@@ -15843,6 +15909,9 @@ var __webpack_exports__ = {};
15843
15909
  xiaohongshuPublish(params) {
15844
15910
  return this.bindTask(xiaohongshuPublish, params);
15845
15911
  }
15912
+ searchXiaohongshuTopicList(params) {
15913
+ return this.bindTask(searchXiaohongshuTopicList, params);
15914
+ }
15846
15915
  searchXiaohongshuLocation(params) {
15847
15916
  return this.bindTask(searchXiaohongshuLocation, params);
15848
15917
  }