@iflyrpa/actions 1.2.14-beta.3 → 1.2.14-beta.5

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/index.js CHANGED
@@ -1,377 +1,4 @@
1
1
  var __webpack_modules__ = {
2
- "./src/actions/searchAccountInfo/getWxInfo.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3
- "use strict";
4
- __webpack_require__.d(__webpack_exports__, {
5
- n: ()=>getWeixinData
6
- });
7
- var _iflyrpa_share__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("@iflyrpa/share");
8
- var _iflyrpa_share__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(_iflyrpa_share__WEBPACK_IMPORTED_MODULE_0__);
9
- var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/actions/searchAccountInfo/types.ts");
10
- var _utils_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/utils/http.ts");
11
- var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/index.ts");
12
- async function getWeixinData(params) {
13
- const { token } = params;
14
- if (!token) return {
15
- code: 200,
16
- message: "缺少token",
17
- data: null
18
- };
19
- try {
20
- const { token } = params;
21
- if (!token) return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)("缺少token", 200);
22
- const http = new _utils_http__WEBPACK_IMPORTED_MODULE_1__.e({
23
- headers: {
24
- cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
25
- }
26
- });
27
- const massRandomIDHtml = await http.api({
28
- method: "get",
29
- url: "https://mp.weixin.qq.com/misc/appmsganalysis",
30
- params: {
31
- token,
32
- lang: "zh_CN",
33
- action: "report"
34
- }
35
- });
36
- const massRandomIDReg = massRandomIDHtml.match(/mass_all\.([a-z0-9]+)\.js/);
37
- const massRandomID = massRandomIDReg ? massRandomIDReg[1] : "";
38
- const [readInfo, fansInfoHtml] = await Promise.all([
39
- http.api({
40
- method: "get",
41
- url: `https://res.wx.qq.com/mpres/zh_CN/htmledition/pages/statistics/mass_all/mass_all.${massRandomID}.js`
42
- }),
43
- http.api({
44
- method: "get",
45
- url: "https://mp.weixin.qq.com/misc/useranalysis",
46
- params: {
47
- token,
48
- lang: "zh_CN"
49
- }
50
- })
51
- ]);
52
- const regex = /(readAllList|shareAllList|completeAllList):\s*(\[[^\]]+\])/g;
53
- let match;
54
- const arrays = {};
55
- while(null !== (match = regex.exec(readInfo)))arrays[match[1]] = JSON.parse(match[2]);
56
- const readAllList = arrays.readAllList || [];
57
- const shareAllList = arrays.shareAllList || [];
58
- const fansInfoReg = fansInfoHtml.match(/window\.CGI_DATA\['pages\/statistics\/user_statistics'\]\s*=\s*(\{[\s\S]*?\});/);
59
- if (!fansInfoReg) return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)("未找到粉丝信息", 200);
60
- const fansInfo = eval("(" + fansInfoReg[1] + ")");
61
- const yesterday = _utils__WEBPACK_IMPORTED_MODULE_2__.Tx.format(new Date().setDate(new Date().getDate() - 1), "yyyy-MM-dd");
62
- const yesterdayFansInfo = fansInfo.list[0]?.list.find((item)=>item.date === yesterday);
63
- if (!yesterdayFansInfo) return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)("未找到粉丝数", 200);
64
- const wxData = {
65
- fansNum: yesterdayFansInfo.cumulate_user,
66
- fansNumYesterday: yesterdayFansInfo.new_user - yesterdayFansInfo.cancel_user,
67
- readNumYesterday: readAllList[0] || 0,
68
- shareNumYesterday: shareAllList[0] || 0
69
- };
70
- return (0, _iflyrpa_share__WEBPACK_IMPORTED_MODULE_0__.success)(wxData, "微信粉丝数据获取成功!");
71
- } catch (error) {
72
- return (0, _types__WEBPACK_IMPORTED_MODULE_3__.V)(error instanceof Error ? error.message : "微信数据获取失败");
73
- }
74
- }
75
- },
76
- "./src/actions/searchAccountInfo/types.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
77
- "use strict";
78
- __webpack_require__.d(__webpack_exports__, {
79
- V: ()=>errorResponse
80
- });
81
- const errorResponse = (message, code = 500)=>({
82
- code,
83
- message,
84
- data: null
85
- });
86
- },
87
- "./src/utils/http.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
88
- "use strict";
89
- __webpack_require__.d(__webpack_exports__, {
90
- e: ()=>Http
91
- });
92
- var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("axios");
93
- var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);
94
- class Http {
95
- static handleApiError(error) {
96
- if (error && "object" == typeof error && "code" in error && "message" in error) return error;
97
- return {
98
- code: 500,
99
- message: "",
100
- data: error
101
- };
102
- }
103
- constructor(config){
104
- this.apiClient = axios__WEBPACK_IMPORTED_MODULE_0___default().create(config);
105
- }
106
- addResponseInterceptor(findError) {
107
- this.apiClient.interceptors.response.use((response)=>{
108
- const error = findError(response);
109
- if (error) return Promise.reject(Object.assign(error, {
110
- extra: {
111
- method: response.config.method,
112
- url: response.config.url
113
- }
114
- }));
115
- return response;
116
- }, (error)=>{
117
- const errorResponse = {
118
- code: error.response?.status || 500,
119
- message: error.message || "",
120
- data: error.response?.data,
121
- extra: {
122
- method: error.config?.method,
123
- url: error.config?.url
124
- }
125
- };
126
- if (error.response?.data) {
127
- if ("object" == typeof error.response.data) {
128
- const serverError = error.response.data;
129
- if (serverError.message) errorResponse.message = serverError.message;
130
- errorResponse.data = serverError;
131
- }
132
- }
133
- return Promise.reject(errorResponse);
134
- });
135
- }
136
- async api(config) {
137
- try {
138
- const response = await this.apiClient(config);
139
- return response.data;
140
- } catch (error) {
141
- return Promise.reject(Http.handleApiError(error));
142
- }
143
- }
144
- }
145
- },
146
- "./src/utils/index.ts": function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
147
- "use strict";
148
- __webpack_require__.d(__webpack_exports__, {
149
- hc: ()=>parseUrlQueryString,
150
- I: ()=>replaceImgSrc,
151
- E_: ()=>extractImgTag,
152
- i9: ()=>getRandomInRange,
153
- f8: ()=>PopupListener,
154
- qN: ()=>copyHtmlToClipboard,
155
- Tx: ()=>TimeFormatter,
156
- Tb: ()=>defaultParams,
157
- n: ()=>stringifyError,
158
- H8: ()=>getFileState,
159
- jo: ()=>executeAction,
160
- e0: ()=>calculateCropCoordinates
161
- });
162
- var external_node_fs_ = __webpack_require__("node:fs");
163
- var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_);
164
- var external_node_path_ = __webpack_require__("node:path");
165
- var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_);
166
- const external_dom_serializer_namespaceObject = require("dom-serializer");
167
- var external_dom_serializer_default = /*#__PURE__*/ __webpack_require__.n(external_dom_serializer_namespaceObject);
168
- const external_domhandler_namespaceObject = require("domhandler");
169
- const external_htmlparser2_namespaceObject = require("htmlparser2");
170
- const external_mime_types_namespaceObject = require("mime-types");
171
- var external_mime_types_default = /*#__PURE__*/ __webpack_require__.n(external_mime_types_namespaceObject);
172
- var http = __webpack_require__("./src/utils/http.ts");
173
- function getRandomInRange(min, max) {
174
- return Math.floor(Math.random() * (max - min + 1)) + min;
175
- }
176
- const getFileState = (filePath)=>{
177
- const filename = external_node_path_default().basename(filePath);
178
- const fileType = external_mime_types_default().lookup(filePath);
179
- const stats = external_node_fs_default().statSync(filePath);
180
- const fileSize = stats.size;
181
- const lastModifiedDate = stats.mtime;
182
- return {
183
- name: filename,
184
- type: fileType,
185
- size: fileSize,
186
- lastModifiedDate: lastModifiedDate.toString()
187
- };
188
- };
189
- const calculateCropCoordinates = (width, height, aspectRatio)=>{
190
- const targetRatio = aspectRatio[0] / aspectRatio[1];
191
- let cropWidth;
192
- let cropHeight;
193
- if (width / height > targetRatio) {
194
- cropHeight = height;
195
- cropWidth = height * targetRatio;
196
- } else {
197
- cropWidth = width;
198
- cropHeight = width / targetRatio;
199
- }
200
- const x1 = (width - cropWidth) / 2;
201
- const y1 = (height - cropHeight) / 2;
202
- const x2 = x1 + cropWidth;
203
- const y2 = y1 + cropHeight;
204
- return {
205
- x1: x1 / width,
206
- y1: y1 / height,
207
- x2: x2 / width,
208
- y2: y2 / height
209
- };
210
- };
211
- const extractImgTag = (html)=>{
212
- const srcList = [];
213
- const parser = new external_htmlparser2_namespaceObject.Parser({
214
- onopentag (name, attributes) {
215
- if ("img" === name && (attributes.src.trim() || attributes.currentSrc.trim())) srcList.push(attributes.src.trim() || attributes.currentSrc.trim());
216
- }
217
- });
218
- parser.write(html);
219
- parser.end();
220
- return srcList;
221
- };
222
- class TimeFormatter {
223
- static format(timestamp, formatStr = 'yyyy-MM-dd hh:mm') {
224
- if ('number' == typeof timestamp && 10 === timestamp.toString().length) timestamp *= 1000;
225
- const date = new Date(timestamp);
226
- const map = {
227
- yyyy: String(date.getFullYear()),
228
- yy: String(date.getFullYear()).slice(-2),
229
- MM: String(date.getMonth() + 1).padStart(2, '0'),
230
- dd: String(date.getDate()).padStart(2, '0'),
231
- hh: String(date.getHours()).padStart(2, '0'),
232
- mm: String(date.getMinutes()).padStart(2, '0'),
233
- ss: String(date.getSeconds()).padStart(2, '0'),
234
- M: String(date.getMonth() + 1),
235
- d: String(date.getDate()),
236
- h: String(date.getHours()),
237
- m: String(date.getMinutes()),
238
- s: String(date.getSeconds())
239
- };
240
- return formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, (key)=>map[key]);
241
- }
242
- }
243
- const replaceImgSrc = (html, callback)=>{
244
- let lastedHtml = html;
245
- const isImageTag = (node)=>"tag" === node.type && "img" === node.name;
246
- const traverseDom = (node)=>{
247
- if (external_htmlparser2_namespaceObject.DomUtils.hasChildren(node)) for (const child of node.children){
248
- if (isImageTag(child)) callback(child);
249
- traverseDom(child);
250
- }
251
- };
252
- const handler = new external_domhandler_namespaceObject.DomHandler((error, dom)=>{
253
- if (error) console.log(error);
254
- else dom.forEach(traverseDom);
255
- lastedHtml = external_dom_serializer_default()(dom, {
256
- decodeEntities: false
257
- });
258
- });
259
- const parser = new external_htmlparser2_namespaceObject.Parser(handler, {
260
- decodeEntities: false
261
- });
262
- parser.write(html);
263
- parser.end();
264
- return lastedHtml;
265
- };
266
- const stringifyError = (error)=>{
267
- if (error instanceof Error) return error.toString();
268
- if ("object" == typeof error) return JSON.stringify(error);
269
- return error;
270
- };
271
- const executeAction = (...actions)=>async (task, params)=>{
272
- let result = {
273
- code: 500,
274
- message: "",
275
- data: null
276
- };
277
- for(let index = 0; index < actions.length; index++){
278
- const action = actions[index];
279
- try {
280
- result = await action(task, params);
281
- } catch (error) {
282
- result = http.e.handleApiError(error);
283
- }
284
- if (0 === result.code || 200 === result.code) break;
285
- if (index !== actions.length - 1) task.logger.error(result.message, stringifyError(result.data), result.extra);
286
- }
287
- return result;
288
- };
289
- async function copyHtmlToClipboard(page, html, options = {
290
- format: "text/html",
291
- fallback: true
292
- }) {
293
- try {
294
- await page.evaluate(async ({ htmlContent, format })=>{
295
- const blob = new Blob([
296
- htmlContent
297
- ], {
298
- type: format
299
- });
300
- await navigator.clipboard.write([
301
- new ClipboardItem({
302
- [format]: blob
303
- })
304
- ]);
305
- }, {
306
- htmlContent: html,
307
- format: options.format
308
- });
309
- } catch (error) {
310
- if (options.fallback) await page.evaluate((htmlContent)=>{
311
- const div = document.createElement("div");
312
- div.contentEditable = "true";
313
- div.style.cssText = `
314
- position: fixed;
315
- left: -9999px;
316
- opacity: 0;
317
- pointer-events: none;
318
- `;
319
- div.innerHTML = htmlContent;
320
- document.body.appendChild(div);
321
- const range = document.createRange();
322
- range.selectNodeContents(div);
323
- const selection = window.getSelection();
324
- selection.removeAllRanges();
325
- selection.addRange(range);
326
- document.execCommand("copy");
327
- document.body.removeChild(div);
328
- selection.removeAllRanges();
329
- }, html);
330
- }
331
- }
332
- function PopupListener(page, popupSelector, popKey, buttonSelector, options = {}) {
333
- const { checkInterval = 1000, stopAfterClick = false } = options;
334
- const popup = page.locator(popupSelector);
335
- const button = page.locator(buttonSelector);
336
- const intervalId = setInterval(async ()=>{
337
- try {
338
- if (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent() || "").includes(popKey)) {
339
- await button.click({
340
- force: true
341
- });
342
- if (stopAfterClick) clearInterval(intervalId);
343
- }
344
- } catch (err) {}
345
- }, checkInterval);
346
- return ()=>{
347
- clearInterval(intervalId);
348
- };
349
- }
350
- const parseUrlQueryString = (url)=>{
351
- const queryStringObject = {};
352
- if (!url || !url.includes("?")) return queryStringObject;
353
- const queryString = url.split("?")[1];
354
- if (!queryString) return queryStringObject;
355
- const queryWithoutHash = queryString.split("#")[0];
356
- const queryStringArray = queryWithoutHash.split("&");
357
- for (const item of queryStringArray){
358
- if (!item) continue;
359
- const equalIndex = item.indexOf("=");
360
- if (-1 === equalIndex) queryStringObject[item] = "";
361
- else {
362
- const key = item.slice(0, equalIndex);
363
- const value = item.slice(equalIndex + 1);
364
- try {
365
- queryStringObject[key] = decodeURIComponent(value);
366
- } catch (e) {
367
- queryStringObject[key] = value;
368
- }
369
- }
370
- }
371
- return queryStringObject;
372
- };
373
- const defaultParams = (params, defaults)=>Object.assign({}, defaults, params);
374
- },
375
2
  "./src/utils/ttABEncrypt.js": function(module, __unused_webpack_exports, __webpack_require__) {
376
3
  module = __webpack_require__.nmd(module);
377
4
  const a0_0x45db08 = a0_0x4b0d;
@@ -1453,22 +1080,6 @@ var __webpack_modules__ = {
1453
1080
  return Data2A_B(Base2Data(EnvData2CharCode(_0x315138, _0x1c32b3, _0x56536b)));
1454
1081
  }
1455
1082
  module[a0_0x45db08(0xae)] = GenAB;
1456
- },
1457
- "@iflyrpa/share": function(module) {
1458
- "use strict";
1459
- module.exports = require("@iflyrpa/share");
1460
- },
1461
- axios: function(module) {
1462
- "use strict";
1463
- module.exports = require("axios");
1464
- },
1465
- "node:fs": function(module) {
1466
- "use strict";
1467
- module.exports = require("node:fs");
1468
- },
1469
- "node:path": function(module) {
1470
- "use strict";
1471
- module.exports = require("node:path");
1472
1083
  }
