@iflyrpa/actions 1.2.14-beta.3 → 1.2.14-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/searchPublishInfo/types.d.ts +2 -1
- package/dist/bundle.js +11779 -11807
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +572 -589
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +577 -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",
|
|
@@ -2843,15 +2716,15 @@ var __webpack_exports__ = {};
|
|
|
2843
2716
|
likeNumYesterday: -1 == yesterdayData.data.data.likes_count ? null : yesterdayData.data.data.likes_count,
|
|
2844
2717
|
commentNumYesterday: -1 == yesterdayData.data.data.comment_count ? null : yesterdayData.data.data.comment_count
|
|
2845
2718
|
};
|
|
2846
|
-
return (0,
|
|
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, "头条号粉丝数据获取成功!");
|
|
2769
|
+
} catch (error) {
|
|
2770
|
+
return types_errorResponse(error instanceof Error ? error.message : "头条号数据获取失败");
|
|
2771
|
+
}
|
|
2772
|
+
}
|
|
2773
|
+
async function getWeixinData(params) {
|
|
2774
|
+
const { token } = params;
|
|
2775
|
+
if (!token) return {
|
|
2776
|
+
code: 200,
|
|
2777
|
+
message: "缺少token",
|
|
2778
|
+
data: null
|
|
2779
|
+
};
|
|
2780
|
+
try {
|
|
2781
|
+
const { token } = params;
|
|
2782
|
+
if (!token) return types_errorResponse("缺少token", 200);
|
|
2783
|
+
const http = new Http({
|
|
2784
|
+
headers: {
|
|
2785
|
+
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
2786
|
+
}
|
|
2787
|
+
});
|
|
2788
|
+
const userInfo = {
|
|
2789
|
+
originalCount: 0,
|
|
2790
|
+
totalUsers: 0,
|
|
2791
|
+
userIncrease: 0,
|
|
2792
|
+
yesterday: {
|
|
2793
|
+
read: 0,
|
|
2794
|
+
share: 0,
|
|
2795
|
+
subscribe: 0
|
|
2796
|
+
}
|
|
2797
|
+
};
|
|
2798
|
+
const userInfoHtml = await http.api({
|
|
2799
|
+
method: "get",
|
|
2800
|
+
url: "https://mp.weixin.qq.com/cgi-bin/home",
|
|
2801
|
+
params: {
|
|
2802
|
+
t: "home/index",
|
|
2803
|
+
token,
|
|
2804
|
+
lang: "zh_CN"
|
|
2805
|
+
}
|
|
2806
|
+
});
|
|
2807
|
+
const originalMatch = userInfoHtml.trim().match(/原创内容[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2808
|
+
if (originalMatch) userInfo.originalCount = parseInt(originalMatch[1].replace(/,/g, ''), 10);
|
|
2809
|
+
const totalUsersMatch = userInfoHtml.match(/总用户数[\s\S]*?<div[^>]*class=["']weui-desktop-user_sum["'][^>]*>[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2810
|
+
if (totalUsersMatch) userInfo.totalUsers = parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);
|
|
2811
|
+
const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\s*([+-]?)\s*<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2812
|
+
if (increaseMatch) {
|
|
2813
|
+
const sign = '-' === increaseMatch[1] ? -1 : 1;
|
|
2814
|
+
userInfo.userIncrease = sign * parseInt(increaseMatch[2].replace(/,/g, ''), 10);
|
|
2815
|
+
}
|
|
2816
|
+
const readMatch = userInfoHtml.match(/昨日阅读[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2817
|
+
if (readMatch) userInfo.yesterday.read = parseInt(readMatch[1].replace(/,/g, ''), 10);
|
|
2818
|
+
const shareMatch = userInfoHtml.match(/昨日分享[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2819
|
+
if (shareMatch) userInfo.yesterday.share = parseInt(shareMatch[1].replace(/,/g, ''), 10);
|
|
2820
|
+
const subscribeMatch = userInfoHtml.match(/昨日新增关注[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2821
|
+
if (subscribeMatch) userInfo.yesterday.subscribe = parseInt(subscribeMatch[1].replace(/,/g, ''), 10);
|
|
2822
|
+
const wxData = {
|
|
2823
|
+
fansNum: userInfo.totalUsers,
|
|
2824
|
+
fansNumYesterday: userInfo.yesterday.subscribe,
|
|
2825
|
+
readNumYesterday: userInfo.yesterday.read,
|
|
2826
|
+
shareNumYesterday: userInfo.yesterday.share
|
|
2827
|
+
};
|
|
2828
|
+
return (0, share_namespaceObject.success)(wxData, "微信平台数据获取成功!");
|
|
2896
2829
|
} catch (error) {
|
|
2897
|
-
return (
|
|
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,7 +2998,7 @@ var __webpack_exports__ = {};
|
|
|
3066
2998
|
} : {}
|
|
3067
2999
|
}));
|
|
3068
3000
|
const api_base_info_json = JSON.parse(articleInfo.api_base_info.app_extra_params);
|
|
3069
|
-
return (0,
|
|
3001
|
+
return (0, share_namespaceObject.success)({
|
|
3070
3002
|
articleCell,
|
|
3071
3003
|
...onlySuccess ? {
|
|
3072
3004
|
pagination: {
|
|
@@ -3075,9 +3007,9 @@ var __webpack_exports__ = {};
|
|
|
3075
3007
|
pageSize
|
|
3076
3008
|
}
|
|
3077
3009
|
} : null
|
|
3078
|
-
}, "
|
|
3010
|
+
}, "头条号文章文章获取成功");
|
|
3079
3011
|
} catch (error) {
|
|
3080
|
-
return
|
|
3012
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "头条号文章数据获取失败");
|
|
3081
3013
|
}
|
|
3082
3014
|
}
|
|
3083
3015
|
async function handleWeixinData(params) {
|
|
@@ -3088,21 +3020,57 @@ var __webpack_exports__ = {};
|
|
|
3088
3020
|
message: "缺少token",
|
|
3089
3021
|
data: null
|
|
3090
3022
|
};
|
|
3091
|
-
const http = new
|
|
3023
|
+
const http = new Http({
|
|
3092
3024
|
headers: {
|
|
3093
3025
|
cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
3094
3026
|
}
|
|
3095
3027
|
});
|
|
3096
3028
|
const ParsePublishPage = (body)=>{
|
|
3097
|
-
const
|
|
3098
|
-
const match = body.match(/publish_page\s*=\s*(\{[\s\S]*?\})\s*;/);
|
|
3029
|
+
const match = body.match(/publish_page\s*=\s*({[\s\S]*?});/);
|
|
3099
3030
|
if (!match) throw new Error('无法提取 publish_page 字段');
|
|
3100
|
-
|
|
3101
|
-
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
|
+
};
|
|
3102
3070
|
const finalData = {
|
|
3103
3071
|
...parsedData,
|
|
3104
3072
|
publish_list: parsedData.publish_list.map((item)=>{
|
|
3105
|
-
const decoded =
|
|
3073
|
+
const decoded = decodeEntities(item.publish_info, true);
|
|
3106
3074
|
const parsedInfo = JSON.parse(decoded);
|
|
3107
3075
|
return {
|
|
3108
3076
|
publish_type: item.publish_type,
|
|
@@ -3112,18 +3080,35 @@ var __webpack_exports__ = {};
|
|
|
3112
3080
|
};
|
|
3113
3081
|
return finalData;
|
|
3114
3082
|
};
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3083
|
+
async function fetchArticles(begin, pageSize, token) {
|
|
3084
|
+
return http.api({
|
|
3085
|
+
method: "get",
|
|
3086
|
+
url: 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish',
|
|
3087
|
+
params: {
|
|
3088
|
+
sub: "list",
|
|
3089
|
+
begin: begin,
|
|
3090
|
+
count: pageSize,
|
|
3091
|
+
token: token,
|
|
3092
|
+
lang: "zh_CN"
|
|
3093
|
+
}
|
|
3094
|
+
});
|
|
3095
|
+
}
|
|
3096
|
+
let rawArticlesInfo = await fetchArticles(0, pageSize > 20 ? 20 : pageSize, token);
|
|
3097
|
+
let articlesInfo = ParsePublishPage(rawArticlesInfo);
|
|
3098
|
+
if (!onlySuccess && pageSize > 20) {
|
|
3099
|
+
let totalFetched = articlesInfo.publish_list.length;
|
|
3100
|
+
let nextPage = pageNum + 1;
|
|
3101
|
+
while(totalFetched < pageSize){
|
|
3102
|
+
const remaining = pageSize - totalFetched;
|
|
3103
|
+
const currentPageSize = remaining > 20 ? 20 : remaining;
|
|
3104
|
+
let _rawArticlesInfo = await fetchArticles((nextPage - 1) * 20, currentPageSize, token);
|
|
3105
|
+
let parsed = ParsePublishPage(_rawArticlesInfo);
|
|
3106
|
+
articlesInfo.publish_list = articlesInfo.publish_list.concat(parsed.publish_list);
|
|
3107
|
+
totalFetched = articlesInfo.publish_list.length;
|
|
3108
|
+
if (parsed.publish_list.length < currentPageSize) break;
|
|
3109
|
+
nextPage++;
|
|
3124
3110
|
}
|
|
3125
|
-
}
|
|
3126
|
-
const articlesInfo = ParsePublishPage(rawArticlesInfo);
|
|
3111
|
+
}
|
|
3127
3112
|
const articleCell = articlesInfo?.publish_list.map((item)=>({
|
|
3128
3113
|
title: item.publish_info.appmsg_info[0].title,
|
|
3129
3114
|
imageUrl: item.publish_info.appmsg_info[0].cover,
|
|
@@ -3137,7 +3122,7 @@ var __webpack_exports__ = {};
|
|
|
3137
3122
|
originalData: item
|
|
3138
3123
|
} : {}
|
|
3139
3124
|
}));
|
|
3140
|
-
return (0,
|
|
3125
|
+
return (0, share_namespaceObject.success)({
|
|
3141
3126
|
articleCell,
|
|
3142
3127
|
...onlySuccess ? {
|
|
3143
3128
|
pagination: {
|
|
@@ -3146,9 +3131,9 @@ var __webpack_exports__ = {};
|
|
|
3146
3131
|
pageSize
|
|
3147
3132
|
}
|
|
3148
3133
|
} : null
|
|
3149
|
-
}, "
|
|
3134
|
+
}, "微信文章文章获取成功");
|
|
3150
3135
|
} catch (error) {
|
|
3151
|
-
return
|
|
3136
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "微信文章数据获取失败");
|
|
3152
3137
|
}
|
|
3153
3138
|
}
|
|
3154
3139
|
async function handleBaijiahaoData(params) {
|
|
@@ -3159,7 +3144,7 @@ var __webpack_exports__ = {};
|
|
|
3159
3144
|
message: "缺少token",
|
|
3160
3145
|
data: null
|
|
3161
3146
|
};
|
|
3162
|
-
const http = new
|
|
3147
|
+
const http = new Http({
|
|
3163
3148
|
headers: {
|
|
3164
3149
|
cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3165
3150
|
token: token
|
|
@@ -3212,7 +3197,7 @@ var __webpack_exports__ = {};
|
|
|
3212
3197
|
originalData: item
|
|
3213
3198
|
} : {}
|
|
3214
3199
|
}));
|
|
3215
|
-
return (0,
|
|
3200
|
+
return (0, share_namespaceObject.success)({
|
|
3216
3201
|
articleCell,
|
|
3217
3202
|
...onlySuccess ? {
|
|
3218
3203
|
pagination: {
|
|
@@ -3221,9 +3206,9 @@ var __webpack_exports__ = {};
|
|
|
3221
3206
|
pageSize
|
|
3222
3207
|
}
|
|
3223
3208
|
} : null
|
|
3224
|
-
}, "
|
|
3209
|
+
}, "百家号文章数据获取成功");
|
|
3225
3210
|
} catch (error) {
|
|
3226
|
-
return
|
|
3211
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "百家号文章数据获取失败");
|
|
3227
3212
|
}
|
|
3228
3213
|
}
|
|
3229
3214
|
async function handleXiaohongshuData(params) {
|
|
@@ -3241,7 +3226,7 @@ var __webpack_exports__ = {};
|
|
|
3241
3226
|
message: "小红书pageSize不可修改",
|
|
3242
3227
|
data: null
|
|
3243
3228
|
};
|
|
3244
|
-
const http = new
|
|
3229
|
+
const http = new Http({
|
|
3245
3230
|
headers: {
|
|
3246
3231
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3247
3232
|
referer: "https://creator.xiaohongshu.com",
|
|
@@ -3294,18 +3279,18 @@ var __webpack_exports__ = {};
|
|
|
3294
3279
|
originalData: item
|
|
3295
3280
|
} : {}
|
|
3296
3281
|
}));
|
|
3297
|
-
return (0,
|
|
3282
|
+
return (0, share_namespaceObject.success)({
|
|
3298
3283
|
articleCell,
|
|
3299
3284
|
...onlySuccess ? {
|
|
3300
3285
|
pagination: {
|
|
3301
|
-
|
|
3286
|
+
nextPage: hasNextpage,
|
|
3302
3287
|
pageNum,
|
|
3303
3288
|
pageSize
|
|
3304
3289
|
}
|
|
3305
3290
|
} : null
|
|
3306
|
-
}, "
|
|
3291
|
+
}, "小红书文章数据获取成功");
|
|
3307
3292
|
} catch (error) {
|
|
3308
|
-
return
|
|
3293
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "小红书文章数据获取失败");
|
|
3309
3294
|
}
|
|
3310
3295
|
}
|
|
3311
3296
|
const FetchArticles = async (_task, params)=>{
|
|
@@ -3320,11 +3305,11 @@ var __webpack_exports__ = {};
|
|
|
3320
3305
|
case "xiaohongshu":
|
|
3321
3306
|
return handleXiaohongshuData(params);
|
|
3322
3307
|
default:
|
|
3323
|
-
return (0,
|
|
3308
|
+
return (0, share_namespaceObject.success)(null, "暂不支持该平台");
|
|
3324
3309
|
}
|
|
3325
3310
|
};
|
|
3326
3311
|
const getWeixinConfig = async (_task, params)=>{
|
|
3327
|
-
const http = new
|
|
3312
|
+
const http = new Http({
|
|
3328
3313
|
headers: {
|
|
3329
3314
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
3330
3315
|
}
|
|
@@ -3345,11 +3330,11 @@ var __webpack_exports__ = {};
|
|
|
3345
3330
|
const filtered = {
|
|
3346
3331
|
publishQuota: 0 === res.base_resp.ret ? res.quota_detail_list.filter((item)=>"kQuotaTypeMassSendNormal" === item.quota_type).map((item)=>item.quota_item_list) : []
|
|
3347
3332
|
};
|
|
3348
|
-
return (0,
|
|
3333
|
+
return (0, share_namespaceObject.success)(filtered, 0 === res.base_resp.ret ? "微信配置信息获取成功!" : "微信配置信息获取失败!");
|
|
3349
3334
|
};
|
|
3350
3335
|
const weitoutiaoPublish_mock_mockAction = async (task, params)=>{
|
|
3351
3336
|
const tmpCachePath = task.getTmpPath();
|
|
3352
|
-
const http = new
|
|
3337
|
+
const http = new Http({
|
|
3353
3338
|
headers: {
|
|
3354
3339
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3355
3340
|
origin: "https://mp.toutiao.com",
|
|
@@ -3368,8 +3353,8 @@ var __webpack_exports__ = {};
|
|
|
3368
3353
|
const imageList = [];
|
|
3369
3354
|
if (params.banners && params.banners.length > 0) {
|
|
3370
3355
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
3371
|
-
const fileName = (0,
|
|
3372
|
-
return (0,
|
|
3356
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3357
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3373
3358
|
}));
|
|
3374
3359
|
const res = await Promise.all(images.map(async (it)=>{
|
|
3375
3360
|
const formData = new (external_form_data_default())();
|
|
@@ -3416,7 +3401,7 @@ var __webpack_exports__ = {};
|
|
|
3416
3401
|
url: "https://mp.toutiao.com/mp/agw/article/wtt",
|
|
3417
3402
|
data: syncData
|
|
3418
3403
|
});
|
|
3419
|
-
return (0,
|
|
3404
|
+
return (0, share_namespaceObject.success)(res.data);
|
|
3420
3405
|
};
|
|
3421
3406
|
const weitoutiaoPublish_rpa_rpaAction = async (task, params)=>{
|
|
3422
3407
|
const commonCookies = {
|
|
@@ -3449,8 +3434,8 @@ var __webpack_exports__ = {};
|
|
|
3449
3434
|
await descInstance.fill(params.content);
|
|
3450
3435
|
if (params.banners && params.banners?.length > 0) {
|
|
3451
3436
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
3452
|
-
const fileName = (0,
|
|
3453
|
-
return (0,
|
|
3437
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3438
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3454
3439
|
}));
|
|
3455
3440
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
3456
3441
|
await page.locator(".toolbar .syl-toolbar-tool.weitoutiao-image-plugin").click();
|
|
@@ -3481,12 +3466,12 @@ var __webpack_exports__ = {};
|
|
|
3481
3466
|
await declarationFormItem.locator(`.byte-checkbox:has(input[value="${params.declaration}"])`).click();
|
|
3482
3467
|
}
|
|
3483
3468
|
await page.locator(".footer-wrap button.publish-content").click();
|
|
3484
|
-
return (0,
|
|
3469
|
+
return (0, share_namespaceObject.success)("");
|
|
3485
3470
|
};
|
|
3486
3471
|
const weitoutiaoPublish = async (task, params)=>{
|
|
3487
3472
|
if ("rpa" === params.actionType) return weitoutiaoPublish_rpa_rpaAction(task, params);
|
|
3488
3473
|
if ("mockApi" === params.actionType) return weitoutiaoPublish_mock_mockAction(task, params);
|
|
3489
|
-
return (
|
|
3474
|
+
return executeAction(weitoutiaoPublish_mock_mockAction, weitoutiaoPublish_rpa_rpaAction)(task, params);
|
|
3490
3475
|
};
|
|
3491
3476
|
const scanRetryMaxCount = 30;
|
|
3492
3477
|
const QuotaType = {
|
|
@@ -3543,7 +3528,7 @@ var __webpack_exports__ = {};
|
|
|
3543
3528
|
const fingerprint = "4695500bc93ab4ce8fb2692da6564e04";
|
|
3544
3529
|
const client_time_diff = +Number("1743488763") - Math.floor(new Date().getTime() / 1000);
|
|
3545
3530
|
const tmpCachePath = task.getTmpPath();
|
|
3546
|
-
const http = new
|
|
3531
|
+
const http = new Http({
|
|
3547
3532
|
headers: {
|
|
3548
3533
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0",
|
|
3549
3534
|
Cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
@@ -3586,12 +3571,12 @@ var __webpack_exports__ = {};
|
|
|
3586
3571
|
const uploadImages = async (images)=>{
|
|
3587
3572
|
const cloudImages = [];
|
|
3588
3573
|
const localImages = await Promise.all(images.map((url)=>{
|
|
3589
|
-
const fileName = (0,
|
|
3590
|
-
return (0,
|
|
3574
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3575
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3591
3576
|
}));
|
|
3592
3577
|
for(let index = 0; index < images.length; index++){
|
|
3593
3578
|
const image = localImages[index];
|
|
3594
|
-
const fileState = (
|
|
3579
|
+
const fileState = getFileState(image);
|
|
3595
3580
|
const formData = new (external_form_data_default())();
|
|
3596
3581
|
formData.append("id", `WU_FILE_${index + 1}`);
|
|
3597
3582
|
formData.append("name", fileState.name);
|
|
@@ -3609,9 +3594,9 @@ var __webpack_exports__ = {};
|
|
|
3609
3594
|
}
|
|
3610
3595
|
return cloudImages;
|
|
3611
3596
|
};
|
|
3612
|
-
const originContentImages = (
|
|
3597
|
+
const originContentImages = extractImgTag(params.content);
|
|
3613
3598
|
const targetContentImages = await uploadImages(originContentImages);
|
|
3614
|
-
const content = (
|
|
3599
|
+
const content = replaceImgSrc(params.content, (dom)=>{
|
|
3615
3600
|
if (dom.attribs.src) {
|
|
3616
3601
|
const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
|
|
3617
3602
|
dom.attribs.src = targetContentImages[idx].cdn_url;
|
|
@@ -3734,7 +3719,7 @@ var __webpack_exports__ = {};
|
|
|
3734
3719
|
const task_id = rewardbind.task_id;
|
|
3735
3720
|
let code = null;
|
|
3736
3721
|
for(let i = 0; i < scanRetryMaxCount; i++){
|
|
3737
|
-
await (0,
|
|
3722
|
+
await (0, share_namespaceObject.sleep)(2000);
|
|
3738
3723
|
const checkScanResult = await http.api({
|
|
3739
3724
|
method: "get",
|
|
3740
3725
|
url: "https://mp.weixin.qq.com/acct/writermgr",
|
|
@@ -3995,7 +3980,7 @@ var __webpack_exports__ = {};
|
|
|
3995
3980
|
appmsgid: appMsgId
|
|
3996
3981
|
};
|
|
3997
3982
|
for(let i = 0; i < 10; i++){
|
|
3998
|
-
await (0,
|
|
3983
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
3999
3984
|
const lastData = {
|
|
4000
3985
|
...copyrightStatData,
|
|
4001
3986
|
first_check: 0 === i ? 1 : 0
|
|
@@ -4003,7 +3988,7 @@ var __webpack_exports__ = {};
|
|
|
4003
3988
|
const checkCopyrightStatRes = await checkCopyrightStat(http, params, lastData);
|
|
4004
3989
|
if (checkCopyrightStatRes.open_ad_reprint_status) break;
|
|
4005
3990
|
}
|
|
4006
|
-
await (0,
|
|
3991
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4007
3992
|
await http.api({
|
|
4008
3993
|
method: "post",
|
|
4009
3994
|
url: "https://mp.weixin.qq.com/cgi-bin/masssend",
|
|
@@ -4024,7 +4009,7 @@ var __webpack_exports__ = {};
|
|
|
4024
4009
|
random: Math.random().toString()
|
|
4025
4010
|
})
|
|
4026
4011
|
});
|
|
4027
|
-
await (0,
|
|
4012
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4028
4013
|
await http.api({
|
|
4029
4014
|
method: "post",
|
|
4030
4015
|
url: "https://mp.weixin.qq.com/cgi-bin/masssend",
|
|
@@ -4042,7 +4027,7 @@ var __webpack_exports__ = {};
|
|
|
4042
4027
|
random: Math.random().toString()
|
|
4043
4028
|
})
|
|
4044
4029
|
});
|
|
4045
|
-
await (0,
|
|
4030
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4046
4031
|
const getTicketResult = await http.api({
|
|
4047
4032
|
method: "post",
|
|
4048
4033
|
url: "https://mp.weixin.qq.com/misc/safeassistant",
|
|
@@ -4062,7 +4047,7 @@ var __webpack_exports__ = {};
|
|
|
4062
4047
|
}),
|
|
4063
4048
|
defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
|
|
4064
4049
|
});
|
|
4065
|
-
await (0,
|
|
4050
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4066
4051
|
const getUuidResult = await http.api({
|
|
4067
4052
|
method: "post",
|
|
4068
4053
|
url: "https://mp.weixin.qq.com/safe/safeqrconnect",
|
|
@@ -4085,14 +4070,14 @@ var __webpack_exports__ = {};
|
|
|
4085
4070
|
}),
|
|
4086
4071
|
defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
|
|
4087
4072
|
});
|
|
4088
|
-
await (0,
|
|
4073
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
4089
4074
|
if (0 !== getUuidResult.genuuid_res) return {
|
|
4090
4075
|
code: 200,
|
|
4091
4076
|
message: GET_QRCODE_DEFAULT_ERROR,
|
|
4092
4077
|
data: ""
|
|
4093
4078
|
};
|
|
4094
4079
|
const uuid = getUuidResult.uuid;
|
|
4095
|
-
await (0,
|
|
4080
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
4096
4081
|
const qrcodeResult = await http.api({
|
|
4097
4082
|
method: "get",
|
|
4098
4083
|
url: "https://mp.weixin.qq.com/safe/safeqrcode",
|
|
@@ -4117,7 +4102,7 @@ var __webpack_exports__ = {};
|
|
|
4117
4102
|
params.safeQrcodeCallback?.(qrcodeFilePath);
|
|
4118
4103
|
let code = "";
|
|
4119
4104
|
for(let i = 0; i < scanRetryMaxCount; i++){
|
|
4120
|
-
await (0,
|
|
4105
|
+
await (0, share_namespaceObject.sleep)(2000);
|
|
4121
4106
|
const checkScanResult = await http.api({
|
|
4122
4107
|
method: "post",
|
|
4123
4108
|
url: "https://mp.weixin.qq.com/safe/safeuuid",
|
|
@@ -4204,7 +4189,7 @@ var __webpack_exports__ = {};
|
|
|
4204
4189
|
share_page: "1",
|
|
4205
4190
|
synctxweibo: "0",
|
|
4206
4191
|
operation_seq,
|
|
4207
|
-
req_id: (0,
|
|
4192
|
+
req_id: (0, share_namespaceObject.randomString)(32),
|
|
4208
4193
|
req_time: new Date().getTime() + 1e3 * client_time_diff,
|
|
4209
4194
|
sync_version: "1",
|
|
4210
4195
|
isFreePublish: params.masssend ? "false" : "true",
|
|
@@ -4216,10 +4201,8 @@ var __webpack_exports__ = {};
|
|
|
4216
4201
|
}),
|
|
4217
4202
|
defaultErrorMsg: params.masssend ? "文章群发异常,请尝试关闭群发或稍后重试。" : "文章发布异常,请稍后重试。"
|
|
4218
4203
|
});
|
|
4219
|
-
return (0,
|
|
4204
|
+
return (0, share_namespaceObject.success)(appMsgId, params.settingInfo.timer ? "微信公众号文章定时发布成功。" : "微信公众号发布完成。");
|
|
4220
4205
|
};
|
|
4221
|
-
var external_axios_ = __webpack_require__("axios");
|
|
4222
|
-
var external_axios_default = /*#__PURE__*/ __webpack_require__.n(external_axios_);
|
|
4223
4206
|
const waitQrcodeResultMaxTime = 2000 * scanRetryMaxCount;
|
|
4224
4207
|
const weixinPublish_rpa_rpaAction = async (task, params)=>{
|
|
4225
4208
|
const tmpCachePath = task.getTmpPath();
|
|
@@ -4335,11 +4318,11 @@ var __webpack_exports__ = {};
|
|
|
4335
4318
|
await page.waitForSelector("#editor_pannel", {
|
|
4336
4319
|
state: "visible"
|
|
4337
4320
|
});
|
|
4338
|
-
(
|
|
4321
|
+
PopupListener(page, '[v-transfer-dom="#vue_app"] .weui-desktop-dialog', "更新", '[v-transfer-dom="#vue_app"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
|
|
4339
4322
|
checkInterval: 1000,
|
|
4340
4323
|
stopAfterClick: false
|
|
4341
4324
|
});
|
|
4342
|
-
(
|
|
4325
|
+
PopupListener(page, '[extclass="weui-desktop-dialog_simple"] .weui-desktop-dialog', "小店", '[extclass="weui-desktop-dialog_simple"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
|
|
4343
4326
|
checkInterval: 1000,
|
|
4344
4327
|
stopAfterClick: true
|
|
4345
4328
|
});
|
|
@@ -4351,7 +4334,7 @@ var __webpack_exports__ = {};
|
|
|
4351
4334
|
await titleInstance.click();
|
|
4352
4335
|
await titleInstance.fill(params.settingInfo.wxAuthor);
|
|
4353
4336
|
}
|
|
4354
|
-
await (
|
|
4337
|
+
await copyHtmlToClipboard(page, params.content);
|
|
4355
4338
|
await page.click(".js_editor_area .ProseMirror");
|
|
4356
4339
|
await page.keyboard.press("Control+V");
|
|
4357
4340
|
await page.locator("#article_setting_area").evaluate((node)=>node.scrollIntoView());
|
|
@@ -4361,8 +4344,8 @@ var __webpack_exports__ = {};
|
|
|
4361
4344
|
await titleInstance.fill(params.settingInfo.wxAbstract);
|
|
4362
4345
|
}
|
|
4363
4346
|
if (params.settingInfo.wxCover) {
|
|
4364
|
-
const fileName = (0,
|
|
4365
|
-
const cover = await (0,
|
|
4347
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(params.settingInfo.wxCover);
|
|
4348
|
+
const cover = await (0, share_namespaceObject.downloadImage)(params.settingInfo.wxCover, external_node_path_default().join(tmpCachePath, fileName));
|
|
4366
4349
|
await page.locator("#article_setting_area #js_cover_area .select-cover__btn").hover();
|
|
4367
4350
|
await page.locator("#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item").filter({
|
|
4368
4351
|
hasText: "从图片库选择"
|
|
@@ -4548,7 +4531,7 @@ var __webpack_exports__ = {};
|
|
|
4548
4531
|
const articleId = await new Promise(async (resolve)=>{
|
|
4549
4532
|
const handleResponse = async (response)=>{
|
|
4550
4533
|
const url = response.url();
|
|
4551
|
-
const query = (
|
|
4534
|
+
const query = parseUrlQueryString(url);
|
|
4552
4535
|
if (url.includes("/cgi-bin/operate_appmsg") && query?.t === "ajax-response") {
|
|
4553
4536
|
const jsonResponse = await response.json();
|
|
4554
4537
|
page.off("response", handleResponse);
|
|
@@ -4562,15 +4545,15 @@ var __webpack_exports__ = {};
|
|
|
4562
4545
|
await page.locator(".mass-send .mass-send__td-setting", {
|
|
4563
4546
|
hasText: "定时发表"
|
|
4564
4547
|
}).locator(".weui-desktop-switch__box").check();
|
|
4565
|
-
let dateD = Number(
|
|
4566
|
-
let nowD = Number(
|
|
4548
|
+
let dateD = Number(TimeFormatter.format(params.settingInfo.timer, "d"));
|
|
4549
|
+
let nowD = Number(TimeFormatter.format(Date.now(), "d"));
|
|
4567
4550
|
await page.locator(".mass-send__timer .weui-desktop-form__dropdown__dt").click();
|
|
4568
4551
|
const dropMenu = page.locator(".mass-send__timer .weui-desktop-dropdown-menu").locator(".weui-desktop-dropdown__list-ele");
|
|
4569
4552
|
await dropMenu.filter({
|
|
4570
|
-
hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" :
|
|
4553
|
+
hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" : TimeFormatter.format(params.settingInfo.timer, "M月d日")
|
|
4571
4554
|
}).click();
|
|
4572
4555
|
const timeDropMenu = page.locator(".mass-send__timer .weui-desktop-picker__time:visible");
|
|
4573
|
-
await timeDropMenu.locator(".weui-desktop-form__input").fill(
|
|
4556
|
+
await timeDropMenu.locator(".weui-desktop-form__input").fill(TimeFormatter.format(params.settingInfo.timer, "hh:mm"));
|
|
4574
4557
|
await timeDropMenu.locator("i.weui-desktop-icon__time").click();
|
|
4575
4558
|
}
|
|
4576
4559
|
});
|
|
@@ -4648,15 +4631,15 @@ var __webpack_exports__ = {};
|
|
|
4648
4631
|
}
|
|
4649
4632
|
await page.waitForTimeout(3000);
|
|
4650
4633
|
await page.close();
|
|
4651
|
-
return (0,
|
|
4634
|
+
return (0, share_namespaceObject.success)(articleId);
|
|
4652
4635
|
};
|
|
4653
4636
|
const weixinPublish = async (task, _params)=>{
|
|
4654
|
-
const params = (
|
|
4637
|
+
const params = defaultParams(_params, {
|
|
4655
4638
|
masssend: true
|
|
4656
4639
|
});
|
|
4657
4640
|
if ("rpa" === params.actionType) return weixinPublish_rpa_rpaAction(task, params);
|
|
4658
4641
|
if ("mockApi" === params.actionType) return weixinPublish_mock_mockAction(task, params);
|
|
4659
|
-
return (
|
|
4642
|
+
return executeAction(weixinPublish_mock_mockAction, weixinPublish_rpa_rpaAction)(task, params);
|
|
4660
4643
|
};
|
|
4661
4644
|
const saveDraft = (http, params, data)=>{
|
|
4662
4645
|
const formData = new (external_form_data_default())();
|
|
@@ -4676,7 +4659,7 @@ var __webpack_exports__ = {};
|
|
|
4676
4659
|
};
|
|
4677
4660
|
const weixinmpPublish_mock_mockAction = async (task, params)=>{
|
|
4678
4661
|
const tmpCachePath = task.getTmpPath();
|
|
4679
|
-
const http = new
|
|
4662
|
+
const http = new Http({
|
|
4680
4663
|
headers: {
|
|
4681
4664
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
4682
4665
|
origin: "https://mp.weixin.qq.com",
|
|
@@ -4687,12 +4670,12 @@ var __webpack_exports__ = {};
|
|
|
4687
4670
|
const cropResult = {};
|
|
4688
4671
|
if (params.banners && params.banners.length > 0) {
|
|
4689
4672
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
4690
|
-
const fileName = (0,
|
|
4691
|
-
return (0,
|
|
4673
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4674
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4692
4675
|
}));
|
|
4693
4676
|
for(let index = 0; index < images.length; index++){
|
|
4694
4677
|
const image = images[index];
|
|
4695
|
-
const fileState = (
|
|
4678
|
+
const fileState = getFileState(image);
|
|
4696
4679
|
const formData = new (external_form_data_default())();
|
|
4697
4680
|
formData.append("id", `WU_FILE_${index + 1}`);
|
|
4698
4681
|
formData.append("name", fileState.name);
|
|
@@ -4747,7 +4730,7 @@ var __webpack_exports__ = {};
|
|
|
4747
4730
|
];
|
|
4748
4731
|
cropFormData.append("size_count", cropRatios.length);
|
|
4749
4732
|
const cropCoordinates = cropRatios.map((r, idx)=>{
|
|
4750
|
-
const cropCoordinate = (
|
|
4733
|
+
const cropCoordinate = calculateCropCoordinates(colorResponseData.width, colorResponseData.height, r);
|
|
4751
4734
|
cropFormData.append(`size${idx}_x1`, cropCoordinate.x1);
|
|
4752
4735
|
cropFormData.append(`size${idx}_y1`, cropCoordinate.y1);
|
|
4753
4736
|
cropFormData.append(`size${idx}_x2`, cropCoordinate.x2);
|
|
@@ -4800,7 +4783,7 @@ var __webpack_exports__ = {};
|
|
|
4800
4783
|
content0: params.content,
|
|
4801
4784
|
share_imageinfo0: JSON.stringify(shareImageInfos)
|
|
4802
4785
|
});
|
|
4803
|
-
return (0,
|
|
4786
|
+
return (0, share_namespaceObject.success)(res);
|
|
4804
4787
|
};
|
|
4805
4788
|
const sourceText = {
|
|
4806
4789
|
ai: "内容由AI生成",
|
|
@@ -4837,8 +4820,8 @@ var __webpack_exports__ = {};
|
|
|
4837
4820
|
const container = page.locator("#editor_pannel");
|
|
4838
4821
|
if (params.banners && params.banners.length > 0) {
|
|
4839
4822
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
4840
|
-
const fileName = (0,
|
|
4841
|
-
return (0,
|
|
4823
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4824
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4842
4825
|
}));
|
|
4843
4826
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
4844
4827
|
await container.locator(".image-selector__add").hover();
|
|
@@ -4863,12 +4846,12 @@ var __webpack_exports__ = {};
|
|
|
4863
4846
|
if (params.banners && params.banners.length > 0) await page.waitForSelector("#editor_pannel .image-selector .image-selector__preview");
|
|
4864
4847
|
if (params.draft) await container.locator("#bottom_main #js_submit button").click();
|
|
4865
4848
|
else await container.locator("#bottom_main #js_send button").click();
|
|
4866
|
-
return (0,
|
|
4849
|
+
return (0, share_namespaceObject.success)("");
|
|
4867
4850
|
};
|
|
4868
4851
|
const weixinmpPublish = async (task, params)=>{
|
|
4869
4852
|
if ("rpa" === params.actionType) return weixinmpPublish_rpa_rpaAction(task, params);
|
|
4870
4853
|
if ("mockApi" === params.actionType) return weixinmpPublish_mock_mockAction(task, params);
|
|
4871
|
-
return (
|
|
4854
|
+
return executeAction(weixinmpPublish_mock_mockAction, weixinmpPublish_rpa_rpaAction)(task, params);
|
|
4872
4855
|
};
|
|
4873
4856
|
const xiaohongshuPublish_mock_errnoMap = {
|
|
4874
4857
|
915: "所属C端账号手机号被修改,请重新登录",
|
|
@@ -4885,7 +4868,7 @@ var __webpack_exports__ = {};
|
|
|
4885
4868
|
message: "账号数据异常,请重新绑定账号后重试。",
|
|
4886
4869
|
data: ""
|
|
4887
4870
|
};
|
|
4888
|
-
const http = new
|
|
4871
|
+
const http = new Http({
|
|
4889
4872
|
headers: {
|
|
4890
4873
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
4891
4874
|
origin: "https://creator.xiaohongshu.com",
|
|
@@ -4925,8 +4908,8 @@ var __webpack_exports__ = {};
|
|
|
4925
4908
|
data: ""
|
|
4926
4909
|
};
|
|
4927
4910
|
const uploadFile = async (url, index)=>{
|
|
4928
|
-
const fileName = (0,
|
|
4929
|
-
const localUrl = await (0,
|
|
4911
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4912
|
+
const localUrl = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4930
4913
|
const ossFileId = coverIds[index];
|
|
4931
4914
|
const fileBuffer = external_node_fs_default().readFileSync(localUrl);
|
|
4932
4915
|
await http.api({
|
|
@@ -5063,7 +5046,7 @@ var __webpack_exports__ = {};
|
|
|
5063
5046
|
},
|
|
5064
5047
|
defaultErrorMsg: "文章发布异常,请稍后重试。"
|
|
5065
5048
|
});
|
|
5066
|
-
return (0,
|
|
5049
|
+
return (0, share_namespaceObject.success)(publishResult.data?.id);
|
|
5067
5050
|
};
|
|
5068
5051
|
const rpa_xsEncrypt = new XsEncrypt();
|
|
5069
5052
|
const xiaohongshuPublish_rpa_rpaAction = async (task, params)=>{
|
|
@@ -5174,8 +5157,8 @@ var __webpack_exports__ = {};
|
|
|
5174
5157
|
hasText: /^上传图文$/
|
|
5175
5158
|
}).click();
|
|
5176
5159
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
5177
|
-
const fileName = (0,
|
|
5178
|
-
return (0,
|
|
5160
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
5161
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
5179
5162
|
}));
|
|
5180
5163
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
5181
5164
|
await page.getByRole("textbox").click();
|
|
@@ -5273,14 +5256,14 @@ var __webpack_exports__ = {};
|
|
|
5273
5256
|
page.locator(".submit .publishBtn").click();
|
|
5274
5257
|
});
|
|
5275
5258
|
await page.close();
|
|
5276
|
-
return (0,
|
|
5259
|
+
return (0, share_namespaceObject.success)(response);
|
|
5277
5260
|
};
|
|
5278
5261
|
const xiaohongshuPublish = async (task, params)=>{
|
|
5279
5262
|
if ("rpa" === params.actionType) return xiaohongshuPublish_rpa_rpaAction(task, params);
|
|
5280
5263
|
if ("mockApi" === params.actionType) return xiaohongshuPublish_mock_mockAction(task, params);
|
|
5281
|
-
return (
|
|
5264
|
+
return executeAction(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
|
|
5282
5265
|
};
|
|
5283
|
-
var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.
|
|
5266
|
+
var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.4"}');
|
|
5284
5267
|
class Action {
|
|
5285
5268
|
constructor(task){
|
|
5286
5269
|
this.task = task;
|
|
@@ -5292,11 +5275,11 @@ var __webpack_exports__ = {};
|
|
|
5292
5275
|
try {
|
|
5293
5276
|
responseData = await func(this.task, params);
|
|
5294
5277
|
} catch (error) {
|
|
5295
|
-
responseData =
|
|
5278
|
+
responseData = Http.handleApiError(error);
|
|
5296
5279
|
}
|
|
5297
5280
|
if (200 === responseData.code) this.task.logger.info(`${func.name} action params error`, responseData);
|
|
5298
5281
|
else if (0 !== responseData.code) {
|
|
5299
|
-
this.task.logger.error(responseData.message || `${func.name} 执行失败`, (
|
|
5282
|
+
this.task.logger.error(responseData.message || `${func.name} 执行失败`, stringifyError(responseData.data), responseData.extra);
|
|
5300
5283
|
this.task.logger.info(`${func.name} action failed`);
|
|
5301
5284
|
} else this.task.logger.info(`${func.name} action success`);
|
|
5302
5285
|
return responseData;
|