@iflyrpa/actions 1.2.14-beta.2 → 1.2.14-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/searchAccountInfo/types.d.ts +6 -6
- package/dist/actions/searchPublishInfo/types.d.ts +2 -1
- package/dist/bundle.js +11765 -11808
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +557 -589
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +562 -599
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
1539
|
-
var
|
|
1540
|
-
|
|
1541
|
-
var
|
|
1542
|
-
|
|
1543
|
-
var
|
|
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
|
|
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,
|
|
1600
|
-
const image = await (0,
|
|
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 = (
|
|
1488
|
+
const originContentImages = extractImgTag(params.content);
|
|
1620
1489
|
const targetContentImages = await uploadImages(originContentImages);
|
|
1621
|
-
const content = (
|
|
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,
|
|
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 (
|
|
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,
|
|
1751
|
-
return (0,
|
|
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:
|
|
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(
|
|
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(
|
|
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,
|
|
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 (
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
1875
|
+
return (0, share_namespaceObject.success)(data, "获取百家号配置项成功!");
|
|
2007
1876
|
};
|
|
2008
1877
|
const searchToutiaoTopicList = async (_task, params)=>{
|
|
2009
|
-
const http = new
|
|
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,
|
|
2025
|
-
return (0,
|
|
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,
|
|
1896
|
+
return (0, share_namespaceObject.success)([]);
|
|
2028
1897
|
}
|
|
2029
1898
|
};
|
|
2030
1899
|
const searchToutiaoLocation = async (_task, params)=>{
|
|
2031
|
-
const http = new
|
|
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,
|
|
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,
|
|
1932
|
+
return (0, share_namespaceObject.success)([]);
|
|
2064
1933
|
} catch (error) {
|
|
2065
|
-
return (0,
|
|
1934
|
+
return (0, share_namespaceObject.success)([]);
|
|
2066
1935
|
}
|
|
2067
1936
|
};
|
|
2068
1937
|
const searchToutiaoUserInfo = async (_task, params)=>{
|
|
2069
|
-
const http = new
|
|
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,
|
|
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,
|
|
1960
|
+
return (0, share_namespaceObject.success)([]);
|
|
2092
1961
|
} catch (error) {
|
|
2093
|
-
return (0,
|
|
1962
|
+
return (0, share_namespaceObject.success)([]);
|
|
2094
1963
|
}
|
|
2095
1964
|
};
|
|
2096
1965
|
const searchXiaohongshuLocation = async (_task, params)=>{
|
|
2097
|
-
const http = new
|
|
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,
|
|
1987
|
+
return (0, share_namespaceObject.success)(0 === result.code ? result.data.poi_list : []);
|
|
2119
1988
|
} catch (error) {
|
|
2120
|
-
return (0,
|
|
1989
|
+
return (0, share_namespaceObject.success)([]);
|
|
2121
1990
|
}
|
|
2122
1991
|
};
|
|
2123
1992
|
const searchXiaohongshuTopicList = async (_task, params)=>{
|
|
2124
|
-
const http = new
|
|
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,
|
|
2017
|
+
return (0, share_namespaceObject.success)(0 === result.code ? result.data.topic_info_dtos : [], '获取话题成功');
|
|
2149
2018
|
} catch (error) {
|
|
2150
|
-
return (0,
|
|
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
|
|
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,
|
|
2211
|
-
const image = await (0,
|
|
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 = (
|
|
2091
|
+
const originContentImages = extractImgTag(params.content);
|
|
2223
2092
|
const targetContentImages = await uploadImages(originContentImages);
|
|
2224
|
-
const content = (
|
|
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 ?
|
|
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,
|
|
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
|
-
(
|
|
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 (
|
|
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,
|
|
2437
|
-
return (0,
|
|
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((
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
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 (
|
|
2454
|
+
return executeAction(mock_mockAction, rpa_rpaAction)(task, params);
|
|
2586
2455
|
};
|
|
2587
2456
|
const TTFansExport = async (_task, params)=>{
|
|
2588
|
-
const http = new
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
2661
|
+
return (0, share_namespaceObject.success)({
|
|
2793
2662
|
isValidSession: false
|
|
2794
2663
|
}, "百家号账号有效性检测失败!");
|
|
2795
2664
|
}
|
|
2796
2665
|
};
|
|
2797
|
-
|
|
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 (
|
|
2802
|
-
const http = new
|
|
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 =
|
|
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",
|
|
@@ -2834,24 +2707,24 @@ var __webpack_exports__ = {};
|
|
|
2834
2707
|
]);
|
|
2835
2708
|
const bjhData = {
|
|
2836
2709
|
fansNum: fansData.data.coreData.fansCount,
|
|
2837
|
-
fansNumYesterday: yesterdayData.data.data.fans_increase,
|
|
2710
|
+
fansNumYesterday: -1 == yesterdayData.data.data.fans_increase ? null : yesterdayData.data.data.fans_increase,
|
|
2838
2711
|
readNum: readData.data.total.view_count,
|
|
2839
2712
|
incomeNum: incomeData.data.all_income.total_income,
|
|
2840
|
-
incomeNumYesterday: incomeData.data.all_income.yesterday_income,
|
|
2841
|
-
recommendNumYesterday: yesterdayData.data.data.recommend_count,
|
|
2842
|
-
readNumYesterday: yesterdayData.data.data.view_count,
|
|
2843
|
-
likeNumYesterday: yesterdayData.data.data.likes_count,
|
|
2844
|
-
commentNumYesterday: yesterdayData.data.data.comment_count
|
|
2713
|
+
incomeNumYesterday: -1 == incomeData.data.all_income.yesterday_income ? null : incomeData.data.all_income.yesterday_income,
|
|
2714
|
+
recommendNumYesterday: -1 == yesterdayData.data.data.recommend_count ? null : yesterdayData.data.data.recommend_count,
|
|
2715
|
+
readNumYesterday: -1 == yesterdayData.data.data.view_count ? null : yesterdayData.data.data.view_count,
|
|
2716
|
+
likeNumYesterday: -1 == yesterdayData.data.data.likes_count ? null : yesterdayData.data.data.likes_count,
|
|
2717
|
+
commentNumYesterday: -1 == yesterdayData.data.data.comment_count ? null : yesterdayData.data.data.comment_count
|
|
2845
2718
|
};
|
|
2846
|
-
return (0,
|
|
2719
|
+
return (0, share_namespaceObject.success)(bjhData, "百家号平台数据获取成功!");
|
|
2847
2720
|
} catch (error) {
|
|
2848
|
-
return (
|
|
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
|
|
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,
|
|
2768
|
+
return (0, share_namespaceObject.success)(ttData, "头条号粉丝数据获取成功!");
|
|
2896
2769
|
} catch (error) {
|
|
2897
|
-
return (
|
|
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, "微信平台数据获取成功!");
|
|
2829
|
+
} catch (error) {
|
|
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 (
|
|
2958
|
-
const http = new
|
|
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,
|
|
2926
|
+
return (0, share_namespaceObject.success)(xhsData, "小红书平台数据获取成功!");
|
|
2995
2927
|
} catch (error) {
|
|
2996
|
-
return (
|
|
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 (
|
|
2939
|
+
return getWeixinData(params);
|
|
3008
2940
|
case "baijiahao":
|
|
3009
2941
|
return getBaijiahaoData(params);
|
|
3010
2942
|
default:
|
|
3011
|
-
return (0,
|
|
2943
|
+
return (0, share_namespaceObject.success)(null, "暂不支持该平台");
|
|
3012
2944
|
}
|
|
3013
2945
|
};
|
|
3014
|
-
const
|
|
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
|
|
2954
|
+
const http = new Http({
|
|
3023
2955
|
headers: {
|
|
3024
2956
|
cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
3025
2957
|
}
|
|
@@ -3066,16 +2998,18 @@ 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,
|
|
3001
|
+
return (0, share_namespaceObject.success)({
|
|
3070
3002
|
articleCell,
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3003
|
+
...onlySuccess ? {
|
|
3004
|
+
pagination: {
|
|
3005
|
+
total: api_base_info_json.total_count || -1,
|
|
3006
|
+
pageNum,
|
|
3007
|
+
pageSize
|
|
3008
|
+
}
|
|
3009
|
+
} : null
|
|
3010
|
+
}, "头条号文章文章获取成功");
|
|
3077
3011
|
} catch (error) {
|
|
3078
|
-
return
|
|
3012
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "头条号文章数据获取失败");
|
|
3079
3013
|
}
|
|
3080
3014
|
}
|
|
3081
3015
|
async function handleWeixinData(params) {
|
|
@@ -3086,21 +3020,57 @@ var __webpack_exports__ = {};
|
|
|
3086
3020
|
message: "缺少token",
|
|
3087
3021
|
data: null
|
|
3088
3022
|
};
|
|
3089
|
-
const http = new
|
|
3023
|
+
const http = new Http({
|
|
3090
3024
|
headers: {
|
|
3091
3025
|
cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
3092
3026
|
}
|
|
3093
3027
|
});
|
|
3094
3028
|
const ParsePublishPage = (body)=>{
|
|
3095
|
-
const
|
|
3096
|
-
const match = body.match(/publish_page\s*=\s*(\{[\s\S]*?\})\s*;/);
|
|
3029
|
+
const match = body.match(/publish_page\s*=\s*({[\s\S]*?});/);
|
|
3097
3030
|
if (!match) throw new Error('无法提取 publish_page 字段');
|
|
3098
|
-
|
|
3099
|
-
const
|
|
3031
|
+
let parsedData = JSON.parse(match[1]);
|
|
3032
|
+
const decodeEntities = function(str, decode = false) {
|
|
3033
|
+
const encodeMap = [
|
|
3034
|
+
"&",
|
|
3035
|
+
"&",
|
|
3036
|
+
"<",
|
|
3037
|
+
"<",
|
|
3038
|
+
">",
|
|
3039
|
+
">",
|
|
3040
|
+
" ",
|
|
3041
|
+
" ",
|
|
3042
|
+
'"',
|
|
3043
|
+
""",
|
|
3044
|
+
"'",
|
|
3045
|
+
"'"
|
|
3046
|
+
];
|
|
3047
|
+
const decodeMap = [
|
|
3048
|
+
"'",
|
|
3049
|
+
"'",
|
|
3050
|
+
""",
|
|
3051
|
+
'"',
|
|
3052
|
+
" ",
|
|
3053
|
+
" ",
|
|
3054
|
+
">",
|
|
3055
|
+
">",
|
|
3056
|
+
"<",
|
|
3057
|
+
"<",
|
|
3058
|
+
"&",
|
|
3059
|
+
"&",
|
|
3060
|
+
"<",
|
|
3061
|
+
"<",
|
|
3062
|
+
">",
|
|
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
|
+
};
|
|
3100
3070
|
const finalData = {
|
|
3101
3071
|
...parsedData,
|
|
3102
3072
|
publish_list: parsedData.publish_list.map((item)=>{
|
|
3103
|
-
const decoded =
|
|
3073
|
+
const decoded = decodeEntities(item.publish_info, true);
|
|
3104
3074
|
const parsedInfo = JSON.parse(decoded);
|
|
3105
3075
|
return {
|
|
3106
3076
|
publish_type: item.publish_type,
|
|
@@ -3135,7 +3105,7 @@ var __webpack_exports__ = {};
|
|
|
3135
3105
|
originalData: item
|
|
3136
3106
|
} : {}
|
|
3137
3107
|
}));
|
|
3138
|
-
return (0,
|
|
3108
|
+
return (0, share_namespaceObject.success)({
|
|
3139
3109
|
articleCell,
|
|
3140
3110
|
...onlySuccess ? {
|
|
3141
3111
|
pagination: {
|
|
@@ -3144,9 +3114,9 @@ var __webpack_exports__ = {};
|
|
|
3144
3114
|
pageSize
|
|
3145
3115
|
}
|
|
3146
3116
|
} : null
|
|
3147
|
-
}, "
|
|
3117
|
+
}, "微信文章文章获取成功");
|
|
3148
3118
|
} catch (error) {
|
|
3149
|
-
return
|
|
3119
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "微信文章数据获取失败");
|
|
3150
3120
|
}
|
|
3151
3121
|
}
|
|
3152
3122
|
async function handleBaijiahaoData(params) {
|
|
@@ -3157,7 +3127,7 @@ var __webpack_exports__ = {};
|
|
|
3157
3127
|
message: "缺少token",
|
|
3158
3128
|
data: null
|
|
3159
3129
|
};
|
|
3160
|
-
const http = new
|
|
3130
|
+
const http = new Http({
|
|
3161
3131
|
headers: {
|
|
3162
3132
|
cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3163
3133
|
token: token
|
|
@@ -3210,7 +3180,7 @@ var __webpack_exports__ = {};
|
|
|
3210
3180
|
originalData: item
|
|
3211
3181
|
} : {}
|
|
3212
3182
|
}));
|
|
3213
|
-
return (0,
|
|
3183
|
+
return (0, share_namespaceObject.success)({
|
|
3214
3184
|
articleCell,
|
|
3215
3185
|
...onlySuccess ? {
|
|
3216
3186
|
pagination: {
|
|
@@ -3219,9 +3189,9 @@ var __webpack_exports__ = {};
|
|
|
3219
3189
|
pageSize
|
|
3220
3190
|
}
|
|
3221
3191
|
} : null
|
|
3222
|
-
}, "
|
|
3192
|
+
}, "百家号文章数据获取成功");
|
|
3223
3193
|
} catch (error) {
|
|
3224
|
-
return
|
|
3194
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "百家号文章数据获取失败");
|
|
3225
3195
|
}
|
|
3226
3196
|
}
|
|
3227
3197
|
async function handleXiaohongshuData(params) {
|
|
@@ -3239,7 +3209,7 @@ var __webpack_exports__ = {};
|
|
|
3239
3209
|
message: "小红书pageSize不可修改",
|
|
3240
3210
|
data: null
|
|
3241
3211
|
};
|
|
3242
|
-
const http = new
|
|
3212
|
+
const http = new Http({
|
|
3243
3213
|
headers: {
|
|
3244
3214
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3245
3215
|
referer: "https://creator.xiaohongshu.com",
|
|
@@ -3292,18 +3262,18 @@ var __webpack_exports__ = {};
|
|
|
3292
3262
|
originalData: item
|
|
3293
3263
|
} : {}
|
|
3294
3264
|
}));
|
|
3295
|
-
return (0,
|
|
3265
|
+
return (0, share_namespaceObject.success)({
|
|
3296
3266
|
articleCell,
|
|
3297
3267
|
...onlySuccess ? {
|
|
3298
3268
|
pagination: {
|
|
3299
|
-
|
|
3269
|
+
nextPage: hasNextpage,
|
|
3300
3270
|
pageNum,
|
|
3301
3271
|
pageSize
|
|
3302
3272
|
}
|
|
3303
3273
|
} : null
|
|
3304
|
-
}, "
|
|
3274
|
+
}, "小红书文章数据获取成功");
|
|
3305
3275
|
} catch (error) {
|
|
3306
|
-
return
|
|
3276
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "小红书文章数据获取失败");
|
|
3307
3277
|
}
|
|
3308
3278
|
}
|
|
3309
3279
|
const FetchArticles = async (_task, params)=>{
|
|
@@ -3318,11 +3288,11 @@ var __webpack_exports__ = {};
|
|
|
3318
3288
|
case "xiaohongshu":
|
|
3319
3289
|
return handleXiaohongshuData(params);
|
|
3320
3290
|
default:
|
|
3321
|
-
return (0,
|
|
3291
|
+
return (0, share_namespaceObject.success)(null, "暂不支持该平台");
|
|
3322
3292
|
}
|
|
3323
3293
|
};
|
|
3324
3294
|
const getWeixinConfig = async (_task, params)=>{
|
|
3325
|
-
const http = new
|
|
3295
|
+
const http = new Http({
|
|
3326
3296
|
headers: {
|
|
3327
3297
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
3328
3298
|
}
|
|
@@ -3343,11 +3313,11 @@ var __webpack_exports__ = {};
|
|
|
3343
3313
|
const filtered = {
|
|
3344
3314
|
publishQuota: 0 === res.base_resp.ret ? res.quota_detail_list.filter((item)=>"kQuotaTypeMassSendNormal" === item.quota_type).map((item)=>item.quota_item_list) : []
|
|
3345
3315
|
};
|
|
3346
|
-
return (0,
|
|
3316
|
+
return (0, share_namespaceObject.success)(filtered, 0 === res.base_resp.ret ? "微信配置信息获取成功!" : "微信配置信息获取失败!");
|
|
3347
3317
|
};
|
|
3348
3318
|
const weitoutiaoPublish_mock_mockAction = async (task, params)=>{
|
|
3349
3319
|
const tmpCachePath = task.getTmpPath();
|
|
3350
|
-
const http = new
|
|
3320
|
+
const http = new Http({
|
|
3351
3321
|
headers: {
|
|
3352
3322
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3353
3323
|
origin: "https://mp.toutiao.com",
|
|
@@ -3366,8 +3336,8 @@ var __webpack_exports__ = {};
|
|
|
3366
3336
|
const imageList = [];
|
|
3367
3337
|
if (params.banners && params.banners.length > 0) {
|
|
3368
3338
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
3369
|
-
const fileName = (0,
|
|
3370
|
-
return (0,
|
|
3339
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3340
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3371
3341
|
}));
|
|
3372
3342
|
const res = await Promise.all(images.map(async (it)=>{
|
|
3373
3343
|
const formData = new (external_form_data_default())();
|
|
@@ -3414,7 +3384,7 @@ var __webpack_exports__ = {};
|
|
|
3414
3384
|
url: "https://mp.toutiao.com/mp/agw/article/wtt",
|
|
3415
3385
|
data: syncData
|
|
3416
3386
|
});
|
|
3417
|
-
return (0,
|
|
3387
|
+
return (0, share_namespaceObject.success)(res.data);
|
|
3418
3388
|
};
|
|
3419
3389
|
const weitoutiaoPublish_rpa_rpaAction = async (task, params)=>{
|
|
3420
3390
|
const commonCookies = {
|
|
@@ -3447,8 +3417,8 @@ var __webpack_exports__ = {};
|
|
|
3447
3417
|
await descInstance.fill(params.content);
|
|
3448
3418
|
if (params.banners && params.banners?.length > 0) {
|
|
3449
3419
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
3450
|
-
const fileName = (0,
|
|
3451
|
-
return (0,
|
|
3420
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3421
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3452
3422
|
}));
|
|
3453
3423
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
3454
3424
|
await page.locator(".toolbar .syl-toolbar-tool.weitoutiao-image-plugin").click();
|
|
@@ -3479,12 +3449,12 @@ var __webpack_exports__ = {};
|
|
|
3479
3449
|
await declarationFormItem.locator(`.byte-checkbox:has(input[value="${params.declaration}"])`).click();
|
|
3480
3450
|
}
|
|
3481
3451
|
await page.locator(".footer-wrap button.publish-content").click();
|
|
3482
|
-
return (0,
|
|
3452
|
+
return (0, share_namespaceObject.success)("");
|
|
3483
3453
|
};
|
|
3484
3454
|
const weitoutiaoPublish = async (task, params)=>{
|
|
3485
3455
|
if ("rpa" === params.actionType) return weitoutiaoPublish_rpa_rpaAction(task, params);
|
|
3486
3456
|
if ("mockApi" === params.actionType) return weitoutiaoPublish_mock_mockAction(task, params);
|
|
3487
|
-
return (
|
|
3457
|
+
return executeAction(weitoutiaoPublish_mock_mockAction, weitoutiaoPublish_rpa_rpaAction)(task, params);
|
|
3488
3458
|
};
|
|
3489
3459
|
const scanRetryMaxCount = 30;
|
|
3490
3460
|
const QuotaType = {
|
|
@@ -3541,7 +3511,7 @@ var __webpack_exports__ = {};
|
|
|
3541
3511
|
const fingerprint = "4695500bc93ab4ce8fb2692da6564e04";
|
|
3542
3512
|
const client_time_diff = +Number("1743488763") - Math.floor(new Date().getTime() / 1000);
|
|
3543
3513
|
const tmpCachePath = task.getTmpPath();
|
|
3544
|
-
const http = new
|
|
3514
|
+
const http = new Http({
|
|
3545
3515
|
headers: {
|
|
3546
3516
|
"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",
|
|
3547
3517
|
Cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
@@ -3584,12 +3554,12 @@ var __webpack_exports__ = {};
|
|
|
3584
3554
|
const uploadImages = async (images)=>{
|
|
3585
3555
|
const cloudImages = [];
|
|
3586
3556
|
const localImages = await Promise.all(images.map((url)=>{
|
|
3587
|
-
const fileName = (0,
|
|
3588
|
-
return (0,
|
|
3557
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3558
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3589
3559
|
}));
|
|
3590
3560
|
for(let index = 0; index < images.length; index++){
|
|
3591
3561
|
const image = localImages[index];
|
|
3592
|
-
const fileState = (
|
|
3562
|
+
const fileState = getFileState(image);
|
|
3593
3563
|
const formData = new (external_form_data_default())();
|
|
3594
3564
|
formData.append("id", `WU_FILE_${index + 1}`);
|
|
3595
3565
|
formData.append("name", fileState.name);
|
|
@@ -3607,9 +3577,9 @@ var __webpack_exports__ = {};
|
|
|
3607
3577
|
}
|
|
3608
3578
|
return cloudImages;
|
|
3609
3579
|
};
|
|
3610
|
-
const originContentImages = (
|
|
3580
|
+
const originContentImages = extractImgTag(params.content);
|
|
3611
3581
|
const targetContentImages = await uploadImages(originContentImages);
|
|
3612
|
-
const content = (
|
|
3582
|
+
const content = replaceImgSrc(params.content, (dom)=>{
|
|
3613
3583
|
if (dom.attribs.src) {
|
|
3614
3584
|
const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
|
|
3615
3585
|
dom.attribs.src = targetContentImages[idx].cdn_url;
|
|
@@ -3732,7 +3702,7 @@ var __webpack_exports__ = {};
|
|
|
3732
3702
|
const task_id = rewardbind.task_id;
|
|
3733
3703
|
let code = null;
|
|
3734
3704
|
for(let i = 0; i < scanRetryMaxCount; i++){
|
|
3735
|
-
await (0,
|
|
3705
|
+
await (0, share_namespaceObject.sleep)(2000);
|
|
3736
3706
|
const checkScanResult = await http.api({
|
|
3737
3707
|
method: "get",
|
|
3738
3708
|
url: "https://mp.weixin.qq.com/acct/writermgr",
|
|
@@ -3993,7 +3963,7 @@ var __webpack_exports__ = {};
|
|
|
3993
3963
|
appmsgid: appMsgId
|
|
3994
3964
|
};
|
|
3995
3965
|
for(let i = 0; i < 10; i++){
|
|
3996
|
-
await (0,
|
|
3966
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
3997
3967
|
const lastData = {
|
|
3998
3968
|
...copyrightStatData,
|
|
3999
3969
|
first_check: 0 === i ? 1 : 0
|
|
@@ -4001,7 +3971,7 @@ var __webpack_exports__ = {};
|
|
|
4001
3971
|
const checkCopyrightStatRes = await checkCopyrightStat(http, params, lastData);
|
|
4002
3972
|
if (checkCopyrightStatRes.open_ad_reprint_status) break;
|
|
4003
3973
|
}
|
|
4004
|
-
await (0,
|
|
3974
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4005
3975
|
await http.api({
|
|
4006
3976
|
method: "post",
|
|
4007
3977
|
url: "https://mp.weixin.qq.com/cgi-bin/masssend",
|
|
@@ -4022,7 +3992,7 @@ var __webpack_exports__ = {};
|
|
|
4022
3992
|
random: Math.random().toString()
|
|
4023
3993
|
})
|
|
4024
3994
|
});
|
|
4025
|
-
await (0,
|
|
3995
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4026
3996
|
await http.api({
|
|
4027
3997
|
method: "post",
|
|
4028
3998
|
url: "https://mp.weixin.qq.com/cgi-bin/masssend",
|
|
@@ -4040,7 +4010,7 @@ var __webpack_exports__ = {};
|
|
|
4040
4010
|
random: Math.random().toString()
|
|
4041
4011
|
})
|
|
4042
4012
|
});
|
|
4043
|
-
await (0,
|
|
4013
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4044
4014
|
const getTicketResult = await http.api({
|
|
4045
4015
|
method: "post",
|
|
4046
4016
|
url: "https://mp.weixin.qq.com/misc/safeassistant",
|
|
@@ -4060,7 +4030,7 @@ var __webpack_exports__ = {};
|
|
|
4060
4030
|
}),
|
|
4061
4031
|
defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
|
|
4062
4032
|
});
|
|
4063
|
-
await (0,
|
|
4033
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4064
4034
|
const getUuidResult = await http.api({
|
|
4065
4035
|
method: "post",
|
|
4066
4036
|
url: "https://mp.weixin.qq.com/safe/safeqrconnect",
|
|
@@ -4083,14 +4053,14 @@ var __webpack_exports__ = {};
|
|
|
4083
4053
|
}),
|
|
4084
4054
|
defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
|
|
4085
4055
|
});
|
|
4086
|
-
await (0,
|
|
4056
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
4087
4057
|
if (0 !== getUuidResult.genuuid_res) return {
|
|
4088
4058
|
code: 200,
|
|
4089
4059
|
message: GET_QRCODE_DEFAULT_ERROR,
|
|
4090
4060
|
data: ""
|
|
4091
4061
|
};
|
|
4092
4062
|
const uuid = getUuidResult.uuid;
|
|
4093
|
-
await (0,
|
|
4063
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
4094
4064
|
const qrcodeResult = await http.api({
|
|
4095
4065
|
method: "get",
|
|
4096
4066
|
url: "https://mp.weixin.qq.com/safe/safeqrcode",
|
|
@@ -4115,7 +4085,7 @@ var __webpack_exports__ = {};
|
|
|
4115
4085
|
params.safeQrcodeCallback?.(qrcodeFilePath);
|
|
4116
4086
|
let code = "";
|
|
4117
4087
|
for(let i = 0; i < scanRetryMaxCount; i++){
|
|
4118
|
-
await (0,
|
|
4088
|
+
await (0, share_namespaceObject.sleep)(2000);
|
|
4119
4089
|
const checkScanResult = await http.api({
|
|
4120
4090
|
method: "post",
|
|
4121
4091
|
url: "https://mp.weixin.qq.com/safe/safeuuid",
|
|
@@ -4202,7 +4172,7 @@ var __webpack_exports__ = {};
|
|
|
4202
4172
|
share_page: "1",
|
|
4203
4173
|
synctxweibo: "0",
|
|
4204
4174
|
operation_seq,
|
|
4205
|
-
req_id: (0,
|
|
4175
|
+
req_id: (0, share_namespaceObject.randomString)(32),
|
|
4206
4176
|
req_time: new Date().getTime() + 1e3 * client_time_diff,
|
|
4207
4177
|
sync_version: "1",
|
|
4208
4178
|
isFreePublish: params.masssend ? "false" : "true",
|
|
@@ -4214,10 +4184,8 @@ var __webpack_exports__ = {};
|
|
|
4214
4184
|
}),
|
|
4215
4185
|
defaultErrorMsg: params.masssend ? "文章群发异常,请尝试关闭群发或稍后重试。" : "文章发布异常,请稍后重试。"
|
|
4216
4186
|
});
|
|
4217
|
-
return (0,
|
|
4187
|
+
return (0, share_namespaceObject.success)(appMsgId, params.settingInfo.timer ? "微信公众号文章定时发布成功。" : "微信公众号发布完成。");
|
|
4218
4188
|
};
|
|
4219
|
-
var external_axios_ = __webpack_require__("axios");
|
|
4220
|
-
var external_axios_default = /*#__PURE__*/ __webpack_require__.n(external_axios_);
|
|
4221
4189
|
const waitQrcodeResultMaxTime = 2000 * scanRetryMaxCount;
|
|
4222
4190
|
const weixinPublish_rpa_rpaAction = async (task, params)=>{
|
|
4223
4191
|
const tmpCachePath = task.getTmpPath();
|
|
@@ -4333,11 +4301,11 @@ var __webpack_exports__ = {};
|
|
|
4333
4301
|
await page.waitForSelector("#editor_pannel", {
|
|
4334
4302
|
state: "visible"
|
|
4335
4303
|
});
|
|
4336
|
-
(
|
|
4304
|
+
PopupListener(page, '[v-transfer-dom="#vue_app"] .weui-desktop-dialog', "更新", '[v-transfer-dom="#vue_app"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
|
|
4337
4305
|
checkInterval: 1000,
|
|
4338
4306
|
stopAfterClick: false
|
|
4339
4307
|
});
|
|
4340
|
-
(
|
|
4308
|
+
PopupListener(page, '[extclass="weui-desktop-dialog_simple"] .weui-desktop-dialog', "小店", '[extclass="weui-desktop-dialog_simple"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
|
|
4341
4309
|
checkInterval: 1000,
|
|
4342
4310
|
stopAfterClick: true
|
|
4343
4311
|
});
|
|
@@ -4349,7 +4317,7 @@ var __webpack_exports__ = {};
|
|
|
4349
4317
|
await titleInstance.click();
|
|
4350
4318
|
await titleInstance.fill(params.settingInfo.wxAuthor);
|
|
4351
4319
|
}
|
|
4352
|
-
await (
|
|
4320
|
+
await copyHtmlToClipboard(page, params.content);
|
|
4353
4321
|
await page.click(".js_editor_area .ProseMirror");
|
|
4354
4322
|
await page.keyboard.press("Control+V");
|
|
4355
4323
|
await page.locator("#article_setting_area").evaluate((node)=>node.scrollIntoView());
|
|
@@ -4359,8 +4327,8 @@ var __webpack_exports__ = {};
|
|
|
4359
4327
|
await titleInstance.fill(params.settingInfo.wxAbstract);
|
|
4360
4328
|
}
|
|
4361
4329
|
if (params.settingInfo.wxCover) {
|
|
4362
|
-
const fileName = (0,
|
|
4363
|
-
const cover = await (0,
|
|
4330
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(params.settingInfo.wxCover);
|
|
4331
|
+
const cover = await (0, share_namespaceObject.downloadImage)(params.settingInfo.wxCover, external_node_path_default().join(tmpCachePath, fileName));
|
|
4364
4332
|
await page.locator("#article_setting_area #js_cover_area .select-cover__btn").hover();
|
|
4365
4333
|
await page.locator("#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item").filter({
|
|
4366
4334
|
hasText: "从图片库选择"
|
|
@@ -4546,7 +4514,7 @@ var __webpack_exports__ = {};
|
|
|
4546
4514
|
const articleId = await new Promise(async (resolve)=>{
|
|
4547
4515
|
const handleResponse = async (response)=>{
|
|
4548
4516
|
const url = response.url();
|
|
4549
|
-
const query = (
|
|
4517
|
+
const query = parseUrlQueryString(url);
|
|
4550
4518
|
if (url.includes("/cgi-bin/operate_appmsg") && query?.t === "ajax-response") {
|
|
4551
4519
|
const jsonResponse = await response.json();
|
|
4552
4520
|
page.off("response", handleResponse);
|
|
@@ -4560,15 +4528,15 @@ var __webpack_exports__ = {};
|
|
|
4560
4528
|
await page.locator(".mass-send .mass-send__td-setting", {
|
|
4561
4529
|
hasText: "定时发表"
|
|
4562
4530
|
}).locator(".weui-desktop-switch__box").check();
|
|
4563
|
-
let dateD = Number(
|
|
4564
|
-
let nowD = Number(
|
|
4531
|
+
let dateD = Number(TimeFormatter.format(params.settingInfo.timer, "d"));
|
|
4532
|
+
let nowD = Number(TimeFormatter.format(Date.now(), "d"));
|
|
4565
4533
|
await page.locator(".mass-send__timer .weui-desktop-form__dropdown__dt").click();
|
|
4566
4534
|
const dropMenu = page.locator(".mass-send__timer .weui-desktop-dropdown-menu").locator(".weui-desktop-dropdown__list-ele");
|
|
4567
4535
|
await dropMenu.filter({
|
|
4568
|
-
hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" :
|
|
4536
|
+
hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" : TimeFormatter.format(params.settingInfo.timer, "M月d日")
|
|
4569
4537
|
}).click();
|
|
4570
4538
|
const timeDropMenu = page.locator(".mass-send__timer .weui-desktop-picker__time:visible");
|
|
4571
|
-
await timeDropMenu.locator(".weui-desktop-form__input").fill(
|
|
4539
|
+
await timeDropMenu.locator(".weui-desktop-form__input").fill(TimeFormatter.format(params.settingInfo.timer, "hh:mm"));
|
|
4572
4540
|
await timeDropMenu.locator("i.weui-desktop-icon__time").click();
|
|
4573
4541
|
}
|
|
4574
4542
|
});
|
|
@@ -4646,15 +4614,15 @@ var __webpack_exports__ = {};
|
|
|
4646
4614
|
}
|
|
4647
4615
|
await page.waitForTimeout(3000);
|
|
4648
4616
|
await page.close();
|
|
4649
|
-
return (0,
|
|
4617
|
+
return (0, share_namespaceObject.success)(articleId);
|
|
4650
4618
|
};
|
|
4651
4619
|
const weixinPublish = async (task, _params)=>{
|
|
4652
|
-
const params = (
|
|
4620
|
+
const params = defaultParams(_params, {
|
|
4653
4621
|
masssend: true
|
|
4654
4622
|
});
|
|
4655
4623
|
if ("rpa" === params.actionType) return weixinPublish_rpa_rpaAction(task, params);
|
|
4656
4624
|
if ("mockApi" === params.actionType) return weixinPublish_mock_mockAction(task, params);
|
|
4657
|
-
return (
|
|
4625
|
+
return executeAction(weixinPublish_mock_mockAction, weixinPublish_rpa_rpaAction)(task, params);
|
|
4658
4626
|
};
|
|
4659
4627
|
const saveDraft = (http, params, data)=>{
|
|
4660
4628
|
const formData = new (external_form_data_default())();
|
|
@@ -4674,7 +4642,7 @@ var __webpack_exports__ = {};
|
|
|
4674
4642
|
};
|
|
4675
4643
|
const weixinmpPublish_mock_mockAction = async (task, params)=>{
|
|
4676
4644
|
const tmpCachePath = task.getTmpPath();
|
|
4677
|
-
const http = new
|
|
4645
|
+
const http = new Http({
|
|
4678
4646
|
headers: {
|
|
4679
4647
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
4680
4648
|
origin: "https://mp.weixin.qq.com",
|
|
@@ -4685,12 +4653,12 @@ var __webpack_exports__ = {};
|
|
|
4685
4653
|
const cropResult = {};
|
|
4686
4654
|
if (params.banners && params.banners.length > 0) {
|
|
4687
4655
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
4688
|
-
const fileName = (0,
|
|
4689
|
-
return (0,
|
|
4656
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4657
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4690
4658
|
}));
|
|
4691
4659
|
for(let index = 0; index < images.length; index++){
|
|
4692
4660
|
const image = images[index];
|
|
4693
|
-
const fileState = (
|
|
4661
|
+
const fileState = getFileState(image);
|
|
4694
4662
|
const formData = new (external_form_data_default())();
|
|
4695
4663
|
formData.append("id", `WU_FILE_${index + 1}`);
|
|
4696
4664
|
formData.append("name", fileState.name);
|
|
@@ -4745,7 +4713,7 @@ var __webpack_exports__ = {};
|
|
|
4745
4713
|
];
|
|
4746
4714
|
cropFormData.append("size_count", cropRatios.length);
|
|
4747
4715
|
const cropCoordinates = cropRatios.map((r, idx)=>{
|
|
4748
|
-
const cropCoordinate = (
|
|
4716
|
+
const cropCoordinate = calculateCropCoordinates(colorResponseData.width, colorResponseData.height, r);
|
|
4749
4717
|
cropFormData.append(`size${idx}_x1`, cropCoordinate.x1);
|
|
4750
4718
|
cropFormData.append(`size${idx}_y1`, cropCoordinate.y1);
|
|
4751
4719
|
cropFormData.append(`size${idx}_x2`, cropCoordinate.x2);
|
|
@@ -4798,7 +4766,7 @@ var __webpack_exports__ = {};
|
|
|
4798
4766
|
content0: params.content,
|
|
4799
4767
|
share_imageinfo0: JSON.stringify(shareImageInfos)
|
|
4800
4768
|
});
|
|
4801
|
-
return (0,
|
|
4769
|
+
return (0, share_namespaceObject.success)(res);
|
|
4802
4770
|
};
|
|
4803
4771
|
const sourceText = {
|
|
4804
4772
|
ai: "内容由AI生成",
|
|
@@ -4835,8 +4803,8 @@ var __webpack_exports__ = {};
|
|
|
4835
4803
|
const container = page.locator("#editor_pannel");
|
|
4836
4804
|
if (params.banners && params.banners.length > 0) {
|
|
4837
4805
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
4838
|
-
const fileName = (0,
|
|
4839
|
-
return (0,
|
|
4806
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4807
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4840
4808
|
}));
|
|
4841
4809
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
4842
4810
|
await container.locator(".image-selector__add").hover();
|
|
@@ -4861,12 +4829,12 @@ var __webpack_exports__ = {};
|
|
|
4861
4829
|
if (params.banners && params.banners.length > 0) await page.waitForSelector("#editor_pannel .image-selector .image-selector__preview");
|
|
4862
4830
|
if (params.draft) await container.locator("#bottom_main #js_submit button").click();
|
|
4863
4831
|
else await container.locator("#bottom_main #js_send button").click();
|
|
4864
|
-
return (0,
|
|
4832
|
+
return (0, share_namespaceObject.success)("");
|
|
4865
4833
|
};
|
|
4866
4834
|
const weixinmpPublish = async (task, params)=>{
|
|
4867
4835
|
if ("rpa" === params.actionType) return weixinmpPublish_rpa_rpaAction(task, params);
|
|
4868
4836
|
if ("mockApi" === params.actionType) return weixinmpPublish_mock_mockAction(task, params);
|
|
4869
|
-
return (
|
|
4837
|
+
return executeAction(weixinmpPublish_mock_mockAction, weixinmpPublish_rpa_rpaAction)(task, params);
|
|
4870
4838
|
};
|
|
4871
4839
|
const xiaohongshuPublish_mock_errnoMap = {
|
|
4872
4840
|
915: "所属C端账号手机号被修改,请重新登录",
|
|
@@ -4883,7 +4851,7 @@ var __webpack_exports__ = {};
|
|
|
4883
4851
|
message: "账号数据异常,请重新绑定账号后重试。",
|
|
4884
4852
|
data: ""
|
|
4885
4853
|
};
|
|
4886
|
-
const http = new
|
|
4854
|
+
const http = new Http({
|
|
4887
4855
|
headers: {
|
|
4888
4856
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
4889
4857
|
origin: "https://creator.xiaohongshu.com",
|
|
@@ -4923,8 +4891,8 @@ var __webpack_exports__ = {};
|
|
|
4923
4891
|
data: ""
|
|
4924
4892
|
};
|
|
4925
4893
|
const uploadFile = async (url, index)=>{
|
|
4926
|
-
const fileName = (0,
|
|
4927
|
-
const localUrl = await (0,
|
|
4894
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4895
|
+
const localUrl = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4928
4896
|
const ossFileId = coverIds[index];
|
|
4929
4897
|
const fileBuffer = external_node_fs_default().readFileSync(localUrl);
|
|
4930
4898
|
await http.api({
|
|
@@ -5061,7 +5029,7 @@ var __webpack_exports__ = {};
|
|
|
5061
5029
|
},
|
|
5062
5030
|
defaultErrorMsg: "文章发布异常,请稍后重试。"
|
|
5063
5031
|
});
|
|
5064
|
-
return (0,
|
|
5032
|
+
return (0, share_namespaceObject.success)(publishResult.data?.id);
|
|
5065
5033
|
};
|
|
5066
5034
|
const rpa_xsEncrypt = new XsEncrypt();
|
|
5067
5035
|
const xiaohongshuPublish_rpa_rpaAction = async (task, params)=>{
|
|
@@ -5172,8 +5140,8 @@ var __webpack_exports__ = {};
|
|
|
5172
5140
|
hasText: /^上传图文$/
|
|
5173
5141
|
}).click();
|
|
5174
5142
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
5175
|
-
const fileName = (0,
|
|
5176
|
-
return (0,
|
|
5143
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
5144
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
5177
5145
|
}));
|
|
5178
5146
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
5179
5147
|
await page.getByRole("textbox").click();
|
|
@@ -5271,14 +5239,14 @@ var __webpack_exports__ = {};
|
|
|
5271
5239
|
page.locator(".submit .publishBtn").click();
|
|
5272
5240
|
});
|
|
5273
5241
|
await page.close();
|
|
5274
|
-
return (0,
|
|
5242
|
+
return (0, share_namespaceObject.success)(response);
|
|
5275
5243
|
};
|
|
5276
5244
|
const xiaohongshuPublish = async (task, params)=>{
|
|
5277
5245
|
if ("rpa" === params.actionType) return xiaohongshuPublish_rpa_rpaAction(task, params);
|
|
5278
5246
|
if ("mockApi" === params.actionType) return xiaohongshuPublish_mock_mockAction(task, params);
|
|
5279
|
-
return (
|
|
5247
|
+
return executeAction(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
|
|
5280
5248
|
};
|
|
5281
|
-
var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.
|
|
5249
|
+
var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.3"}');
|
|
5282
5250
|
class Action {
|
|
5283
5251
|
constructor(task){
|
|
5284
5252
|
this.task = task;
|
|
@@ -5290,11 +5258,11 @@ var __webpack_exports__ = {};
|
|
|
5290
5258
|
try {
|
|
5291
5259
|
responseData = await func(this.task, params);
|
|
5292
5260
|
} catch (error) {
|
|
5293
|
-
responseData =
|
|
5261
|
+
responseData = Http.handleApiError(error);
|
|
5294
5262
|
}
|
|
5295
5263
|
if (200 === responseData.code) this.task.logger.info(`${func.name} action params error`, responseData);
|
|
5296
5264
|
else if (0 !== responseData.code) {
|
|
5297
|
-
this.task.logger.error(responseData.message || `${func.name} 执行失败`, (
|
|
5265
|
+
this.task.logger.error(responseData.message || `${func.name} 执行失败`, stringifyError(responseData.data), responseData.extra);
|
|
5298
5266
|
this.task.logger.info(`${func.name} action failed`);
|
|
5299
5267
|
} else this.task.logger.info(`${func.name} action success`);
|
|
5300
5268
|
return responseData;
|