1473
1084
  };
1474
1085
  var __webpack_module_cache__ = {};
@@ -1535,15 +1146,273 @@ var __webpack_exports__ = {};
1535
1146
  version: ()=>package_namespaceObject.i8,
1536
1147
  Action: ()=>Action
1537
1148
  });
1538
- var utils = __webpack_require__("./src/utils/index.ts");
1539
- var external_node_fs_ = __webpack_require__("node:fs");
1540
- var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_);
1541
- var external_node_path_ = __webpack_require__("node:path");
1542
- var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_);
1543
- var share_ = __webpack_require__("@iflyrpa/share");
1149
+ const external_node_fs_namespaceObject = require("node:fs");
1150
+ var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
1151
+ const external_node_path_namespaceObject = require("node:path");
1152
+ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
1153
+ const external_dom_serializer_namespaceObject = require("dom-serializer");
1154
+ var external_dom_serializer_default = /*#__PURE__*/ __webpack_require__.n(external_dom_serializer_namespaceObject);
1155
+ const external_domhandler_namespaceObject = require("domhandler");
1156
+ const external_htmlparser2_namespaceObject = require("htmlparser2");
1157
+ const external_mime_types_namespaceObject = require("mime-types");
1158
+ var external_mime_types_default = /*#__PURE__*/ __webpack_require__.n(external_mime_types_namespaceObject);
1159
+ const external_axios_namespaceObject = require("axios");
1160
+ var external_axios_default = /*#__PURE__*/ __webpack_require__.n(external_axios_namespaceObject);
1161
+ class Http {
1162
+ static handleApiError(error) {
1163
+ if (error && "object" == typeof error && "code" in error && "message" in error) return error;
1164
+ return {
1165
+ code: 500,
1166
+ message: "",
1167
+ data: error
1168
+ };
1169
+ }
1170
+ constructor(config){
1171
+ this.apiClient = external_axios_default().create(config);
1172
+ }
1173
+ addResponseInterceptor(findError) {
1174
+ this.apiClient.interceptors.response.use((response)=>{
1175
+ const error = findError(response);
1176
+ if (error) return Promise.reject(Object.assign(error, {
1177
+ extra: {
1178
+ method: response.config.method,
1179
+ url: response.config.url
1180
+ }
1181
+ }));
1182
+ return response;
1183
+ }, (error)=>{
1184
+ const errorResponse = {
1185
+ code: error.response?.status || 500,
1186
+ message: error.message || "",
1187
+ data: error.response?.data,
1188
+ extra: {
1189
+ method: error.config?.method,
1190
+ url: error.config?.url
1191
+ }
1192
+ };
1193
+ if (error.response?.data) {
1194
+ if ("object" == typeof error.response.data) {
1195
+ const serverError = error.response.data;
1196
+ if (serverError.message) errorResponse.message = serverError.message;
1197
+ errorResponse.data = serverError;
1198
+ }
1199
+ }
1200
+ return Promise.reject(errorResponse);
1201
+ });
1202
+ }
1203
+ async api(config) {
1204
+ try {
1205
+ const response = await this.apiClient(config);
1206
+ return response.data;
1207
+ } catch (error) {
1208
+ return Promise.reject(Http.handleApiError(error));
1209
+ }
1210
+ }
1211
+ }
1212
+ function getRandomInRange(min, max) {
1213
+ return Math.floor(Math.random() * (max - min + 1)) + min;
1214
+ }
1215
+ const getFileState = (filePath)=>{
1216
+ const filename = external_node_path_default().basename(filePath);
1217
+ const fileType = external_mime_types_default().lookup(filePath);
1218
+ const stats = external_node_fs_default().statSync(filePath);
1219
+ const fileSize = stats.size;
1220
+ const lastModifiedDate = stats.mtime;
1221
+ return {
1222
+ name: filename,
1223
+ type: fileType,
1224
+ size: fileSize,
1225
+ lastModifiedDate: lastModifiedDate.toString()
1226
+ };
1227
+ };
1228
+ const calculateCropCoordinates = (width, height, aspectRatio)=>{
1229
+ const targetRatio = aspectRatio[0] / aspectRatio[1];
1230
+ let cropWidth;
1231
+ let cropHeight;
1232
+ if (width / height > targetRatio) {
1233
+ cropHeight = height;
1234
+ cropWidth = height * targetRatio;
1235
+ } else {
1236
+ cropWidth = width;
1237
+ cropHeight = width / targetRatio;
1238
+ }
1239
+ const x1 = (width - cropWidth) / 2;
1240
+ const y1 = (height - cropHeight) / 2;
1241
+ const x2 = x1 + cropWidth;
1242
+ const y2 = y1 + cropHeight;
1243
+ return {
1244
+ x1: x1 / width,
1245
+ y1: y1 / height,
1246
+ x2: x2 / width,
1247
+ y2: y2 / height
1248
+ };
1249
+ };
1250
+ const extractImgTag = (html)=>{
1251
+ const srcList = [];
1252
+ const parser = new external_htmlparser2_namespaceObject.Parser({
1253
+ onopentag (name, attributes) {
1254
+ if ("img" === name && (attributes.src.trim() || attributes.currentSrc.trim())) srcList.push(attributes.src.trim() || attributes.currentSrc.trim());
1255
+ }
1256
+ });
1257
+ parser.write(html);
1258
+ parser.end();
1259
+ return srcList;
1260
+ };
1261
+ class TimeFormatter {
1262
+ static format(timestamp, formatStr = 'yyyy-MM-dd hh:mm') {
1263
+ if ('number' == typeof timestamp && 10 === timestamp.toString().length) timestamp *= 1000;
1264
+ const date = new Date(timestamp);
1265
+ const map = {
1266
+ yyyy: String(date.getFullYear()),
1267
+ yy: String(date.getFullYear()).slice(-2),
1268
+ MM: String(date.getMonth() + 1).padStart(2, '0'),
1269
+ dd: String(date.getDate()).padStart(2, '0'),
1270
+ hh: String(date.getHours()).padStart(2, '0'),
1271
+ mm: String(date.getMinutes()).padStart(2, '0'),
1272
+ ss: String(date.getSeconds()).padStart(2, '0'),
1273
+ M: String(date.getMonth() + 1),
1274
+ d: String(date.getDate()),
1275
+ h: String(date.getHours()),
1276
+ m: String(date.getMinutes()),
1277
+ s: String(date.getSeconds())
1278
+ };
1279
+ return formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, (key)=>map[key]);
1280
+ }
1281
+ }
1282
+ const replaceImgSrc = (html, callback)=>{
1283
+ let lastedHtml = html;
1284
+ const isImageTag = (node)=>"tag" === node.type && "img" === node.name;
1285
+ const traverseDom = (node)=>{
1286
+ if (external_htmlparser2_namespaceObject.DomUtils.hasChildren(node)) for (const child of node.children){
1287
+ if (isImageTag(child)) callback(child);
1288
+ traverseDom(child);
1289
+ }
1290
+ };
1291
+ const handler = new external_domhandler_namespaceObject.DomHandler((error, dom)=>{
1292
+ if (error) console.log(error);
1293
+ else dom.forEach(traverseDom);
1294
+ lastedHtml = external_dom_serializer_default()(dom, {
1295
+ decodeEntities: false
1296
+ });
1297
+ });
1298
+ const parser = new external_htmlparser2_namespaceObject.Parser(handler, {
1299
+ decodeEntities: false
1300
+ });
1301
+ parser.write(html);
1302
+ parser.end();
1303
+ return lastedHtml;
1304
+ };
1305
+ const stringifyError = (error)=>{
1306
+ if (error instanceof Error) return error.toString();
1307
+ if ("object" == typeof error) return JSON.stringify(error);
1308
+ return error;
1309
+ };
1310
+ const executeAction = (...actions)=>async (task, params)=>{
1311
+ let result = {
1312
+ code: 500,
1313
+ message: "",
1314
+ data: null
1315
+ };
1316
+ for(let index = 0; index < actions.length; index++){
1317
+ const action = actions[index];
1318
+ try {
1319
+ result = await action(task, params);
1320
+ } catch (error) {
1321
+ result = Http.handleApiError(error);
1322
+ }
1323
+ if (0 === result.code || 200 === result.code) break;
1324
+ if (index !== actions.length - 1) task.logger.error(result.message, stringifyError(result.data), result.extra);
1325
+ }
1326
+ return result;
1327
+ };
1328
+ async function copyHtmlToClipboard(page, html, options = {
1329
+ format: "text/html",
1330
+ fallback: true
1331
+ }) {
1332
+ try {
1333
+ await page.evaluate(async ({ htmlContent, format })=>{
1334
+ const blob = new Blob([
1335
+ htmlContent
1336
+ ], {
1337
+ type: format
1338
+ });
1339
+ await navigator.clipboard.write([
1340
+ new ClipboardItem({
1341
+ [format]: blob
1342
+ })
1343
+ ]);
1344
+ }, {
1345
+ htmlContent: html,
1346
+ format: options.format
1347
+ });
1348
+ } catch (error) {
1349
+ if (options.fallback) await page.evaluate((htmlContent)=>{
1350
+ const div = document.createElement("div");
1351
+ div.contentEditable = "true";
1352
+ div.style.cssText = `
1353
+ position: fixed;
1354
+ left: -9999px;
1355
+ opacity: 0;
1356
+ pointer-events: none;
1357
+ `;
1358
+ div.innerHTML = htmlContent;
1359
+ document.body.appendChild(div);
1360
+ const range = document.createRange();
1361
+ range.selectNodeContents(div);
1362
+ const selection = window.getSelection();
1363
+ selection.removeAllRanges();
1364
+ selection.addRange(range);
1365
+ document.execCommand("copy");
1366
+ document.body.removeChild(div);
1367
+ selection.removeAllRanges();
1368
+ }, html);
1369
+ }
1370
+ }
1371
+ function PopupListener(page, popupSelector, popKey, buttonSelector, options = {}) {
1372
+ const { checkInterval = 1000, stopAfterClick = false } = options;
1373
+ const popup = page.locator(popupSelector);
1374
+ const button = page.locator(buttonSelector);
1375
+ const intervalId = setInterval(async ()=>{
1376
+ try {
1377
+ if (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent() || "").includes(popKey)) {
1378
+ await button.click({
1379
+ force: true
1380
+ });
1381
+ if (stopAfterClick) clearInterval(intervalId);
1382
+ }
1383
+ } catch (err) {}
1384
+ }, checkInterval);
1385
+ return ()=>{
1386
+ clearInterval(intervalId);
1387
+ };
1388
+ }
1389
+ const parseUrlQueryString = (url)=>{
1390
+ const queryStringObject = {};
1391
+ if (!url || !url.includes("?")) return queryStringObject;
1392
+ const queryString = url.split("?")[1];
1393
+ if (!queryString) return queryStringObject;
1394
+ const queryWithoutHash = queryString.split("#")[0];
1395
+ const queryStringArray = queryWithoutHash.split("&");
1396
+ for (const item of queryStringArray){
1397
+ if (!item) continue;
1398
+ const equalIndex = item.indexOf("=");
1399
+ if (-1 === equalIndex) queryStringObject[item] = "";
1400
+ else {
1401
+ const key = item.slice(0, equalIndex);
1402
+ const value = item.slice(equalIndex + 1);
1403
+ try {
1404
+ queryStringObject[key] = decodeURIComponent(value);
1405
+ } catch (e) {
1406
+ queryStringObject[key] = value;
1407
+ }
1408
+ }
1409
+ }
1410
+ return queryStringObject;
1411
+ };
1412
+ const defaultParams = (params, defaults)=>Object.assign({}, defaults, params);
1413
+ const share_namespaceObject = require("@iflyrpa/share");
1544
1414
  const external_form_data_namespaceObject = require("form-data");
1545
1415
  var external_form_data_default = /*#__PURE__*/ __webpack_require__.n(external_form_data_namespaceObject);
1546
- var utils_http = __webpack_require__("./src/utils/http.ts");
1547
1416
  const errnoMap = {
1548
1417
  20040706: "正文图片和封面图片推荐jpg、png格式。",
1549
1418
  20040084: "正文图片和封面图片推荐jpg、png格式。",
@@ -1562,7 +1431,7 @@ var __webpack_exports__ = {};
1562
1431
  const mockAction = async (task, params)=>{
1563
1432
  const { baijiahaoSingleCover, baijiahaoMultCover, baijiahaoCoverType } = params.settingInfo;
1564
1433
  const tmpCachePath = task.getTmpPath();
1565
- const http = new utils_http.e({
1434
+ const http = new Http({
1566
1435
  headers: {
1567
1436
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1568
1437
  token: params.token
@@ -1596,8 +1465,8 @@ var __webpack_exports__ = {};
1596
1465
  const uploadImages = async (_images)=>{
1597
1466
  const images = _images.filter((url)=>!!url && "" !== url.trim());
1598
1467
  return await Promise.all(images.map(async (url)=>{
1599
- const fileName = (0, share_.getFilenameFromUrl)(url);
1600
- const image = await (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1468
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
1469
+ const image = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1601
1470
  const formData = new (external_form_data_default())();
1602
1471
  formData.append("org_file_name", fileName);
1603
1472
  formData.append("type", "image");
@@ -1616,9 +1485,9 @@ var __webpack_exports__ = {};
1616
1485
  return res.ret;
1617
1486
  }));
1618
1487
  };
1619
- const originContentImages = (0, utils.E_)(params.content);
1488
+ const originContentImages = extractImgTag(params.content);
1620
1489
  const targetContentImages = await uploadImages(originContentImages);
1621
- const content = (0, utils.I)(params.content, (dom)=>{
1490
+ const content = replaceImgSrc(params.content, (dom)=>{
1622
1491
  if (dom.attribs.src) {
1623
1492
  const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
1624
1493
  dom.attribs.src = targetContentImages[idx].bos_url;
@@ -1693,7 +1562,7 @@ var __webpack_exports__ = {};
1693
1562
  },
1694
1563
  defaultErrorMsg: isDraft ? "文章同步出现异常,请稍后重试。" : "文章发布出现异常,请稍后重试。"
1695
1564
  });
1696
- return (0, share_.success)(res.ret.article_id, "百家号发布完成。");
1565
+ return (0, share_namespaceObject.success)(res.ret.article_id, "百家号发布完成。");
1697
1566
  };
1698
1567
  const rpaAction = async (task, params)=>{
1699
1568
  const tmpCachePath = task.getTmpPath();
@@ -1731,7 +1600,7 @@ var __webpack_exports__ = {};
1731
1600
  const titleInstance = page.locator("#ueditor #bjhNewsTitle .input-box textarea");
1732
1601
  await titleInstance.click();
1733
1602
  await titleInstance.fill(params.title);
1734
- await (0, utils.qN)(page, params.content);
1603
+ await copyHtmlToClipboard(page, params.content);
1735
1604
  await page.click("#ueditor .edui-editor-iframeholder iframe");
1736
1605
  await page.keyboard.press("Control+A");
1737
1606
  await page.keyboard.press("Control+V");
@@ -1747,8 +1616,8 @@ var __webpack_exports__ = {};
1747
1616
  const images = await Promise.all((isSingleCover ? [
1748
1617
  params.settingInfo.baijiahaoSingleCover
1749
1618
  ] : params.settingInfo.baijiahaoMultCover).map((url)=>{
1750
- const fileName = (0, share_.getFilenameFromUrl)(url);
1751
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1619
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
1620
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
1752
1621
  }));
1753
1622
  const coverSelector = page.locator(".cheetah-form-item-control .edit-cover-container .cover-list .DraggableTags-tag-drag .coverUploaderView");
1754
1623
  const coverCount = await coverSelector.count();
@@ -1831,7 +1700,7 @@ var __webpack_exports__ = {};
1831
1700
  hasText: "日"
1832
1701
  }).click();
1833
1702
  await page.locator('#select-date_list + * .cheetah-select-item-option', {
1834
- hasText: utils.Tx.format(params.settingInfo.timer, "M月dd日")
1703
+ hasText: TimeFormatter.format(params.settingInfo.timer, "M月dd日")
1835
1704
  }).click();
1836
1705
  await page.waitForTimeout(200);
1837
1706
  await page.locator(".timepublish-wrap-select .select-wrap", {
@@ -1852,7 +1721,7 @@ var __webpack_exports__ = {};
1852
1721
  let fistHourElemH = Number(fistHourElem?.split("点")[0]);
1853
1722
  const lastHourElem = scrollHourInfo.elementItem[scrollHourInfo.elementItem.length - 1];
1854
1723
  let lastHourElemH = Number(lastHourElem?.split("点")[0]);
1855
- let targetTimeH = Number(utils.Tx.format(params.settingInfo.timer, 'h'));
1724
+ let targetTimeH = Number(TimeFormatter.format(params.settingInfo.timer, 'h'));
1856
1725
  await page.mouse.wheel(0, targetTimeH > lastHourElemH ? (targetTimeH - lastHourElemH) * scrollHourInfo.elementHeight : targetTimeH < fistHourElemH ? -(fistHourElemH - targetTimeH) * scrollHourInfo.elementHeight : 0);
1857
1726
  await page.locator("#select-hour_list + * .cheetah-select-item-option ", {
1858
1727
  hasText: targetTimeH + "点"
@@ -1876,7 +1745,7 @@ var __webpack_exports__ = {};
1876
1745
  let fistMinuteElemH = Number(fistMinuteElem?.split("分")[0]);
1877
1746
  const lastMinuteElem = scrollMinuteInfo.elementItem[scrollMinuteInfo.elementItem.length - 1];
1878
1747
  let lastMinuteElemH = Number(lastMinuteElem?.split("分")[0]);
1879
- let targetTimeM = Number(utils.Tx.format(params.settingInfo.timer, 'm'));
1748
+ let targetTimeM = Number(TimeFormatter.format(params.settingInfo.timer, 'm'));
1880
1749
  await page.mouse.wheel(0, targetTimeM > lastMinuteElemH ? (targetTimeM - lastMinuteElemH) * scrollMinuteInfo.elementHeight : targetTimeM < fistMinuteElemH ? -(fistMinuteElemH - targetTimeM) * scrollMinuteInfo.elementHeight : 0);
1881
1750
  await page.locator("#select-minute_list + * .cheetah-select-item-option ", {
1882
1751
  hasText: targetTimeM + "分"
@@ -1890,16 +1759,16 @@ var __webpack_exports__ = {};
1890
1759
  }).locator("button").click();
1891
1760
  });
1892
1761
  await page.close();
1893
- return (0, share_.success)(articleId, articleId ? "发布成功" : message);
1762
+ return (0, share_namespaceObject.success)(articleId, articleId ? "发布成功" : message);
1894
1763
  };
1895
1764
  const baijiahaoPublish = async (task, params)=>{
1896
1765
  if ("rpa" === params.actionType) return rpaAction(task, params);
1897
1766
  if ("mockApi" === params.actionType) return mockAction(task, params);
1898
- return (0, utils.jo)(mockAction, rpaAction)(task, params);
1767
+ return executeAction(mockAction, rpaAction)(task, params);
1899
1768
  };
1900
1769
  const getBaijiahaoActivity = async (_task, params)=>{
1901
1770
  const cookies = params.cookies ?? [];
1902
- const http = new utils_http.e({
1771
+ const http = new Http({
1903
1772
  headers: {
1904
1773
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1905
1774
  token: params.token
@@ -1917,11 +1786,11 @@ var __webpack_exports__ = {};
1917
1786
  task_type: -1
1918
1787
  }
1919
1788
  });
1920
- return (0, share_.success)(res?.data?.list ?? []);
1789
+ return (0, share_namespaceObject.success)(res?.data?.list ?? []);
1921
1790
  };
1922
1791
  const getToutiaoConfig = async (_task, params)=>{
1923
1792
  const cookies = params.cookies ?? [];
1924
- const http = new utils_http.e({
1793
+ const http = new Http({
1925
1794
  headers: {
1926
1795
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1927
1796
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -1969,7 +1838,7 @@ var __webpack_exports__ = {};
1969
1838
  getCityDistrict(),
1970
1839
  getUserRights()
1971
1840
  ]);
1972
- return (0, share_.success)({
1841
+ return (0, share_namespaceObject.success)({
1973
1842
  suggestWords,
1974
1843
  cityDistrict,
1975
1844
  userRights
@@ -1977,7 +1846,7 @@ var __webpack_exports__ = {};
1977
1846
  };
1978
1847
  const getBaijiahaoConfig = async (_task, params)=>{
1979
1848
  const cookies = params.cookies ?? [];
1980
- const http = new utils_http.e({
1849
+ const http = new Http({
1981
1850
  headers: {
1982
1851
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
1983
1852
  token: params.token
@@ -2003,10 +1872,10 @@ var __webpack_exports__ = {};
2003
1872
  is_enable: 1,
2004
1873
  publish_num_left: res.data.ability.publish_num_left
2005
1874
  });
2006
- return (0, share_.success)(data, "获取百家号配置项成功!");
1875
+ return (0, share_namespaceObject.success)(data, "获取百家号配置项成功!");
2007
1876
  };
2008
1877
  const searchToutiaoTopicList = async (_task, params)=>{
2009
- const http = new utils_http.e({
1878
+ const http = new Http({
2010
1879
  headers: {
2011
1880
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2012
1881
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2021,14 +1890,14 @@ var __webpack_exports__ = {};
2021
1890
  words: params.searchValue
2022
1891
  }
2023
1892
  });
2024
- if (0 === res.code) return (0, share_.success)(params.searchValue ? res.recents : res.hots);
2025
- return (0, share_.success)([]);
1893
+ if (0 === res.code) return (0, share_namespaceObject.success)(params.searchValue ? res.recents : res.hots);
1894
+ return (0, share_namespaceObject.success)([]);
2026
1895
  } catch (error) {
2027
- return (0, share_.success)([]);
1896
+ return (0, share_namespaceObject.success)([]);
2028
1897
  }
2029
1898
  };
2030
1899
  const searchToutiaoLocation = async (_task, params)=>{
2031
- const http = new utils_http.e({
1900
+ const http = new Http({
2032
1901
  headers: {
2033
1902
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2034
1903
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish",
@@ -2052,7 +1921,7 @@ var __webpack_exports__ = {};
2052
1921
  timestamp: Math.floor(Date.now() / 1000)
2053
1922
  }
2054
1923
  });
2055
- if (200 === res.code) return (0, share_.success)(res.data.poi.map((item)=>({
1924
+ if (200 === res.code) return (0, share_namespaceObject.success)(res.data.poi.map((item)=>({
2056
1925
  position: item.name,
2057
1926
  city: item.city,
2058
1927
  longitude: item.longitude,
@@ -2060,13 +1929,13 @@ var __webpack_exports__ = {};
2060
1929
  type_code: item.type_code,
2061
1930
  poi_id: item.id
2062
1931
  })));
2063
- return (0, share_.success)([]);
1932
+ return (0, share_namespaceObject.success)([]);
2064
1933
  } catch (error) {
2065
- return (0, share_.success)([]);
1934
+ return (0, share_namespaceObject.success)([]);
2066
1935
  }
2067
1936
  };
2068
1937
  const searchToutiaoUserInfo = async (_task, params)=>{
2069
- const http = new utils_http.e({
1938
+ const http = new Http({
2070
1939
  headers: {
2071
1940
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2072
1941
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2082,19 +1951,19 @@ var __webpack_exports__ = {};
2082
1951
  app_name: "toutiao_mp"
2083
1952
  }
2084
1953
  });
2085
- if (0 === res.err_no) return (0, share_.success)(res.data.suggest.map((item)=>({
1954
+ if (0 === res.err_no) return (0, share_namespaceObject.success)(res.data.suggest.map((item)=>({
2086
1955
  user_id: item.user.info.user_id,
2087
1956
  name: item.user.info.name,
2088
1957
  avatar_url: item.user.info.avatar_url,
2089
1958
  followers_count: item.user.relation_count.followers_count
2090
1959
  })), '搜索成功');
2091
- return (0, share_.success)([]);
1960
+ return (0, share_namespaceObject.success)([]);
2092
1961
  } catch (error) {
2093
- return (0, share_.success)([]);
1962
+ return (0, share_namespaceObject.success)([]);
2094
1963
  }
2095
1964
  };
2096
1965
  const searchXiaohongshuLocation = async (_task, params)=>{
2097
- const http = new utils_http.e({
1966
+ const http = new Http({
2098
1967
  headers: {
2099
1968
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2100
1969
  referer: "https://creator.xiaohongshu.com",
@@ -2115,13 +1984,13 @@ var __webpack_exports__ = {};
2115
1984
  type: 3
2116
1985
  }
2117
1986
  });
2118
- return (0, share_.success)(0 === result.code ? result.data.poi_list : []);
1987
+ return (0, share_namespaceObject.success)(0 === result.code ? result.data.poi_list : []);
2119
1988
  } catch (error) {
2120
- return (0, share_.success)([]);
1989
+ return (0, share_namespaceObject.success)([]);
2121
1990
  }
2122
1991
  };
2123
1992
  const searchXiaohongshuTopicList = async (_task, params)=>{
2124
- const http = new utils_http.e({
1993
+ const http = new Http({
2125
1994
  headers: {
2126
1995
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2127
1996
  referer: "https://creator.xiaohongshu.com",
@@ -2145,9 +2014,9 @@ var __webpack_exports__ = {};
2145
2014
  },
2146
2015
  defaultErrorMsg: "话题搜索异常,请稍后重试。"
2147
2016
  });
2148
- return (0, share_.success)(0 === result.code ? result.data.topic_info_dtos : [], '获取话题成功');
2017
+ return (0, share_namespaceObject.success)(0 === result.code ? result.data.topic_info_dtos : [], '获取话题成功');
2149
2018
  } catch (error) {
2150
- return (0, share_.success)([]);
2019
+ return (0, share_namespaceObject.success)([]);
2151
2020
  }
2152
2021
  };
2153
2022
  const GenAB = __webpack_require__("./src/utils/ttABEncrypt.js");
@@ -2183,7 +2052,7 @@ var __webpack_exports__ = {};
2183
2052
  const mock_mockAction = async (task, params)=>{
2184
2053
  const { toutiaoSingleCover, toutiaoMultCover, toutiaoCoverType, toutiaoOriginal, toutiaoExclusive, toutiaoClaim } = params.settingInfo;
2185
2054
  const tmpCachePath = task.getTmpPath();
2186
- const http = new utils_http.e({
2055
+ const http = new Http({
2187
2056
  headers: {
2188
2057
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2189
2058
  origin: "https://mp.toutiao.com",
@@ -2207,8 +2076,8 @@ var __webpack_exports__ = {};
2207
2076
  defaultErrorMsg: `头条号登录状态失效,请重新绑定账号后${"draft" === params.saveType ? "同步" : "发布"}。`
2208
2077
  });
2209
2078
  const uploadImages = async (images)=>await Promise.all(images.map(async (url)=>{
2210
- const fileName = (0, share_.getFilenameFromUrl)(url);
2211
- const image = await (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2079
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
2080
+ const image = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2212
2081
  const formData = new (external_form_data_default())();
2213
2082
  formData.append("image", external_node_fs_default().createReadStream(image));
2214
2083
  const response = await http.api({
@@ -2219,9 +2088,9 @@ var __webpack_exports__ = {};
2219
2088
  });
2220
2089
  return response.data;
2221
2090
  }));
2222
- const originContentImages = (0, utils.E_)(params.content);
2091
+ const originContentImages = extractImgTag(params.content);
2223
2092
  const targetContentImages = await uploadImages(originContentImages);
2224
- const content = (0, utils.I)(params.content, (dom)=>{
2093
+ const content = replaceImgSrc(params.content, (dom)=>{
2225
2094
  if (dom.attribs.src) {
2226
2095
  const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
2227
2096
  dom.attribs.src = targetContentImages[idx].image_url;
@@ -2292,7 +2161,7 @@ var __webpack_exports__ = {};
2292
2161
  is_refute_rumor: 0,
2293
2162
  save: "publish" === params.saveType ? 1 : 0,
2294
2163
  timer_status: params.settingInfo.timer ? 1 : 0,
2295
- timer_time: params.settingInfo.timer ? utils.Tx.format(params.settingInfo.timer) : "",
2164
+ timer_time: params.settingInfo.timer ? TimeFormatter.format(params.settingInfo.timer) : "",
2296
2165
  title: params.title,
2297
2166
  content: content + topicContent,
2298
2167
  extra: JSON.stringify(extraData),
@@ -2347,7 +2216,7 @@ var __webpack_exports__ = {};
2347
2216
  defaultErrorMsg: "draft" === params.saveType ? "文章同步异常,请稍后重试。" : "文章发布异常,请稍后重试。"
2348
2217
  };
2349
2218
  const publishResult = await http.api(publishOption);
2350
- return (0, share_.success)(publishResult.data.pgc_id);
2219
+ return (0, share_namespaceObject.success)(publishResult.data.pgc_id);
2351
2220
  };
2352
2221
  const rpa_GenAB = __webpack_require__("./src/utils/ttABEncrypt.js");
2353
2222
  const rpa_rpaAction = async (task, params)=>{
@@ -2411,14 +2280,14 @@ var __webpack_exports__ = {};
2411
2280
  });
2412
2281
  } else await route.continue();
2413
2282
  });
2414
- (0, utils.f8)(page, '.byte-modal.publish-exclusive-modal .title', "激励", '.byte-modal-close-icon', {
2283
+ PopupListener(page, '.byte-modal.publish-exclusive-modal .title', "激励", '.byte-modal-close-icon', {
2415
2284
  checkInterval: 1000,
2416
2285
  stopAfterClick: false
2417
2286
  });
2418
2287
  const titleInstance = page.locator(".publish-editor-title-wrapper .publish-editor-title textarea");
2419
2288
  await titleInstance.click();
2420
2289
  await titleInstance.fill(params.title);
2421
- await (0, utils.qN)(page, params.content);
2290
+ await copyHtmlToClipboard(page, params.content);
2422
2291
  await page.click(".publish-editor .syl-editor-wrap .ProseMirror");
2423
2292
  await page.keyboard.press("Control+V");
2424
2293
  const coverTypeValue = COVER_TYPE[params.settingInfo.toutiaoCoverType];
@@ -2433,8 +2302,8 @@ var __webpack_exports__ = {};
2433
2302
  ];
2434
2303
  else if ("multiple" === params.settingInfo.toutiaoCoverType) coverUrls = params.settingInfo.toutiaoMultCover;
2435
2304
  const images = await Promise.all(coverUrls.map((url)=>{
2436
- const fileName = (0, share_.getFilenameFromUrl)(url);
2437
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2305
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
2306
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
2438
2307
  }));
2439
2308
  const coverUploadEle = coverContainer.locator(".article-cover .article-cover-images").locator(".article-cover-img-wrap, .article-cover-add");
2440
2309
  const coverUploadCount = await coverUploadEle.count();
@@ -2465,7 +2334,7 @@ var __webpack_exports__ = {};
2465
2334
  state: "visible"
2466
2335
  });
2467
2336
  await confirmBtn.click();
2468
- await page.waitForTimeout((0, utils.i9)(500, 1000));
2337
+ await page.waitForTimeout(getRandomInRange(500, 1000));
2469
2338
  }
2470
2339
  if (params.settingInfo.toutiaoLocation) {
2471
2340
  const locationContainer = page.locator(".form-container .edit-cell").filter({
@@ -2534,17 +2403,17 @@ var __webpack_exports__ = {};
2534
2403
  });
2535
2404
  await page.locator(".byte-modal-content .day-select .byte-select-view-value").click();
2536
2405
  await page.locator('li.byte-select-option', {
2537
- hasText: utils.Tx.format(params.settingInfo.timer, "MM月dd日")
2406
+ hasText: TimeFormatter.format(params.settingInfo.timer, "MM月dd日")
2538
2407
  }).click();
2539
2408
  await page.waitForTimeout(200);
2540
2409
  await page.locator(".byte-modal-content .hour-select .byte-select-view-value").click();
2541
2410
  await page.locator('li.byte-select-option', {
2542
- hasText: utils.Tx.format(params.settingInfo.timer, "h")
2411
+ hasText: TimeFormatter.format(params.settingInfo.timer, "h")
2543
2412
  }).click();
2544
2413
  await page.waitForTimeout(200);
2545
2414
  await page.locator(".byte-modal-content .minute-select .byte-select-view-value").click();
2546
2415
  await page.locator('li.byte-select-option', {
2547
- hasText: utils.Tx.format(params.settingInfo.timer, "m")
2416
+ hasText: TimeFormatter.format(params.settingInfo.timer, "m")
2548
2417
  }).click();
2549
2418
  await page.waitForTimeout(200);
2550
2419
  await page.locator(".byte-modal-footer button").filter({
@@ -2571,7 +2440,7 @@ var __webpack_exports__ = {};
2571
2440
  }).click();
2572
2441
  }
2573
2442
  await page.close();
2574
- return (0, share_.success)(articleId, "publish" === params.saveType ? "发布成功" : "保存草稿成功");
2443
+ return (0, share_namespaceObject.success)(articleId, "publish" === params.saveType ? "发布成功" : "保存草稿成功");
2575
2444
  };
2576
2445
  const COVER_TYPE = {
2577
2446
  no: 1,
@@ -2582,10 +2451,10 @@ var __webpack_exports__ = {};
2582
2451
  const toutiaoPublish = async (task, params)=>{
2583
2452
  if ("rpa" === params.actionType) return rpa_rpaAction(task, params);
2584
2453
  if ("mockApi" === params.actionType) return mock_mockAction(task, params);
2585
- return (0, utils.jo)(mock_mockAction, rpa_rpaAction)(task, params);
2454
+ return executeAction(mock_mockAction, rpa_rpaAction)(task, params);
2586
2455
  };
2587
2456
  const TTFansExport = async (_task, params)=>{
2588
- const http = new utils_http.e({
2457
+ const http = new Http({
2589
2458
  headers: {
2590
2459
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2591
2460
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2599,19 +2468,19 @@ var __webpack_exports__ = {};
2599
2468
  app_id: 1231
2600
2469
  }
2601
2470
  });
2602
- return (0, share_.success)(0 === res.code ? {
2471
+ return (0, share_namespaceObject.success)(0 === res.code ? {
2603
2472
  fans_count: res.total_fans_count
2604
2473
  } : {
2605
2474
  fans_count: null
2606
2475
  }, "获取粉丝数成功!");
2607
2476
  } catch (error) {
2608
- return (0, share_.success)({
2477
+ return (0, share_namespaceObject.success)({
2609
2478
  fans_count: null
2610
2479
  }, "获取粉丝数失败,请检查登陆有效性!");
2611
2480
  }
2612
2481
  };
2613
2482
  const XhsFansExport = async (_task, params)=>{
2614
- const http = new utils_http.e({
2483
+ const http = new Http({
2615
2484
  headers: {
2616
2485
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2617
2486
  referer: "https://creator.xiaohongshu.com/new/home?source=official"
@@ -2622,19 +2491,19 @@ var __webpack_exports__ = {};
2622
2491
  method: "get",
2623
2492
  url: "https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info"
2624
2493
  });
2625
- return (0, share_.success)(0 === res.result ? {
2494
+ return (0, share_namespaceObject.success)(0 === res.result ? {
2626
2495
  fans_count: res.data.fans_count
2627
2496
  } : {
2628
2497
  fans_count: null
2629
2498
  }, "获取粉丝数成功!");
2630
2499
  } catch (error) {
2631
- return (0, share_.success)({
2500
+ return (0, share_namespaceObject.success)({
2632
2501
  fans_count: null
2633
2502
  }, "获取粉丝数失败,请检查登陆有效性!");
2634
2503
  }
2635
2504
  };
2636
2505
  const WxFansExport = async (_task, params)=>{
2637
- const http = new utils_http.e({
2506
+ const http = new Http({
2638
2507
  headers: {
2639
2508
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
2640
2509
  }
@@ -2650,19 +2519,19 @@ var __webpack_exports__ = {};
2650
2519
  }
2651
2520
  });
2652
2521
  const match = htmlStr.match(/总用户数[\s\S]*?<mp-thousandth>(\d+)<\/mp-thousandth>/);
2653
- return (0, share_.success)(match ? {
2522
+ return (0, share_namespaceObject.success)(match ? {
2654
2523
  fans_count: Number(match[1])
2655
2524
  } : {
2656
2525
  fans_count: null
2657
2526
  }, "获取粉丝数成功!");
2658
2527
  } catch (error) {
2659
- return (0, share_.success)({
2528
+ return (0, share_namespaceObject.success)({
2660
2529
  fans_count: null
2661
2530
  }, "获取粉丝数失败,请检查登陆有效性!");
2662
2531
  }
2663
2532
  };
2664
2533
  const BjhFansExport = async (_task, params)=>{
2665
- const http = new utils_http.e({
2534
+ const http = new Http({
2666
2535
  headers: {
2667
2536
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2668
2537
  referer: "https://baijiahao.baidu.com/builder/rc/home"
@@ -2673,19 +2542,19 @@ var __webpack_exports__ = {};
2673
2542
  method: "get",
2674
2543
  url: "https://baijiahao.baidu.com/cms-ui/rights/growth/get_info"
2675
2544
  });
2676
- return (0, share_.success)(0 === res.errno ? {
2545
+ return (0, share_namespaceObject.success)(0 === res.errno ? {
2677
2546
  fans_count: res.data.total_fans
2678
2547
  } : {
2679
2548
  fans_count: null
2680
2549
  }, "获取粉丝数成功!");
2681
2550
  } catch (error) {
2682
- return (0, share_.success)({
2551
+ return (0, share_namespaceObject.success)({
2683
2552
  fans_count: null
2684
2553
  }, "获取粉丝数失败,请检查登陆有效性!");
2685
2554
  }
2686
2555
  };
2687
2556
  const TTSessionCheck = async (_task, params)=>{
2688
- const http = new utils_http.e({
2557
+ const http = new Http({
2689
2558
  headers: {
2690
2559
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2691
2560
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2697,19 +2566,19 @@ var __webpack_exports__ = {};
2697
2566
  url: "https://mp.toutiao.com/mp/agw/creator_center/user_info",
2698
2567
  defaultErrorMsg: `头条号登录状态失效。`
2699
2568
  });
2700
- return (0, share_.success)(0 === res.code ? {
2569
+ return (0, share_namespaceObject.success)(0 === res.code ? {
2701
2570
  isValidSession: true
2702
2571
  } : {
2703
2572
  isValidSession: false
2704
2573
  }, "头条账号有效性检测完成!");
2705
2574
  } catch (error) {
2706
- return (0, share_.success)({
2575
+ return (0, share_namespaceObject.success)({
2707
2576
  isValidSession: false
2708
2577
  }, "头条账号有效性检测失败!");
2709
2578
  }
2710
2579
  };
2711
2580
  const WxSessionCheck = async (_task, params)=>{
2712
- const http = new utils_http.e({
2581
+ const http = new Http({
2713
2582
  headers: {
2714
2583
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
2715
2584
  }
@@ -2736,19 +2605,19 @@ var __webpack_exports__ = {};
2736
2605
  ajax: 1
2737
2606
  }
2738
2607
  });
2739
- return (0, share_.success)(0 === res.base_resp.ret ? {
2608
+ return (0, share_namespaceObject.success)(0 === res.base_resp.ret ? {
2740
2609
  isValidSession: true
2741
2610
  } : {
2742
2611
  isValidSession: false
2743
2612
  }, "微信账号有效性检测完成!");
2744
2613
  } catch (error) {
2745
- return (0, share_.success)({
2614
+ return (0, share_namespaceObject.success)({
2746
2615
  isValidSession: false
2747
2616
  }, "微信账号有效性检测失败!");
2748
2617
  }
2749
2618
  };
2750
2619
  const XhsSessionCheck = async (_task, params)=>{
2751
- const http = new utils_http.e({
2620
+ const http = new Http({
2752
2621
  headers: {
2753
2622
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2754
2623
  referer: "https://creator.xiaohongshu.com/new/home?source=official"
@@ -2759,19 +2628,19 @@ var __webpack_exports__ = {};
2759
2628
  method: "get",
2760
2629
  url: "https://creator.xiaohongshu.com/api/galaxy/user/info"
2761
2630
  });
2762
- return (0, share_.success)(0 === res.result ? {
2631
+ return (0, share_namespaceObject.success)(0 === res.result ? {
2763
2632
  isValidSession: true
2764
2633
  } : {
2765
2634
  isValidSession: false
2766
2635
  }, "小红书账号有效性检测完成!");
2767
2636
  } catch (error) {
2768
- return (0, share_.success)({
2637
+ return (0, share_namespaceObject.success)({
2769
2638
  isValidSession: false
2770
2639
  }, "小红书账号有效性检测完成!");
2771
2640
  }
2772
2641
  };
2773
2642
  const BjhSessionCheck = async (_task, params)=>{
2774
- const http = new utils_http.e({
2643
+ const http = new Http({
2775
2644
  headers: {
2776
2645
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2777
2646
  referer: "https://baijiahao.baidu.com/builder/rc/home"
@@ -2783,30 +2652,34 @@ var __webpack_exports__ = {};
2783
2652
  url: "https://baijiahao.baidu.com/pcui/home/index",
2784
2653
  defaultErrorMsg: `百家号登录状态失效。`
2785
2654
  });
2786
- return (0, share_.success)(0 === res.errno ? {
2655
+ return (0, share_namespaceObject.success)(0 === res.errno ? {
2787
2656
  isValidSession: true
2788
2657
  } : {
2789
2658
  isValidSession: false
2790
2659
  }, "百家号账号有效性检测完成!");
2791
2660
  } catch (error) {
2792
- return (0, share_.success)({
2661
+ return (0, share_namespaceObject.success)({
2793
2662
  isValidSession: false
2794
2663
  }, "百家号账号有效性检测失败!");
2795
2664
  }
2796
2665
  };
2797
- var types = __webpack_require__("./src/actions/searchAccountInfo/types.ts");
2666
+ const types_errorResponse = (message, code = 500)=>({
2667
+ code,
2668
+ message,
2669
+ data: null
2670
+ });
2798
2671
  async function getBaijiahaoData(params) {
2799
2672
  try {
2800
2673
  const { token } = params;
2801
- if (!token) return (0, types.V)("缺少token", 200);
2802
- const http = new utils_http.e({
2674
+ if (!token) return types_errorResponse("缺少token", 200);
2675
+ const http = new Http({
2803
2676
  headers: {
2804
2677
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2805
2678
  token: String(token),
2806
2679
  Referer: "https://baijiahao.baidu.com/builder/rc/home"
2807
2680
  }
2808
2681
  });
2809
- const yesterday = utils.Tx.format(new Date().setDate(new Date().getDate() - 1), "yyyyMMdd");
2682
+ const yesterday = TimeFormatter.format(new Date().setDate(new Date().getDate() - 1), "yyyyMMdd");
2810
2683
  const [fansData, readData, incomeData, yesterdayData] = await Promise.all([
2811
2684
  http.api({
2812
2685
  method: "get",
@@ -2843,15 +2716,15 @@ var __webpack_exports__ = {};
2843
2716
  likeNumYesterday: -1 == yesterdayData.data.data.likes_count ? null : yesterdayData.data.data.likes_count,
2844
2717
  commentNumYesterday: -1 == yesterdayData.data.data.comment_count ? null : yesterdayData.data.data.comment_count
2845
2718
  };
2846
- return (0, share_.success)(bjhData, "百家号粉丝数据获取成功!");
2719
+ return (0, share_namespaceObject.success)(bjhData, "百家号平台数据获取成功!");
2847
2720
  } catch (error) {
2848
- return (0, types.V)(error instanceof Error ? error.message : "百家号数据获取失败");
2721
+ return types_errorResponse(error instanceof Error ? error.message : "百家号平台数据获取失败");
2849
2722
  }
2850
2723
  }
2851
2724
  async function getToutiaoData(params) {
2852
2725
  const { cookies } = params;
2853
2726
  try {
2854
- const http = new utils_http.e({
2727
+ const http = new Http({
2855
2728
  headers: {
2856
2729
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2857
2730
  referer: "https://mp.toutiao.com/profile_v4/graphic/publish"
@@ -2892,12 +2765,71 @@ var __webpack_exports__ = {};
2892
2765
  likeNumYesterday: contentDataYesterday.author_stat.interaction_data.digg_count,
2893
2766
  commentNumYesterday: contentDataYesterday.author_stat.interaction_data.comment_count
2894
2767
  };
2895
- return (0, share_.success)(ttData, "头条号粉丝数据获取成功!");
2768
+ return (0, share_namespaceObject.success)(ttData, "头条号粉丝数据获取成功!");
2769
+ } catch (error) {
2770
+ return types_errorResponse(error instanceof Error ? error.message : "头条号数据获取失败");
2771
+ }
2772
+ }
2773
+ async function getWeixinData(params) {
2774
+ const { token } = params;
2775
+ if (!token) return {
2776
+ code: 200,
2777
+ message: "缺少token",
2778
+ data: null
2779
+ };
2780
+ try {
2781
+ const { token } = params;
2782
+ if (!token) return types_errorResponse("缺少token", 200);
2783
+ const http = new Http({
2784
+ headers: {
2785
+ cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
2786
+ }
2787
+ });
2788
+ const userInfo = {
2789
+ originalCount: 0,
2790
+ totalUsers: 0,
2791
+ userIncrease: 0,
2792
+ yesterday: {
2793
+ read: 0,
2794
+ share: 0,
2795
+ subscribe: 0
2796
+ }
2797
+ };
2798
+ const userInfoHtml = await http.api({
2799
+ method: "get",
2800
+ url: "https://mp.weixin.qq.com/cgi-bin/home",
2801
+ params: {
2802
+ t: "home/index",
2803
+ token,
2804
+ lang: "zh_CN"
2805
+ }
2806
+ });
2807
+ const originalMatch = userInfoHtml.trim().match(/原创内容[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2808
+ if (originalMatch) userInfo.originalCount = parseInt(originalMatch[1].replace(/,/g, ''), 10);
2809
+ const totalUsersMatch = userInfoHtml.match(/总用户数[\s\S]*?<div[^>]*class=["']weui-desktop-user_sum["'][^>]*>[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2810
+ if (totalUsersMatch) userInfo.totalUsers = parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);
2811
+ const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\s*([+-]?)\s*<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2812
+ if (increaseMatch) {
2813
+ const sign = '-' === increaseMatch[1] ? -1 : 1;
2814
+ userInfo.userIncrease = sign * parseInt(increaseMatch[2].replace(/,/g, ''), 10);
2815
+ }
2816
+ const readMatch = userInfoHtml.match(/昨日阅读[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2817
+ if (readMatch) userInfo.yesterday.read = parseInt(readMatch[1].replace(/,/g, ''), 10);
2818
+ const shareMatch = userInfoHtml.match(/昨日分享[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2819
+ if (shareMatch) userInfo.yesterday.share = parseInt(shareMatch[1].replace(/,/g, ''), 10);
2820
+ const subscribeMatch = userInfoHtml.match(/昨日新增关注[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
2821
+ if (subscribeMatch) userInfo.yesterday.subscribe = parseInt(subscribeMatch[1].replace(/,/g, ''), 10);
2822
+ const wxData = {
2823
+ fansNum: userInfo.totalUsers,
2824
+ fansNumYesterday: userInfo.yesterday.subscribe,
2825
+ readNumYesterday: userInfo.yesterday.read,
2826
+ shareNumYesterday: userInfo.yesterday.share
2827
+ };
2828
+ return (0, share_namespaceObject.success)(wxData, "微信平台数据获取成功!");
2896
2829
  } catch (error) {
2897
- return (0, types.V)(error instanceof Error ? error.message : "头条号数据获取失败");
2830
+ return types_errorResponse(error instanceof Error ? error.message : "微信平台数据获取失败");
2898
2831
  }
2899
2832
  }
2900
- var getWxInfo = __webpack_require__("./src/actions/searchAccountInfo/getWxInfo.ts");
2901
2833
  const external_node_buffer_namespaceObject = require("node:buffer");
2902
2834
  const external_node_crypto_namespaceObject = require("node:crypto");
2903
2835
  var external_node_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_node_crypto_namespaceObject);
@@ -2954,8 +2886,8 @@ var __webpack_exports__ = {};
2954
2886
  async function getXiaohongshuData(params) {
2955
2887
  try {
2956
2888
  const a1Cookie = params.cookies.find((it)=>"a1" === it.name)?.value;
2957
- if (!a1Cookie) return (0, types.V)("账号数据异常,请重新绑定账号后重试。", 200);
2958
- const http = new utils_http.e({
2889
+ if (!a1Cookie) return types_errorResponse("账号数据异常,请重新绑定账号后重试。", 200);
2890
+ const http = new Http({
2959
2891
  headers: {
2960
2892
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
2961
2893
  referer: "https://creator.xiaohongshu.com",
@@ -2991,9 +2923,9 @@ var __webpack_exports__ = {};
2991
2923
  fansNumLastWeek: sevenData.data.seven.rise_fans_count,
2992
2924
  fansNumYesterday: sevenData.data.seven.rise_fans_list[0].count
2993
2925
  };
2994
- return (0, share_.success)(xhsData, "小红书粉丝数据获取成功!");
2926
+ return (0, share_namespaceObject.success)(xhsData, "小红书平台数据获取成功!");
2995
2927
  } catch (error) {
2996
- return (0, types.V)(error instanceof Error ? error.message : "小红书数据获取失败");
2928
+ return types_errorResponse(error instanceof Error ? error.message : "小红书平台数据获取失败");
2997
2929
  }
2998
2930
  }
2999
2931
  const SearchAccountInfo = async (_task, params)=>{
@@ -3004,14 +2936,14 @@ var __webpack_exports__ = {};
3004
2936
  case "xiaohongshu":
3005
2937
  return getXiaohongshuData(params);
3006
2938
  case "weixin":
3007
- return (0, getWxInfo.n)(params);
2939
+ return getWeixinData(params);
3008
2940
  case "baijiahao":
3009
2941
  return getBaijiahaoData(params);
3010
2942
  default:
3011
- return (0, share_.success)(null, "暂不支持该平台");
2943
+ return (0, share_namespaceObject.success)(null, "暂不支持该平台");
3012
2944
  }
3013
2945
  };
3014
- const errorResponse = (message, code = 500)=>({
2946
+ const searchPublishInfo_types_errorResponse = (message, code = 500)=>({
3015
2947
  code,
3016
2948
  message,
3017
2949
  data: null
@@ -3019,7 +2951,7 @@ var __webpack_exports__ = {};
3019
2951
  async function handleToutiaoData(params) {
3020
2952
  try {
3021
2953
  const { cookies, pageNum = 1, pageSize = 10, showOriginalData = false, onlySuccess = false } = params;
3022
- const http = new utils_http.e({
2954
+ const http = new Http({
3023
2955
  headers: {
3024
2956
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
3025
2957
  }
@@ -3066,7 +2998,7 @@ var __webpack_exports__ = {};
3066
2998
  } : {}
3067
2999
  }));
3068
3000
  const api_base_info_json = JSON.parse(articleInfo.api_base_info.app_extra_params);
3069
- return (0, share_.success)({
3001
+ return (0, share_namespaceObject.success)({
3070
3002
  articleCell,
3071
3003
  ...onlySuccess ? {
3072
3004
  pagination: {
@@ -3075,9 +3007,9 @@ var __webpack_exports__ = {};
3075
3007
  pageSize
3076
3008
  }
3077
3009
  } : null
3078
- }, "头条号文章获取成功");
3010
+ }, "头条号文章文章获取成功");
3079
3011
  } catch (error) {
3080
- return errorResponse(error instanceof Error ? error.message : "头条号数据获取失败");
3012
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "头条号文章数据获取失败");
3081
3013
  }
3082
3014
  }
3083
3015
  async function handleWeixinData(params) {
@@ -3088,21 +3020,57 @@ var __webpack_exports__ = {};
3088
3020
  message: "缺少token",
3089
3021
  data: null
3090
3022
  };
3091
- const http = new utils_http.e({
3023
+ const http = new Http({
3092
3024
  headers: {
3093
3025
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
3094
3026
  }
3095
3027
  });
3096
3028
  const ParsePublishPage = (body)=>{
3097
- const decodeHtml = (str)=>str.replace(/&quot;/g, '"').replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&#39;/g, "'").replace(/&nbsp;/g, ' ');
3098
- const match = body.match(/publish_page\s*=\s*(\{[\s\S]*?\})\s*;/);
3029
+ const match = body.match(/publish_page\s*=\s*({[\s\S]*?});/);
3099
3030
  if (!match) throw new Error('无法提取 publish_page 字段');
3100
- const rawPublishPageStr = match[1];
3101
- const parsedData = JSON.parse(rawPublishPageStr);
3031
+ let parsedData = JSON.parse(match[1]);
3032
+ const decodeEntities = function(str, decode = false) {
3033
+ const encodeMap = [
3034
+ "&",
3035
+ "&amp;",
3036
+ "<",
3037
+ "&lt;",
3038
+ ">",
3039
+ "&gt;",
3040
+ " ",
3041
+ "&nbsp;",
3042
+ '"',
3043
+ "&quot;",
3044
+ "'",
3045
+ "&#39;"
3046
+ ];
3047
+ const decodeMap = [
3048
+ "&#39;",
3049
+ "'",
3050
+ "&quot;",
3051
+ '"',
3052
+ "&nbsp;",
3053
+ " ",
3054
+ "&gt;",
3055
+ ">",
3056
+ "&lt;",
3057
+ "<",
3058
+ "&amp;",
3059
+ "&",
3060
+ "&#60;",
3061
+ "<",
3062
+ "&#62;",
3063
+ ">"
3064
+ ];
3065
+ const map = decode ? decodeMap : encodeMap;
3066
+ let result = str;
3067
+ for(let i = 0; i < map.length; i += 2)result = result.replace(new RegExp(map[i], "g"), map[i + 1]);
3068
+ return result;
3069
+ };
3102
3070
  const finalData = {
3103
3071
  ...parsedData,
3104
3072
  publish_list: parsedData.publish_list.map((item)=>{
3105
- const decoded = decodeHtml(item.publish_info);
3073
+ const decoded = decodeEntities(item.publish_info, true);
3106
3074
  const parsedInfo = JSON.parse(decoded);
3107
3075
  return {
3108
3076
  publish_type: item.publish_type,
@@ -3112,18 +3080,35 @@ var __webpack_exports__ = {};
3112
3080
  };
3113
3081
  return finalData;
3114
3082
  };
3115
- const rawArticlesInfo = await http.api({
3116
- method: "get",
3117
- url: 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish',
3118
- params: {
3119
- sub: "list",
3120
- begin: (pageNum - 1) * pageSize,
3121
- count: pageSize,
3122
- token: token,
3123
- lang: "zh_CN"
3083
+ async function fetchArticles(begin, pageSize, token) {
3084
+ return http.api({
3085
+ method: "get",
3086
+ url: 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish',
3087
+ params: {
3088
+ sub: "list",
3089
+ begin: begin,
3090
+ count: pageSize,
3091
+ token: token,
3092
+ lang: "zh_CN"
3093
+ }
3094
+ });
3095
+ }
3096
+ let rawArticlesInfo = await fetchArticles(0, pageSize > 20 ? 20 : pageSize, token);
3097
+ let articlesInfo = ParsePublishPage(rawArticlesInfo);
3098
+ if (!onlySuccess && pageSize > 20) {
3099
+ let totalFetched = articlesInfo.publish_list.length;
3100
+ let nextPage = pageNum + 1;
3101
+ while(totalFetched < pageSize){
3102
+ const remaining = pageSize - totalFetched;
3103
+ const currentPageSize = remaining > 20 ? 20 : remaining;
3104
+ let _rawArticlesInfo = await fetchArticles((nextPage - 1) * 20, currentPageSize, token);
3105
+ let parsed = ParsePublishPage(_rawArticlesInfo);
3106
+ articlesInfo.publish_list = articlesInfo.publish_list.concat(parsed.publish_list);
3107
+ totalFetched = articlesInfo.publish_list.length;
3108
+ if (parsed.publish_list.length < currentPageSize) break;
3109
+ nextPage++;
3124
3110
  }
3125
- });
3126
- const articlesInfo = ParsePublishPage(rawArticlesInfo);
3111
+ }
3127
3112
  const articleCell = articlesInfo?.publish_list.map((item)=>({
3128
3113
  title: item.publish_info.appmsg_info[0].title,
3129
3114
  imageUrl: item.publish_info.appmsg_info[0].cover,
@@ -3137,7 +3122,7 @@ var __webpack_exports__ = {};
3137
3122
  originalData: item
3138
3123
  } : {}
3139
3124
  }));
3140
- return (0, share_.success)({
3125
+ return (0, share_namespaceObject.success)({
3141
3126
  articleCell,
3142
3127
  ...onlySuccess ? {
3143
3128
  pagination: {
@@ -3146,9 +3131,9 @@ var __webpack_exports__ = {};
3146
3131
  pageSize
3147
3132
  }
3148
3133
  } : null
3149
- }, "微信文章获取成功");
3134
+ }, "微信文章文章获取成功");
3150
3135
  } catch (error) {
3151
- return errorResponse(error instanceof Error ? error.message : "微信数据获取失败");
3136
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "微信文章数据获取失败");
3152
3137
  }
3153
3138
  }
3154
3139
  async function handleBaijiahaoData(params) {
@@ -3159,7 +3144,7 @@ var __webpack_exports__ = {};
3159
3144
  message: "缺少token",
3160
3145
  data: null
3161
3146
  };
3162
- const http = new utils_http.e({
3147
+ const http = new Http({
3163
3148
  headers: {
3164
3149
  cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
3165
3150
  token: token
@@ -3212,7 +3197,7 @@ var __webpack_exports__ = {};
3212
3197
  originalData: item
3213
3198
  } : {}
3214
3199
  }));
3215
- return (0, share_.success)({
3200
+ return (0, share_namespaceObject.success)({
3216
3201
  articleCell,
3217
3202
  ...onlySuccess ? {
3218
3203
  pagination: {
@@ -3221,9 +3206,9 @@ var __webpack_exports__ = {};
3221
3206
  pageSize
3222
3207
  }
3223
3208
  } : null
3224
- }, "百家号文章获取成功");
3209
+ }, "百家号文章数据获取成功");
3225
3210
  } catch (error) {
3226
- return errorResponse(error instanceof Error ? error.message : "百家号数据获取失败");
3211
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "百家号文章数据获取失败");
3227
3212
  }
3228
3213
  }
3229
3214
  async function handleXiaohongshuData(params) {
@@ -3241,7 +3226,7 @@ var __webpack_exports__ = {};
3241
3226
  message: "小红书pageSize不可修改",
3242
3227
  data: null
3243
3228
  };
3244
- const http = new utils_http.e({
3229
+ const http = new Http({
3245
3230
  headers: {
3246
3231
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
3247
3232
  referer: "https://creator.xiaohongshu.com",
@@ -3294,18 +3279,18 @@ var __webpack_exports__ = {};
3294
3279
  originalData: item
3295
3280
  } : {}
3296
3281
  }));
3297
- return (0, share_.success)({
3282
+ return (0, share_namespaceObject.success)({
3298
3283
  articleCell,
3299
3284
  ...onlySuccess ? {
3300
3285
  pagination: {
3301
- total: articleInfo.data.tags[0]?.notes_count || -1,
3286
+ nextPage: hasNextpage,
3302
3287
  pageNum,
3303
3288
  pageSize
3304
3289
  }
3305
3290
  } : null
3306
- }, "小红书文章获取成功");
3291
+ }, "小红书文章数据获取成功");
3307
3292
  } catch (error) {
3308
- return errorResponse(error instanceof Error ? error.message : "小红书数据获取失败");
3293
+ return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "小红书文章数据获取失败");
3309
3294
  }
3310
3295
  }
3311
3296
  const FetchArticles = async (_task, params)=>{
@@ -3320,11 +3305,11 @@ var __webpack_exports__ = {};
3320
3305
  case "xiaohongshu":
3321
3306
  return handleXiaohongshuData(params);
3322
3307
  default:
3323
- return (0, share_.success)(null, "暂不支持该平台");
3308
+ return (0, share_namespaceObject.success)(null, "暂不支持该平台");
3324
3309
  }
3325
3310
  };
3326
3311
  const getWeixinConfig = async (_task, params)=>{
3327
- const http = new utils_http.e({
3312
+ const http = new Http({
3328
3313
  headers: {
3329
3314
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
3330
3315
  }
@@ -3345,11 +3330,11 @@ var __webpack_exports__ = {};
3345
3330
  const filtered = {
3346
3331
  publishQuota: 0 === res.base_resp.ret ? res.quota_detail_list.filter((item)=>"kQuotaTypeMassSendNormal" === item.quota_type).map((item)=>item.quota_item_list) : []
3347
3332
  };
3348
- return (0, share_.success)(filtered, 0 === res.base_resp.ret ? "微信配置信息获取成功!" : "微信配置信息获取失败!");
3333
+ return (0, share_namespaceObject.success)(filtered, 0 === res.base_resp.ret ? "微信配置信息获取成功!" : "微信配置信息获取失败!");
3349
3334
  };
3350
3335
  const weitoutiaoPublish_mock_mockAction = async (task, params)=>{
3351
3336
  const tmpCachePath = task.getTmpPath();
3352
- const http = new utils_http.e({
3337
+ const http = new Http({
3353
3338
  headers: {
3354
3339
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
3355
3340
  origin: "https://mp.toutiao.com",
@@ -3368,8 +3353,8 @@ var __webpack_exports__ = {};
3368
3353
  const imageList = [];
3369
3354
  if (params.banners && params.banners.length > 0) {
3370
3355
  const images = await Promise.all(params.banners.map((url)=>{
3371
- const fileName = (0, share_.getFilenameFromUrl)(url);
3372
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3356
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
3357
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3373
3358
  }));
3374
3359
  const res = await Promise.all(images.map(async (it)=>{
3375
3360
  const formData = new (external_form_data_default())();
@@ -3416,7 +3401,7 @@ var __webpack_exports__ = {};
3416
3401
  url: "https://mp.toutiao.com/mp/agw/article/wtt",
3417
3402
  data: syncData
3418
3403
  });
3419
- return (0, share_.success)(res.data);
3404
+ return (0, share_namespaceObject.success)(res.data);
3420
3405
  };
3421
3406
  const weitoutiaoPublish_rpa_rpaAction = async (task, params)=>{
3422
3407
  const commonCookies = {
@@ -3449,8 +3434,8 @@ var __webpack_exports__ = {};
3449
3434
  await descInstance.fill(params.content);
3450
3435
  if (params.banners && params.banners?.length > 0) {
3451
3436
  const images = await Promise.all(params.banners.map((url)=>{
3452
- const fileName = (0, share_.getFilenameFromUrl)(url);
3453
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3437
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
3438
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3454
3439
  }));
3455
3440
  const fileChooserPromise = page.waitForEvent("filechooser");
3456
3441
  await page.locator(".toolbar .syl-toolbar-tool.weitoutiao-image-plugin").click();
@@ -3481,12 +3466,12 @@ var __webpack_exports__ = {};
3481
3466
  await declarationFormItem.locator(`.byte-checkbox:has(input[value="${params.declaration}"])`).click();
3482
3467
  }
3483
3468
  await page.locator(".footer-wrap button.publish-content").click();
3484
- return (0, share_.success)("");
3469
+ return (0, share_namespaceObject.success)("");
3485
3470
  };
3486
3471
  const weitoutiaoPublish = async (task, params)=>{
3487
3472
  if ("rpa" === params.actionType) return weitoutiaoPublish_rpa_rpaAction(task, params);
3488
3473
  if ("mockApi" === params.actionType) return weitoutiaoPublish_mock_mockAction(task, params);
3489
- return (0, utils.jo)(weitoutiaoPublish_mock_mockAction, weitoutiaoPublish_rpa_rpaAction)(task, params);
3474
+ return executeAction(weitoutiaoPublish_mock_mockAction, weitoutiaoPublish_rpa_rpaAction)(task, params);
3490
3475
  };
3491
3476
  const scanRetryMaxCount = 30;
3492
3477
  const QuotaType = {
@@ -3543,7 +3528,7 @@ var __webpack_exports__ = {};
3543
3528
  const fingerprint = "4695500bc93ab4ce8fb2692da6564e04";
3544
3529
  const client_time_diff = +Number("1743488763") - Math.floor(new Date().getTime() / 1000);
3545
3530
  const tmpCachePath = task.getTmpPath();
3546
- const http = new utils_http.e({
3531
+ const http = new Http({
3547
3532
  headers: {
3548
3533
  "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 Edg/134.0.0.0",
3549
3534
  Cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
@@ -3586,12 +3571,12 @@ var __webpack_exports__ = {};
3586
3571
  const uploadImages = async (images)=>{
3587
3572
  const cloudImages = [];
3588
3573
  const localImages = await Promise.all(images.map((url)=>{
3589
- const fileName = (0, share_.getFilenameFromUrl)(url);
3590
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3574
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
3575
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
3591
3576
  }));
3592
3577
  for(let index = 0; index < images.length; index++){
3593
3578
  const image = localImages[index];
3594
- const fileState = (0, utils.H8)(image);
3579
+ const fileState = getFileState(image);
3595
3580
  const formData = new (external_form_data_default())();
3596
3581
  formData.append("id", `WU_FILE_${index + 1}`);
3597
3582
  formData.append("name", fileState.name);
@@ -3609,9 +3594,9 @@ var __webpack_exports__ = {};
3609
3594
  }
3610
3595
  return cloudImages;
3611
3596
  };
3612
- const originContentImages = (0, utils.E_)(params.content);
3597
+ const originContentImages = extractImgTag(params.content);
3613
3598
  const targetContentImages = await uploadImages(originContentImages);
3614
- const content = (0, utils.I)(params.content, (dom)=>{
3599
+ const content = replaceImgSrc(params.content, (dom)=>{
3615
3600
  if (dom.attribs.src) {
3616
3601
  const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
3617
3602
  dom.attribs.src = targetContentImages[idx].cdn_url;
@@ -3734,7 +3719,7 @@ var __webpack_exports__ = {};
3734
3719
  const task_id = rewardbind.task_id;
3735
3720
  let code = null;
3736
3721
  for(let i = 0; i < scanRetryMaxCount; i++){
3737
- await (0, share_.sleep)(2000);
3722
+ await (0, share_namespaceObject.sleep)(2000);
3738
3723
  const checkScanResult = await http.api({
3739
3724
  method: "get",
3740
3725
  url: "https://mp.weixin.qq.com/acct/writermgr",
@@ -3995,7 +3980,7 @@ var __webpack_exports__ = {};
3995
3980
  appmsgid: appMsgId
3996
3981
  };
3997
3982
  for(let i = 0; i < 10; i++){
3998
- await (0, share_.sleep)(1000);
3983
+ await (0, share_namespaceObject.sleep)(1000);
3999
3984
  const lastData = {
4000
3985
  ...copyrightStatData,
4001
3986
  first_check: 0 === i ? 1 : 0
@@ -4003,7 +3988,7 @@ var __webpack_exports__ = {};
4003
3988
  const checkCopyrightStatRes = await checkCopyrightStat(http, params, lastData);
4004
3989
  if (checkCopyrightStatRes.open_ad_reprint_status) break;
4005
3990
  }
4006
- await (0, share_.sleep)(300);
3991
+ await (0, share_namespaceObject.sleep)(300);
4007
3992
  await http.api({
4008
3993
  method: "post",
4009
3994
  url: "https://mp.weixin.qq.com/cgi-bin/masssend",
@@ -4024,7 +4009,7 @@ var __webpack_exports__ = {};
4024
4009
  random: Math.random().toString()
4025
4010
  })
4026
4011
  });
4027
- await (0, share_.sleep)(300);
4012
+ await (0, share_namespaceObject.sleep)(300);
4028
4013
  await http.api({
4029
4014
  method: "post",
4030
4015
  url: "https://mp.weixin.qq.com/cgi-bin/masssend",
@@ -4042,7 +4027,7 @@ var __webpack_exports__ = {};
4042
4027
  random: Math.random().toString()
4043
4028
  })
4044
4029
  });
4045
- await (0, share_.sleep)(300);
4030
+ await (0, share_namespaceObject.sleep)(300);
4046
4031
  const getTicketResult = await http.api({
4047
4032
  method: "post",
4048
4033
  url: "https://mp.weixin.qq.com/misc/safeassistant",
@@ -4062,7 +4047,7 @@ var __webpack_exports__ = {};
4062
4047
  }),
4063
4048
  defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
4064
4049
  });
4065
- await (0, share_.sleep)(300);
4050
+ await (0, share_namespaceObject.sleep)(300);
4066
4051
  const getUuidResult = await http.api({
4067
4052
  method: "post",
4068
4053
  url: "https://mp.weixin.qq.com/safe/safeqrconnect",
@@ -4085,14 +4070,14 @@ var __webpack_exports__ = {};
4085
4070
  }),
4086
4071
  defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
4087
4072
  });
4088
- await (0, share_.sleep)(1000);
4073
+ await (0, share_namespaceObject.sleep)(1000);
4089
4074
  if (0 !== getUuidResult.genuuid_res) return {
4090
4075
  code: 200,
4091
4076
  message: GET_QRCODE_DEFAULT_ERROR,
4092
4077
  data: ""
4093
4078
  };
4094
4079
  const uuid = getUuidResult.uuid;
4095
- await (0, share_.sleep)(1000);
4080
+ await (0, share_namespaceObject.sleep)(1000);
4096
4081
  const qrcodeResult = await http.api({
4097
4082
  method: "get",
4098
4083
  url: "https://mp.weixin.qq.com/safe/safeqrcode",
@@ -4117,7 +4102,7 @@ var __webpack_exports__ = {};
4117
4102
  params.safeQrcodeCallback?.(qrcodeFilePath);
4118
4103
  let code = "";
4119
4104
  for(let i = 0; i < scanRetryMaxCount; i++){
4120
- await (0, share_.sleep)(2000);
4105
+ await (0, share_namespaceObject.sleep)(2000);
4121
4106
  const checkScanResult = await http.api({
4122
4107
  method: "post",
4123
4108
  url: "https://mp.weixin.qq.com/safe/safeuuid",
@@ -4204,7 +4189,7 @@ var __webpack_exports__ = {};
4204
4189
  share_page: "1",
4205
4190
  synctxweibo: "0",
4206
4191
  operation_seq,
4207
- req_id: (0, share_.randomString)(32),
4192
+ req_id: (0, share_namespaceObject.randomString)(32),
4208
4193
  req_time: new Date().getTime() + 1e3 * client_time_diff,
4209
4194
  sync_version: "1",
4210
4195
  isFreePublish: params.masssend ? "false" : "true",
@@ -4216,10 +4201,8 @@ var __webpack_exports__ = {};
4216
4201
  }),
4217
4202
  defaultErrorMsg: params.masssend ? "文章群发异常,请尝试关闭群发或稍后重试。" : "文章发布异常,请稍后重试。"
4218
4203
  });
4219
- return (0, share_.success)(appMsgId, params.settingInfo.timer ? "微信公众号文章定时发布成功。" : "微信公众号发布完成。");
4204
+ return (0, share_namespaceObject.success)(appMsgId, params.settingInfo.timer ? "微信公众号文章定时发布成功。" : "微信公众号发布完成。");
4220
4205
  };
4221
- var external_axios_ = __webpack_require__("axios");
4222
- var external_axios_default = /*#__PURE__*/ __webpack_require__.n(external_axios_);
4223
4206
  const waitQrcodeResultMaxTime = 2000 * scanRetryMaxCount;
4224
4207
  const weixinPublish_rpa_rpaAction = async (task, params)=>{
4225
4208
  const tmpCachePath = task.getTmpPath();
@@ -4335,11 +4318,11 @@ var __webpack_exports__ = {};
4335
4318
  await page.waitForSelector("#editor_pannel", {
4336
4319
  state: "visible"
4337
4320
  });
4338
- (0, utils.f8)(page, '[v-transfer-dom="#vue_app"] .weui-desktop-dialog', "更新", '[v-transfer-dom="#vue_app"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4321
+ PopupListener(page, '[v-transfer-dom="#vue_app"] .weui-desktop-dialog', "更新", '[v-transfer-dom="#vue_app"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4339
4322
  checkInterval: 1000,
4340
4323
  stopAfterClick: false
4341
4324
  });
4342
- (0, utils.f8)(page, '[extclass="weui-desktop-dialog_simple"] .weui-desktop-dialog', "小店", '[extclass="weui-desktop-dialog_simple"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4325
+ PopupListener(page, '[extclass="weui-desktop-dialog_simple"] .weui-desktop-dialog', "小店", '[extclass="weui-desktop-dialog_simple"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
4343
4326
  checkInterval: 1000,
4344
4327
  stopAfterClick: true
4345
4328
  });
@@ -4351,7 +4334,7 @@ var __webpack_exports__ = {};
4351
4334
  await titleInstance.click();
4352
4335
  await titleInstance.fill(params.settingInfo.wxAuthor);
4353
4336
  }
4354
- await (0, utils.qN)(page, params.content);
4337
+ await copyHtmlToClipboard(page, params.content);
4355
4338
  await page.click(".js_editor_area .ProseMirror");
4356
4339
  await page.keyboard.press("Control+V");
4357
4340
  await page.locator("#article_setting_area").evaluate((node)=>node.scrollIntoView());
@@ -4361,8 +4344,8 @@ var __webpack_exports__ = {};
4361
4344
  await titleInstance.fill(params.settingInfo.wxAbstract);
4362
4345
  }
4363
4346
  if (params.settingInfo.wxCover) {
4364
- const fileName = (0, share_.getFilenameFromUrl)(params.settingInfo.wxCover);
4365
- const cover = await (0, share_.downloadImage)(params.settingInfo.wxCover, external_node_path_default().join(tmpCachePath, fileName));
4347
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(params.settingInfo.wxCover);
4348
+ const cover = await (0, share_namespaceObject.downloadImage)(params.settingInfo.wxCover, external_node_path_default().join(tmpCachePath, fileName));
4366
4349
  await page.locator("#article_setting_area #js_cover_area .select-cover__btn").hover();
4367
4350
  await page.locator("#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item").filter({
4368
4351
  hasText: "从图片库选择"
@@ -4548,7 +4531,7 @@ var __webpack_exports__ = {};
4548
4531
  const articleId = await new Promise(async (resolve)=>{
4549
4532
  const handleResponse = async (response)=>{
4550
4533
  const url = response.url();
4551
- const query = (0, utils.hc)(url);
4534
+ const query = parseUrlQueryString(url);
4552
4535
  if (url.includes("/cgi-bin/operate_appmsg") && query?.t === "ajax-response") {
4553
4536
  const jsonResponse = await response.json();
4554
4537
  page.off("response", handleResponse);
@@ -4562,15 +4545,15 @@ var __webpack_exports__ = {};
4562
4545
  await page.locator(".mass-send .mass-send__td-setting", {
4563
4546
  hasText: "定时发表"
4564
4547
  }).locator(".weui-desktop-switch__box").check();
4565
- let dateD = Number(utils.Tx.format(params.settingInfo.timer, "d"));
4566
- let nowD = Number(utils.Tx.format(Date.now(), "d"));
4548
+ let dateD = Number(TimeFormatter.format(params.settingInfo.timer, "d"));
4549
+ let nowD = Number(TimeFormatter.format(Date.now(), "d"));
4567
4550
  await page.locator(".mass-send__timer .weui-desktop-form__dropdown__dt").click();
4568
4551
  const dropMenu = page.locator(".mass-send__timer .weui-desktop-dropdown-menu").locator(".weui-desktop-dropdown__list-ele");
4569
4552
  await dropMenu.filter({
4570
- hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" : utils.Tx.format(params.settingInfo.timer, "M月d日")
4553
+ hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" : TimeFormatter.format(params.settingInfo.timer, "M月d日")
4571
4554
  }).click();
4572
4555
  const timeDropMenu = page.locator(".mass-send__timer .weui-desktop-picker__time:visible");
4573
- await timeDropMenu.locator(".weui-desktop-form__input").fill(utils.Tx.format(params.settingInfo.timer, "hh:mm"));
4556
+ await timeDropMenu.locator(".weui-desktop-form__input").fill(TimeFormatter.format(params.settingInfo.timer, "hh:mm"));
4574
4557
  await timeDropMenu.locator("i.weui-desktop-icon__time").click();
4575
4558
  }
4576
4559
  });
@@ -4648,15 +4631,15 @@ var __webpack_exports__ = {};
4648
4631
  }
4649
4632
  await page.waitForTimeout(3000);
4650
4633
  await page.close();
4651
- return (0, share_.success)(articleId);
4634
+ return (0, share_namespaceObject.success)(articleId);
4652
4635
  };
4653
4636
  const weixinPublish = async (task, _params)=>{
4654
- const params = (0, utils.Tb)(_params, {
4637
+ const params = defaultParams(_params, {
4655
4638
  masssend: true
4656
4639
  });
4657
4640
  if ("rpa" === params.actionType) return weixinPublish_rpa_rpaAction(task, params);
4658
4641
  if ("mockApi" === params.actionType) return weixinPublish_mock_mockAction(task, params);
4659
- return (0, utils.jo)(weixinPublish_mock_mockAction, weixinPublish_rpa_rpaAction)(task, params);
4642
+ return executeAction(weixinPublish_mock_mockAction, weixinPublish_rpa_rpaAction)(task, params);
4660
4643
  };
4661
4644
  const saveDraft = (http, params, data)=>{
4662
4645
  const formData = new (external_form_data_default())();
@@ -4676,7 +4659,7 @@ var __webpack_exports__ = {};
4676
4659
  };
4677
4660
  const weixinmpPublish_mock_mockAction = async (task, params)=>{
4678
4661
  const tmpCachePath = task.getTmpPath();
4679
- const http = new utils_http.e({
4662
+ const http = new Http({
4680
4663
  headers: {
4681
4664
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
4682
4665
  origin: "https://mp.weixin.qq.com",
@@ -4687,12 +4670,12 @@ var __webpack_exports__ = {};
4687
4670
  const cropResult = {};
4688
4671
  if (params.banners && params.banners.length > 0) {
4689
4672
  const images = await Promise.all(params.banners.map((url)=>{
4690
- const fileName = (0, share_.getFilenameFromUrl)(url);
4691
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4673
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
4674
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4692
4675
  }));
4693
4676
  for(let index = 0; index < images.length; index++){
4694
4677
  const image = images[index];
4695
- const fileState = (0, utils.H8)(image);
4678
+ const fileState = getFileState(image);
4696
4679
  const formData = new (external_form_data_default())();
4697
4680
  formData.append("id", `WU_FILE_${index + 1}`);
4698
4681
  formData.append("name", fileState.name);
@@ -4747,7 +4730,7 @@ var __webpack_exports__ = {};
4747
4730
  ];
4748
4731
  cropFormData.append("size_count", cropRatios.length);
4749
4732
  const cropCoordinates = cropRatios.map((r, idx)=>{
4750
- const cropCoordinate = (0, utils.e0)(colorResponseData.width, colorResponseData.height, r);
4733
+ const cropCoordinate = calculateCropCoordinates(colorResponseData.width, colorResponseData.height, r);
4751
4734
  cropFormData.append(`size${idx}_x1`, cropCoordinate.x1);
4752
4735
  cropFormData.append(`size${idx}_y1`, cropCoordinate.y1);
4753
4736
  cropFormData.append(`size${idx}_x2`, cropCoordinate.x2);
@@ -4800,7 +4783,7 @@ var __webpack_exports__ = {};
4800
4783
  content0: params.content,
4801
4784
  share_imageinfo0: JSON.stringify(shareImageInfos)
4802
4785
  });
4803
- return (0, share_.success)(res);
4786
+ return (0, share_namespaceObject.success)(res);
4804
4787
  };
4805
4788
  const sourceText = {
4806
4789
  ai: "内容由AI生成",
@@ -4837,8 +4820,8 @@ var __webpack_exports__ = {};
4837
4820
  const container = page.locator("#editor_pannel");
4838
4821
  if (params.banners && params.banners.length > 0) {
4839
4822
  const images = await Promise.all(params.banners.map((url)=>{
4840
- const fileName = (0, share_.getFilenameFromUrl)(url);
4841
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4823
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
4824
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4842
4825
  }));
4843
4826
  const fileChooserPromise = page.waitForEvent("filechooser");
4844
4827
  await container.locator(".image-selector__add").hover();
@@ -4863,12 +4846,12 @@ var __webpack_exports__ = {};
4863
4846
  if (params.banners && params.banners.length > 0) await page.waitForSelector("#editor_pannel .image-selector .image-selector__preview");
4864
4847
  if (params.draft) await container.locator("#bottom_main #js_submit button").click();
4865
4848
  else await container.locator("#bottom_main #js_send button").click();
4866
- return (0, share_.success)("");
4849
+ return (0, share_namespaceObject.success)("");
4867
4850
  };
4868
4851
  const weixinmpPublish = async (task, params)=>{
4869
4852
  if ("rpa" === params.actionType) return weixinmpPublish_rpa_rpaAction(task, params);
4870
4853
  if ("mockApi" === params.actionType) return weixinmpPublish_mock_mockAction(task, params);
4871
- return (0, utils.jo)(weixinmpPublish_mock_mockAction, weixinmpPublish_rpa_rpaAction)(task, params);
4854
+ return executeAction(weixinmpPublish_mock_mockAction, weixinmpPublish_rpa_rpaAction)(task, params);
4872
4855
  };
4873
4856
  const xiaohongshuPublish_mock_errnoMap = {
4874
4857
  915: "所属C端账号手机号被修改,请重新登录",
@@ -4885,7 +4868,7 @@ var __webpack_exports__ = {};
4885
4868
  message: "账号数据异常,请重新绑定账号后重试。",
4886
4869
  data: ""
4887
4870
  };
4888
- const http = new utils_http.e({
4871
+ const http = new Http({
4889
4872
  headers: {
4890
4873
  cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
4891
4874
  origin: "https://creator.xiaohongshu.com",
@@ -4925,8 +4908,8 @@ var __webpack_exports__ = {};
4925
4908
  data: ""
4926
4909
  };
4927
4910
  const uploadFile = async (url, index)=>{
4928
- const fileName = (0, share_.getFilenameFromUrl)(url);
4929
- const localUrl = await (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4911
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
4912
+ const localUrl = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
4930
4913
  const ossFileId = coverIds[index];
4931
4914
  const fileBuffer = external_node_fs_default().readFileSync(localUrl);
4932
4915
  await http.api({
@@ -5063,7 +5046,7 @@ var __webpack_exports__ = {};
5063
5046
  },
5064
5047
  defaultErrorMsg: "文章发布异常,请稍后重试。"
5065
5048
  });
5066
- return (0, share_.success)(publishResult.data?.id);
5049
+ return (0, share_namespaceObject.success)(publishResult.data?.id);
5067
5050
  };
5068
5051
  const rpa_xsEncrypt = new XsEncrypt();
5069
5052
  const xiaohongshuPublish_rpa_rpaAction = async (task, params)=>{
@@ -5174,8 +5157,8 @@ var __webpack_exports__ = {};
5174
5157
  hasText: /^上传图文$/
5175
5158
  }).click();
5176
5159
  const images = await Promise.all(params.banners.map((url)=>{
5177
- const fileName = (0, share_.getFilenameFromUrl)(url);
5178
- return (0, share_.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
5160
+ const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
5161
+ return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
5179
5162
  }));
5180
5163
  const fileChooserPromise = page.waitForEvent("filechooser");
5181
5164
  await page.getByRole("textbox").click();
@@ -5273,14 +5256,14 @@ var __webpack_exports__ = {};
5273
5256
  page.locator(".submit .publishBtn").click();
5274
5257
  });
5275
5258
  await page.close();
5276
- return (0, share_.success)(response);
5259
+ return (0, share_namespaceObject.success)(response);
5277
5260
  };
5278
5261
  const xiaohongshuPublish = async (task, params)=>{
5279
5262
  if ("rpa" === params.actionType) return xiaohongshuPublish_rpa_rpaAction(task, params);
5280
5263
  if ("mockApi" === params.actionType) return xiaohongshuPublish_mock_mockAction(task, params);
5281
- return (0, utils.jo)(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
5264
+ return executeAction(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
5282
5265
  };
5283
- var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.2"}');
5266
+ var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.4"}');
5284
5267
  class Action {
5285
5268
  constructor(task){
5286
5269
  this.task = task;
@@ -5292,11 +5275,11 @@ var __webpack_exports__ = {};
5292
5275
  try {
5293
5276
  responseData = await func(this.task, params);
5294
5277
  } catch (error) {
5295
- responseData = utils_http.e.handleApiError(error);
5278
+ responseData = Http.handleApiError(error);
5296
5279
  }
5297
5280
  if (200 === responseData.code) this.task.logger.info(`${func.name} action params error`, responseData);
5298
5281
  else if (0 !== responseData.code) {
5299
- this.task.logger.error(responseData.message || `${func.name} 执行失败`, (0, utils.n)(responseData.data), responseData.extra);
5282
+ this.task.logger.error(responseData.message || `${func.name} 执行失败`, stringifyError(responseData.data), responseData.extra);
5300
5283
  this.task.logger.info(`${func.name} action failed`);
5301
5284
  } else this.task.logger.info(`${func.name} action success`);
5302
5285
  return responseData;