@iflyrpa/actions 1.2.14-beta.3 → 1.2.14-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/searchPublishInfo/types.d.ts +2 -1
- package/dist/bundle.js +11762 -11807
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +544 -578
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +549 -588
- 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, "头条号粉丝数据获取成功!");
|
|
2896
2769
|
} catch (error) {
|
|
2897
|
-
return (
|
|
2770
|
+
return types_errorResponse(error instanceof Error ? error.message : "头条号数据获取失败");
|
|
2771
|
+
}
|
|
2772
|
+
}
|
|
2773
|
+
async function getWeixinData(params) {
|
|
2774
|
+
const { token } = params;
|
|
2775
|
+
if (!token) return {
|
|
2776
|
+
code: 200,
|
|
2777
|
+
message: "缺少token",
|
|
2778
|
+
data: null
|
|
2779
|
+
};
|
|
2780
|
+
try {
|
|
2781
|
+
const { token } = params;
|
|
2782
|
+
if (!token) return types_errorResponse("缺少token", 200);
|
|
2783
|
+
const http = new Http({
|
|
2784
|
+
headers: {
|
|
2785
|
+
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
2786
|
+
}
|
|
2787
|
+
});
|
|
2788
|
+
const userInfo = {
|
|
2789
|
+
originalCount: 0,
|
|
2790
|
+
totalUsers: 0,
|
|
2791
|
+
userIncrease: 0,
|
|
2792
|
+
yesterday: {
|
|
2793
|
+
read: 0,
|
|
2794
|
+
share: 0,
|
|
2795
|
+
subscribe: 0
|
|
2796
|
+
}
|
|
2797
|
+
};
|
|
2798
|
+
const userInfoHtml = await http.api({
|
|
2799
|
+
method: "get",
|
|
2800
|
+
url: "https://mp.weixin.qq.com/cgi-bin/home",
|
|
2801
|
+
params: {
|
|
2802
|
+
t: "home/index",
|
|
2803
|
+
token,
|
|
2804
|
+
lang: "zh_CN"
|
|
2805
|
+
}
|
|
2806
|
+
});
|
|
2807
|
+
const originalMatch = userInfoHtml.trim().match(/原创内容[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2808
|
+
if (originalMatch) userInfo.originalCount = parseInt(originalMatch[1].replace(/,/g, ''), 10);
|
|
2809
|
+
const totalUsersMatch = userInfoHtml.match(/总用户数[\s\S]*?<div[^>]*class=["']weui-desktop-user_sum["'][^>]*>[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2810
|
+
if (totalUsersMatch) userInfo.totalUsers = parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);
|
|
2811
|
+
const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\s*([+-]?)\s*<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2812
|
+
if (increaseMatch) {
|
|
2813
|
+
const sign = '-' === increaseMatch[1] ? -1 : 1;
|
|
2814
|
+
userInfo.userIncrease = sign * parseInt(increaseMatch[2].replace(/,/g, ''), 10);
|
|
2815
|
+
}
|
|
2816
|
+
const readMatch = userInfoHtml.match(/昨日阅读[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2817
|
+
if (readMatch) userInfo.yesterday.read = parseInt(readMatch[1].replace(/,/g, ''), 10);
|
|
2818
|
+
const shareMatch = userInfoHtml.match(/昨日分享[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2819
|
+
if (shareMatch) userInfo.yesterday.share = parseInt(shareMatch[1].replace(/,/g, ''), 10);
|
|
2820
|
+
const subscribeMatch = userInfoHtml.match(/昨日新增关注[\s\S]*?<mp-thousandth[^>]*>([\d,]+)<\/mp-thousandth>/i);
|
|
2821
|
+
if (subscribeMatch) userInfo.yesterday.subscribe = parseInt(subscribeMatch[1].replace(/,/g, ''), 10);
|
|
2822
|
+
const wxData = {
|
|
2823
|
+
fansNum: userInfo.totalUsers,
|
|
2824
|
+
fansNumYesterday: userInfo.yesterday.subscribe,
|
|
2825
|
+
readNumYesterday: userInfo.yesterday.read,
|
|
2826
|
+
shareNumYesterday: userInfo.yesterday.share
|
|
2827
|
+
};
|
|
2828
|
+
return (0, share_namespaceObject.success)(wxData, "微信平台数据获取成功!");
|
|
2829
|
+
} catch (error) {
|
|
2830
|
+
return types_errorResponse(error instanceof Error ? error.message : "微信平台数据获取失败");
|
|
2898
2831
|
}
|
|
2899
2832
|
}
|
|
2900
|
-
var getWxInfo = __webpack_require__("./src/actions/searchAccountInfo/getWxInfo.ts");
|
|
2901
2833
|
const external_node_buffer_namespaceObject = require("node:buffer");
|
|
2902
2834
|
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
2903
2835
|
var external_node_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_node_crypto_namespaceObject);
|
|
@@ -2954,8 +2886,8 @@ var __webpack_exports__ = {};
|
|
|
2954
2886
|
async function getXiaohongshuData(params) {
|
|
2955
2887
|
try {
|
|
2956
2888
|
const a1Cookie = params.cookies.find((it)=>"a1" === it.name)?.value;
|
|
2957
|
-
if (!a1Cookie) return (
|
|
2958
|
-
const http = new
|
|
2889
|
+
if (!a1Cookie) return types_errorResponse("账号数据异常,请重新绑定账号后重试。", 200);
|
|
2890
|
+
const http = new Http({
|
|
2959
2891
|
headers: {
|
|
2960
2892
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
2961
2893
|
referer: "https://creator.xiaohongshu.com",
|
|
@@ -2991,9 +2923,9 @@ var __webpack_exports__ = {};
|
|
|
2991
2923
|
fansNumLastWeek: sevenData.data.seven.rise_fans_count,
|
|
2992
2924
|
fansNumYesterday: sevenData.data.seven.rise_fans_list[0].count
|
|
2993
2925
|
};
|
|
2994
|
-
return (0,
|
|
2926
|
+
return (0, share_namespaceObject.success)(xhsData, "小红书平台数据获取成功!");
|
|
2995
2927
|
} catch (error) {
|
|
2996
|
-
return (
|
|
2928
|
+
return types_errorResponse(error instanceof Error ? error.message : "小红书平台数据获取失败");
|
|
2997
2929
|
}
|
|
2998
2930
|
}
|
|
2999
2931
|
const SearchAccountInfo = async (_task, params)=>{
|
|
@@ -3004,14 +2936,14 @@ var __webpack_exports__ = {};
|
|
|
3004
2936
|
case "xiaohongshu":
|
|
3005
2937
|
return getXiaohongshuData(params);
|
|
3006
2938
|
case "weixin":
|
|
3007
|
-
return (
|
|
2939
|
+
return getWeixinData(params);
|
|
3008
2940
|
case "baijiahao":
|
|
3009
2941
|
return getBaijiahaoData(params);
|
|
3010
2942
|
default:
|
|
3011
|
-
return (0,
|
|
2943
|
+
return (0, share_namespaceObject.success)(null, "暂不支持该平台");
|
|
3012
2944
|
}
|
|
3013
2945
|
};
|
|
3014
|
-
const
|
|
2946
|
+
const searchPublishInfo_types_errorResponse = (message, code = 500)=>({
|
|
3015
2947
|
code,
|
|
3016
2948
|
message,
|
|
3017
2949
|
data: null
|
|
@@ -3019,7 +2951,7 @@ var __webpack_exports__ = {};
|
|
|
3019
2951
|
async function handleToutiaoData(params) {
|
|
3020
2952
|
try {
|
|
3021
2953
|
const { cookies, pageNum = 1, pageSize = 10, showOriginalData = false, onlySuccess = false } = params;
|
|
3022
|
-
const http = new
|
|
2954
|
+
const http = new Http({
|
|
3023
2955
|
headers: {
|
|
3024
2956
|
cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
3025
2957
|
}
|
|
@@ -3066,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,
|
|
@@ -3137,7 +3105,7 @@ var __webpack_exports__ = {};
|
|
|
3137
3105
|
originalData: item
|
|
3138
3106
|
} : {}
|
|
3139
3107
|
}));
|
|
3140
|
-
return (0,
|
|
3108
|
+
return (0, share_namespaceObject.success)({
|
|
3141
3109
|
articleCell,
|
|
3142
3110
|
...onlySuccess ? {
|
|
3143
3111
|
pagination: {
|
|
@@ -3146,9 +3114,9 @@ var __webpack_exports__ = {};
|
|
|
3146
3114
|
pageSize
|
|
3147
3115
|
}
|
|
3148
3116
|
} : null
|
|
3149
|
-
}, "
|
|
3117
|
+
}, "微信文章文章获取成功");
|
|
3150
3118
|
} catch (error) {
|
|
3151
|
-
return
|
|
3119
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "微信文章数据获取失败");
|
|
3152
3120
|
}
|
|
3153
3121
|
}
|
|
3154
3122
|
async function handleBaijiahaoData(params) {
|
|
@@ -3159,7 +3127,7 @@ var __webpack_exports__ = {};
|
|
|
3159
3127
|
message: "缺少token",
|
|
3160
3128
|
data: null
|
|
3161
3129
|
};
|
|
3162
|
-
const http = new
|
|
3130
|
+
const http = new Http({
|
|
3163
3131
|
headers: {
|
|
3164
3132
|
cookie: cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3165
3133
|
token: token
|
|
@@ -3212,7 +3180,7 @@ var __webpack_exports__ = {};
|
|
|
3212
3180
|
originalData: item
|
|
3213
3181
|
} : {}
|
|
3214
3182
|
}));
|
|
3215
|
-
return (0,
|
|
3183
|
+
return (0, share_namespaceObject.success)({
|
|
3216
3184
|
articleCell,
|
|
3217
3185
|
...onlySuccess ? {
|
|
3218
3186
|
pagination: {
|
|
@@ -3221,9 +3189,9 @@ var __webpack_exports__ = {};
|
|
|
3221
3189
|
pageSize
|
|
3222
3190
|
}
|
|
3223
3191
|
} : null
|
|
3224
|
-
}, "
|
|
3192
|
+
}, "百家号文章数据获取成功");
|
|
3225
3193
|
} catch (error) {
|
|
3226
|
-
return
|
|
3194
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "百家号文章数据获取失败");
|
|
3227
3195
|
}
|
|
3228
3196
|
}
|
|
3229
3197
|
async function handleXiaohongshuData(params) {
|
|
@@ -3241,7 +3209,7 @@ var __webpack_exports__ = {};
|
|
|
3241
3209
|
message: "小红书pageSize不可修改",
|
|
3242
3210
|
data: null
|
|
3243
3211
|
};
|
|
3244
|
-
const http = new
|
|
3212
|
+
const http = new Http({
|
|
3245
3213
|
headers: {
|
|
3246
3214
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3247
3215
|
referer: "https://creator.xiaohongshu.com",
|
|
@@ -3294,18 +3262,18 @@ var __webpack_exports__ = {};
|
|
|
3294
3262
|
originalData: item
|
|
3295
3263
|
} : {}
|
|
3296
3264
|
}));
|
|
3297
|
-
return (0,
|
|
3265
|
+
return (0, share_namespaceObject.success)({
|
|
3298
3266
|
articleCell,
|
|
3299
3267
|
...onlySuccess ? {
|
|
3300
3268
|
pagination: {
|
|
3301
|
-
|
|
3269
|
+
nextPage: hasNextpage,
|
|
3302
3270
|
pageNum,
|
|
3303
3271
|
pageSize
|
|
3304
3272
|
}
|
|
3305
3273
|
} : null
|
|
3306
|
-
}, "
|
|
3274
|
+
}, "小红书文章数据获取成功");
|
|
3307
3275
|
} catch (error) {
|
|
3308
|
-
return
|
|
3276
|
+
return searchPublishInfo_types_errorResponse(error instanceof Error ? error.message : "小红书文章数据获取失败");
|
|
3309
3277
|
}
|
|
3310
3278
|
}
|
|
3311
3279
|
const FetchArticles = async (_task, params)=>{
|
|
@@ -3320,11 +3288,11 @@ var __webpack_exports__ = {};
|
|
|
3320
3288
|
case "xiaohongshu":
|
|
3321
3289
|
return handleXiaohongshuData(params);
|
|
3322
3290
|
default:
|
|
3323
|
-
return (0,
|
|
3291
|
+
return (0, share_namespaceObject.success)(null, "暂不支持该平台");
|
|
3324
3292
|
}
|
|
3325
3293
|
};
|
|
3326
3294
|
const getWeixinConfig = async (_task, params)=>{
|
|
3327
|
-
const http = new
|
|
3295
|
+
const http = new Http({
|
|
3328
3296
|
headers: {
|
|
3329
3297
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";")
|
|
3330
3298
|
}
|
|
@@ -3345,11 +3313,11 @@ var __webpack_exports__ = {};
|
|
|
3345
3313
|
const filtered = {
|
|
3346
3314
|
publishQuota: 0 === res.base_resp.ret ? res.quota_detail_list.filter((item)=>"kQuotaTypeMassSendNormal" === item.quota_type).map((item)=>item.quota_item_list) : []
|
|
3347
3315
|
};
|
|
3348
|
-
return (0,
|
|
3316
|
+
return (0, share_namespaceObject.success)(filtered, 0 === res.base_resp.ret ? "微信配置信息获取成功!" : "微信配置信息获取失败!");
|
|
3349
3317
|
};
|
|
3350
3318
|
const weitoutiaoPublish_mock_mockAction = async (task, params)=>{
|
|
3351
3319
|
const tmpCachePath = task.getTmpPath();
|
|
3352
|
-
const http = new
|
|
3320
|
+
const http = new Http({
|
|
3353
3321
|
headers: {
|
|
3354
3322
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
3355
3323
|
origin: "https://mp.toutiao.com",
|
|
@@ -3368,8 +3336,8 @@ var __webpack_exports__ = {};
|
|
|
3368
3336
|
const imageList = [];
|
|
3369
3337
|
if (params.banners && params.banners.length > 0) {
|
|
3370
3338
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
3371
|
-
const fileName = (0,
|
|
3372
|
-
return (0,
|
|
3339
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3340
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3373
3341
|
}));
|
|
3374
3342
|
const res = await Promise.all(images.map(async (it)=>{
|
|
3375
3343
|
const formData = new (external_form_data_default())();
|
|
@@ -3416,7 +3384,7 @@ var __webpack_exports__ = {};
|
|
|
3416
3384
|
url: "https://mp.toutiao.com/mp/agw/article/wtt",
|
|
3417
3385
|
data: syncData
|
|
3418
3386
|
});
|
|
3419
|
-
return (0,
|
|
3387
|
+
return (0, share_namespaceObject.success)(res.data);
|
|
3420
3388
|
};
|
|
3421
3389
|
const weitoutiaoPublish_rpa_rpaAction = async (task, params)=>{
|
|
3422
3390
|
const commonCookies = {
|
|
@@ -3449,8 +3417,8 @@ var __webpack_exports__ = {};
|
|
|
3449
3417
|
await descInstance.fill(params.content);
|
|
3450
3418
|
if (params.banners && params.banners?.length > 0) {
|
|
3451
3419
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
3452
|
-
const fileName = (0,
|
|
3453
|
-
return (0,
|
|
3420
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3421
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3454
3422
|
}));
|
|
3455
3423
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
3456
3424
|
await page.locator(".toolbar .syl-toolbar-tool.weitoutiao-image-plugin").click();
|
|
@@ -3481,12 +3449,12 @@ var __webpack_exports__ = {};
|
|
|
3481
3449
|
await declarationFormItem.locator(`.byte-checkbox:has(input[value="${params.declaration}"])`).click();
|
|
3482
3450
|
}
|
|
3483
3451
|
await page.locator(".footer-wrap button.publish-content").click();
|
|
3484
|
-
return (0,
|
|
3452
|
+
return (0, share_namespaceObject.success)("");
|
|
3485
3453
|
};
|
|
3486
3454
|
const weitoutiaoPublish = async (task, params)=>{
|
|
3487
3455
|
if ("rpa" === params.actionType) return weitoutiaoPublish_rpa_rpaAction(task, params);
|
|
3488
3456
|
if ("mockApi" === params.actionType) return weitoutiaoPublish_mock_mockAction(task, params);
|
|
3489
|
-
return (
|
|
3457
|
+
return executeAction(weitoutiaoPublish_mock_mockAction, weitoutiaoPublish_rpa_rpaAction)(task, params);
|
|
3490
3458
|
};
|
|
3491
3459
|
const scanRetryMaxCount = 30;
|
|
3492
3460
|
const QuotaType = {
|
|
@@ -3543,7 +3511,7 @@ var __webpack_exports__ = {};
|
|
|
3543
3511
|
const fingerprint = "4695500bc93ab4ce8fb2692da6564e04";
|
|
3544
3512
|
const client_time_diff = +Number("1743488763") - Math.floor(new Date().getTime() / 1000);
|
|
3545
3513
|
const tmpCachePath = task.getTmpPath();
|
|
3546
|
-
const http = new
|
|
3514
|
+
const http = new Http({
|
|
3547
3515
|
headers: {
|
|
3548
3516
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0",
|
|
3549
3517
|
Cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
@@ -3586,12 +3554,12 @@ var __webpack_exports__ = {};
|
|
|
3586
3554
|
const uploadImages = async (images)=>{
|
|
3587
3555
|
const cloudImages = [];
|
|
3588
3556
|
const localImages = await Promise.all(images.map((url)=>{
|
|
3589
|
-
const fileName = (0,
|
|
3590
|
-
return (0,
|
|
3557
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
3558
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
3591
3559
|
}));
|
|
3592
3560
|
for(let index = 0; index < images.length; index++){
|
|
3593
3561
|
const image = localImages[index];
|
|
3594
|
-
const fileState = (
|
|
3562
|
+
const fileState = getFileState(image);
|
|
3595
3563
|
const formData = new (external_form_data_default())();
|
|
3596
3564
|
formData.append("id", `WU_FILE_${index + 1}`);
|
|
3597
3565
|
formData.append("name", fileState.name);
|
|
@@ -3609,9 +3577,9 @@ var __webpack_exports__ = {};
|
|
|
3609
3577
|
}
|
|
3610
3578
|
return cloudImages;
|
|
3611
3579
|
};
|
|
3612
|
-
const originContentImages = (
|
|
3580
|
+
const originContentImages = extractImgTag(params.content);
|
|
3613
3581
|
const targetContentImages = await uploadImages(originContentImages);
|
|
3614
|
-
const content = (
|
|
3582
|
+
const content = replaceImgSrc(params.content, (dom)=>{
|
|
3615
3583
|
if (dom.attribs.src) {
|
|
3616
3584
|
const idx = originContentImages.findIndex((it)=>it === dom.attribs.src);
|
|
3617
3585
|
dom.attribs.src = targetContentImages[idx].cdn_url;
|
|
@@ -3734,7 +3702,7 @@ var __webpack_exports__ = {};
|
|
|
3734
3702
|
const task_id = rewardbind.task_id;
|
|
3735
3703
|
let code = null;
|
|
3736
3704
|
for(let i = 0; i < scanRetryMaxCount; i++){
|
|
3737
|
-
await (0,
|
|
3705
|
+
await (0, share_namespaceObject.sleep)(2000);
|
|
3738
3706
|
const checkScanResult = await http.api({
|
|
3739
3707
|
method: "get",
|
|
3740
3708
|
url: "https://mp.weixin.qq.com/acct/writermgr",
|
|
@@ -3995,7 +3963,7 @@ var __webpack_exports__ = {};
|
|
|
3995
3963
|
appmsgid: appMsgId
|
|
3996
3964
|
};
|
|
3997
3965
|
for(let i = 0; i < 10; i++){
|
|
3998
|
-
await (0,
|
|
3966
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
3999
3967
|
const lastData = {
|
|
4000
3968
|
...copyrightStatData,
|
|
4001
3969
|
first_check: 0 === i ? 1 : 0
|
|
@@ -4003,7 +3971,7 @@ var __webpack_exports__ = {};
|
|
|
4003
3971
|
const checkCopyrightStatRes = await checkCopyrightStat(http, params, lastData);
|
|
4004
3972
|
if (checkCopyrightStatRes.open_ad_reprint_status) break;
|
|
4005
3973
|
}
|
|
4006
|
-
await (0,
|
|
3974
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4007
3975
|
await http.api({
|
|
4008
3976
|
method: "post",
|
|
4009
3977
|
url: "https://mp.weixin.qq.com/cgi-bin/masssend",
|
|
@@ -4024,7 +3992,7 @@ var __webpack_exports__ = {};
|
|
|
4024
3992
|
random: Math.random().toString()
|
|
4025
3993
|
})
|
|
4026
3994
|
});
|
|
4027
|
-
await (0,
|
|
3995
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4028
3996
|
await http.api({
|
|
4029
3997
|
method: "post",
|
|
4030
3998
|
url: "https://mp.weixin.qq.com/cgi-bin/masssend",
|
|
@@ -4042,7 +4010,7 @@ var __webpack_exports__ = {};
|
|
|
4042
4010
|
random: Math.random().toString()
|
|
4043
4011
|
})
|
|
4044
4012
|
});
|
|
4045
|
-
await (0,
|
|
4013
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4046
4014
|
const getTicketResult = await http.api({
|
|
4047
4015
|
method: "post",
|
|
4048
4016
|
url: "https://mp.weixin.qq.com/misc/safeassistant",
|
|
@@ -4062,7 +4030,7 @@ var __webpack_exports__ = {};
|
|
|
4062
4030
|
}),
|
|
4063
4031
|
defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
|
|
4064
4032
|
});
|
|
4065
|
-
await (0,
|
|
4033
|
+
await (0, share_namespaceObject.sleep)(300);
|
|
4066
4034
|
const getUuidResult = await http.api({
|
|
4067
4035
|
method: "post",
|
|
4068
4036
|
url: "https://mp.weixin.qq.com/safe/safeqrconnect",
|
|
@@ -4085,14 +4053,14 @@ var __webpack_exports__ = {};
|
|
|
4085
4053
|
}),
|
|
4086
4054
|
defaultErrorMsg: GET_QRCODE_DEFAULT_ERROR
|
|
4087
4055
|
});
|
|
4088
|
-
await (0,
|
|
4056
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
4089
4057
|
if (0 !== getUuidResult.genuuid_res) return {
|
|
4090
4058
|
code: 200,
|
|
4091
4059
|
message: GET_QRCODE_DEFAULT_ERROR,
|
|
4092
4060
|
data: ""
|
|
4093
4061
|
};
|
|
4094
4062
|
const uuid = getUuidResult.uuid;
|
|
4095
|
-
await (0,
|
|
4063
|
+
await (0, share_namespaceObject.sleep)(1000);
|
|
4096
4064
|
const qrcodeResult = await http.api({
|
|
4097
4065
|
method: "get",
|
|
4098
4066
|
url: "https://mp.weixin.qq.com/safe/safeqrcode",
|
|
@@ -4117,7 +4085,7 @@ var __webpack_exports__ = {};
|
|
|
4117
4085
|
params.safeQrcodeCallback?.(qrcodeFilePath);
|
|
4118
4086
|
let code = "";
|
|
4119
4087
|
for(let i = 0; i < scanRetryMaxCount; i++){
|
|
4120
|
-
await (0,
|
|
4088
|
+
await (0, share_namespaceObject.sleep)(2000);
|
|
4121
4089
|
const checkScanResult = await http.api({
|
|
4122
4090
|
method: "post",
|
|
4123
4091
|
url: "https://mp.weixin.qq.com/safe/safeuuid",
|
|
@@ -4204,7 +4172,7 @@ var __webpack_exports__ = {};
|
|
|
4204
4172
|
share_page: "1",
|
|
4205
4173
|
synctxweibo: "0",
|
|
4206
4174
|
operation_seq,
|
|
4207
|
-
req_id: (0,
|
|
4175
|
+
req_id: (0, share_namespaceObject.randomString)(32),
|
|
4208
4176
|
req_time: new Date().getTime() + 1e3 * client_time_diff,
|
|
4209
4177
|
sync_version: "1",
|
|
4210
4178
|
isFreePublish: params.masssend ? "false" : "true",
|
|
@@ -4216,10 +4184,8 @@ var __webpack_exports__ = {};
|
|
|
4216
4184
|
}),
|
|
4217
4185
|
defaultErrorMsg: params.masssend ? "文章群发异常,请尝试关闭群发或稍后重试。" : "文章发布异常,请稍后重试。"
|
|
4218
4186
|
});
|
|
4219
|
-
return (0,
|
|
4187
|
+
return (0, share_namespaceObject.success)(appMsgId, params.settingInfo.timer ? "微信公众号文章定时发布成功。" : "微信公众号发布完成。");
|
|
4220
4188
|
};
|
|
4221
|
-
var external_axios_ = __webpack_require__("axios");
|
|
4222
|
-
var external_axios_default = /*#__PURE__*/ __webpack_require__.n(external_axios_);
|
|
4223
4189
|
const waitQrcodeResultMaxTime = 2000 * scanRetryMaxCount;
|
|
4224
4190
|
const weixinPublish_rpa_rpaAction = async (task, params)=>{
|
|
4225
4191
|
const tmpCachePath = task.getTmpPath();
|
|
@@ -4335,11 +4301,11 @@ var __webpack_exports__ = {};
|
|
|
4335
4301
|
await page.waitForSelector("#editor_pannel", {
|
|
4336
4302
|
state: "visible"
|
|
4337
4303
|
});
|
|
4338
|
-
(
|
|
4304
|
+
PopupListener(page, '[v-transfer-dom="#vue_app"] .weui-desktop-dialog', "更新", '[v-transfer-dom="#vue_app"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
|
|
4339
4305
|
checkInterval: 1000,
|
|
4340
4306
|
stopAfterClick: false
|
|
4341
4307
|
});
|
|
4342
|
-
(
|
|
4308
|
+
PopupListener(page, '[extclass="weui-desktop-dialog_simple"] .weui-desktop-dialog', "小店", '[extclass="weui-desktop-dialog_simple"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn', {
|
|
4343
4309
|
checkInterval: 1000,
|
|
4344
4310
|
stopAfterClick: true
|
|
4345
4311
|
});
|
|
@@ -4351,7 +4317,7 @@ var __webpack_exports__ = {};
|
|
|
4351
4317
|
await titleInstance.click();
|
|
4352
4318
|
await titleInstance.fill(params.settingInfo.wxAuthor);
|
|
4353
4319
|
}
|
|
4354
|
-
await (
|
|
4320
|
+
await copyHtmlToClipboard(page, params.content);
|
|
4355
4321
|
await page.click(".js_editor_area .ProseMirror");
|
|
4356
4322
|
await page.keyboard.press("Control+V");
|
|
4357
4323
|
await page.locator("#article_setting_area").evaluate((node)=>node.scrollIntoView());
|
|
@@ -4361,8 +4327,8 @@ var __webpack_exports__ = {};
|
|
|
4361
4327
|
await titleInstance.fill(params.settingInfo.wxAbstract);
|
|
4362
4328
|
}
|
|
4363
4329
|
if (params.settingInfo.wxCover) {
|
|
4364
|
-
const fileName = (0,
|
|
4365
|
-
const cover = await (0,
|
|
4330
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(params.settingInfo.wxCover);
|
|
4331
|
+
const cover = await (0, share_namespaceObject.downloadImage)(params.settingInfo.wxCover, external_node_path_default().join(tmpCachePath, fileName));
|
|
4366
4332
|
await page.locator("#article_setting_area #js_cover_area .select-cover__btn").hover();
|
|
4367
4333
|
await page.locator("#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item").filter({
|
|
4368
4334
|
hasText: "从图片库选择"
|
|
@@ -4548,7 +4514,7 @@ var __webpack_exports__ = {};
|
|
|
4548
4514
|
const articleId = await new Promise(async (resolve)=>{
|
|
4549
4515
|
const handleResponse = async (response)=>{
|
|
4550
4516
|
const url = response.url();
|
|
4551
|
-
const query = (
|
|
4517
|
+
const query = parseUrlQueryString(url);
|
|
4552
4518
|
if (url.includes("/cgi-bin/operate_appmsg") && query?.t === "ajax-response") {
|
|
4553
4519
|
const jsonResponse = await response.json();
|
|
4554
4520
|
page.off("response", handleResponse);
|
|
@@ -4562,15 +4528,15 @@ var __webpack_exports__ = {};
|
|
|
4562
4528
|
await page.locator(".mass-send .mass-send__td-setting", {
|
|
4563
4529
|
hasText: "定时发表"
|
|
4564
4530
|
}).locator(".weui-desktop-switch__box").check();
|
|
4565
|
-
let dateD = Number(
|
|
4566
|
-
let nowD = Number(
|
|
4531
|
+
let dateD = Number(TimeFormatter.format(params.settingInfo.timer, "d"));
|
|
4532
|
+
let nowD = Number(TimeFormatter.format(Date.now(), "d"));
|
|
4567
4533
|
await page.locator(".mass-send__timer .weui-desktop-form__dropdown__dt").click();
|
|
4568
4534
|
const dropMenu = page.locator(".mass-send__timer .weui-desktop-dropdown-menu").locator(".weui-desktop-dropdown__list-ele");
|
|
4569
4535
|
await dropMenu.filter({
|
|
4570
|
-
hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" :
|
|
4536
|
+
hasText: dateD == nowD ? "今天" : dateD == nowD + 1 ? "明天" : TimeFormatter.format(params.settingInfo.timer, "M月d日")
|
|
4571
4537
|
}).click();
|
|
4572
4538
|
const timeDropMenu = page.locator(".mass-send__timer .weui-desktop-picker__time:visible");
|
|
4573
|
-
await timeDropMenu.locator(".weui-desktop-form__input").fill(
|
|
4539
|
+
await timeDropMenu.locator(".weui-desktop-form__input").fill(TimeFormatter.format(params.settingInfo.timer, "hh:mm"));
|
|
4574
4540
|
await timeDropMenu.locator("i.weui-desktop-icon__time").click();
|
|
4575
4541
|
}
|
|
4576
4542
|
});
|
|
@@ -4648,15 +4614,15 @@ var __webpack_exports__ = {};
|
|
|
4648
4614
|
}
|
|
4649
4615
|
await page.waitForTimeout(3000);
|
|
4650
4616
|
await page.close();
|
|
4651
|
-
return (0,
|
|
4617
|
+
return (0, share_namespaceObject.success)(articleId);
|
|
4652
4618
|
};
|
|
4653
4619
|
const weixinPublish = async (task, _params)=>{
|
|
4654
|
-
const params = (
|
|
4620
|
+
const params = defaultParams(_params, {
|
|
4655
4621
|
masssend: true
|
|
4656
4622
|
});
|
|
4657
4623
|
if ("rpa" === params.actionType) return weixinPublish_rpa_rpaAction(task, params);
|
|
4658
4624
|
if ("mockApi" === params.actionType) return weixinPublish_mock_mockAction(task, params);
|
|
4659
|
-
return (
|
|
4625
|
+
return executeAction(weixinPublish_mock_mockAction, weixinPublish_rpa_rpaAction)(task, params);
|
|
4660
4626
|
};
|
|
4661
4627
|
const saveDraft = (http, params, data)=>{
|
|
4662
4628
|
const formData = new (external_form_data_default())();
|
|
@@ -4676,7 +4642,7 @@ var __webpack_exports__ = {};
|
|
|
4676
4642
|
};
|
|
4677
4643
|
const weixinmpPublish_mock_mockAction = async (task, params)=>{
|
|
4678
4644
|
const tmpCachePath = task.getTmpPath();
|
|
4679
|
-
const http = new
|
|
4645
|
+
const http = new Http({
|
|
4680
4646
|
headers: {
|
|
4681
4647
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
4682
4648
|
origin: "https://mp.weixin.qq.com",
|
|
@@ -4687,12 +4653,12 @@ var __webpack_exports__ = {};
|
|
|
4687
4653
|
const cropResult = {};
|
|
4688
4654
|
if (params.banners && params.banners.length > 0) {
|
|
4689
4655
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
4690
|
-
const fileName = (0,
|
|
4691
|
-
return (0,
|
|
4656
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4657
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4692
4658
|
}));
|
|
4693
4659
|
for(let index = 0; index < images.length; index++){
|
|
4694
4660
|
const image = images[index];
|
|
4695
|
-
const fileState = (
|
|
4661
|
+
const fileState = getFileState(image);
|
|
4696
4662
|
const formData = new (external_form_data_default())();
|
|
4697
4663
|
formData.append("id", `WU_FILE_${index + 1}`);
|
|
4698
4664
|
formData.append("name", fileState.name);
|
|
@@ -4747,7 +4713,7 @@ var __webpack_exports__ = {};
|
|
|
4747
4713
|
];
|
|
4748
4714
|
cropFormData.append("size_count", cropRatios.length);
|
|
4749
4715
|
const cropCoordinates = cropRatios.map((r, idx)=>{
|
|
4750
|
-
const cropCoordinate = (
|
|
4716
|
+
const cropCoordinate = calculateCropCoordinates(colorResponseData.width, colorResponseData.height, r);
|
|
4751
4717
|
cropFormData.append(`size${idx}_x1`, cropCoordinate.x1);
|
|
4752
4718
|
cropFormData.append(`size${idx}_y1`, cropCoordinate.y1);
|
|
4753
4719
|
cropFormData.append(`size${idx}_x2`, cropCoordinate.x2);
|
|
@@ -4800,7 +4766,7 @@ var __webpack_exports__ = {};
|
|
|
4800
4766
|
content0: params.content,
|
|
4801
4767
|
share_imageinfo0: JSON.stringify(shareImageInfos)
|
|
4802
4768
|
});
|
|
4803
|
-
return (0,
|
|
4769
|
+
return (0, share_namespaceObject.success)(res);
|
|
4804
4770
|
};
|
|
4805
4771
|
const sourceText = {
|
|
4806
4772
|
ai: "内容由AI生成",
|
|
@@ -4837,8 +4803,8 @@ var __webpack_exports__ = {};
|
|
|
4837
4803
|
const container = page.locator("#editor_pannel");
|
|
4838
4804
|
if (params.banners && params.banners.length > 0) {
|
|
4839
4805
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
4840
|
-
const fileName = (0,
|
|
4841
|
-
return (0,
|
|
4806
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4807
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4842
4808
|
}));
|
|
4843
4809
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
4844
4810
|
await container.locator(".image-selector__add").hover();
|
|
@@ -4863,12 +4829,12 @@ var __webpack_exports__ = {};
|
|
|
4863
4829
|
if (params.banners && params.banners.length > 0) await page.waitForSelector("#editor_pannel .image-selector .image-selector__preview");
|
|
4864
4830
|
if (params.draft) await container.locator("#bottom_main #js_submit button").click();
|
|
4865
4831
|
else await container.locator("#bottom_main #js_send button").click();
|
|
4866
|
-
return (0,
|
|
4832
|
+
return (0, share_namespaceObject.success)("");
|
|
4867
4833
|
};
|
|
4868
4834
|
const weixinmpPublish = async (task, params)=>{
|
|
4869
4835
|
if ("rpa" === params.actionType) return weixinmpPublish_rpa_rpaAction(task, params);
|
|
4870
4836
|
if ("mockApi" === params.actionType) return weixinmpPublish_mock_mockAction(task, params);
|
|
4871
|
-
return (
|
|
4837
|
+
return executeAction(weixinmpPublish_mock_mockAction, weixinmpPublish_rpa_rpaAction)(task, params);
|
|
4872
4838
|
};
|
|
4873
4839
|
const xiaohongshuPublish_mock_errnoMap = {
|
|
4874
4840
|
915: "所属C端账号手机号被修改,请重新登录",
|
|
@@ -4885,7 +4851,7 @@ var __webpack_exports__ = {};
|
|
|
4885
4851
|
message: "账号数据异常,请重新绑定账号后重试。",
|
|
4886
4852
|
data: ""
|
|
4887
4853
|
};
|
|
4888
|
-
const http = new
|
|
4854
|
+
const http = new Http({
|
|
4889
4855
|
headers: {
|
|
4890
4856
|
cookie: params.cookies.map((it)=>`${it.name}=${it.value}`).join(";"),
|
|
4891
4857
|
origin: "https://creator.xiaohongshu.com",
|
|
@@ -4925,8 +4891,8 @@ var __webpack_exports__ = {};
|
|
|
4925
4891
|
data: ""
|
|
4926
4892
|
};
|
|
4927
4893
|
const uploadFile = async (url, index)=>{
|
|
4928
|
-
const fileName = (0,
|
|
4929
|
-
const localUrl = await (0,
|
|
4894
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
4895
|
+
const localUrl = await (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
4930
4896
|
const ossFileId = coverIds[index];
|
|
4931
4897
|
const fileBuffer = external_node_fs_default().readFileSync(localUrl);
|
|
4932
4898
|
await http.api({
|
|
@@ -5063,7 +5029,7 @@ var __webpack_exports__ = {};
|
|
|
5063
5029
|
},
|
|
5064
5030
|
defaultErrorMsg: "文章发布异常,请稍后重试。"
|
|
5065
5031
|
});
|
|
5066
|
-
return (0,
|
|
5032
|
+
return (0, share_namespaceObject.success)(publishResult.data?.id);
|
|
5067
5033
|
};
|
|
5068
5034
|
const rpa_xsEncrypt = new XsEncrypt();
|
|
5069
5035
|
const xiaohongshuPublish_rpa_rpaAction = async (task, params)=>{
|
|
@@ -5174,8 +5140,8 @@ var __webpack_exports__ = {};
|
|
|
5174
5140
|
hasText: /^上传图文$/
|
|
5175
5141
|
}).click();
|
|
5176
5142
|
const images = await Promise.all(params.banners.map((url)=>{
|
|
5177
|
-
const fileName = (0,
|
|
5178
|
-
return (0,
|
|
5143
|
+
const fileName = (0, share_namespaceObject.getFilenameFromUrl)(url);
|
|
5144
|
+
return (0, share_namespaceObject.downloadImage)(url, external_node_path_default().join(tmpCachePath, fileName));
|
|
5179
5145
|
}));
|
|
5180
5146
|
const fileChooserPromise = page.waitForEvent("filechooser");
|
|
5181
5147
|
await page.getByRole("textbox").click();
|
|
@@ -5273,14 +5239,14 @@ var __webpack_exports__ = {};
|
|
|
5273
5239
|
page.locator(".submit .publishBtn").click();
|
|
5274
5240
|
});
|
|
5275
5241
|
await page.close();
|
|
5276
|
-
return (0,
|
|
5242
|
+
return (0, share_namespaceObject.success)(response);
|
|
5277
5243
|
};
|
|
5278
5244
|
const xiaohongshuPublish = async (task, params)=>{
|
|
5279
5245
|
if ("rpa" === params.actionType) return xiaohongshuPublish_rpa_rpaAction(task, params);
|
|
5280
5246
|
if ("mockApi" === params.actionType) return xiaohongshuPublish_mock_mockAction(task, params);
|
|
5281
|
-
return (
|
|
5247
|
+
return executeAction(xiaohongshuPublish_mock_mockAction, xiaohongshuPublish_rpa_rpaAction)(task, params);
|
|
5282
5248
|
};
|
|
5283
|
-
var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.
|
|
5249
|
+
var package_namespaceObject = JSON.parse('{"i8":"1.2.14-beta.3"}');
|
|
5284
5250
|
class Action {
|
|
5285
5251
|
constructor(task){
|
|
5286
5252
|
this.task = task;
|
|
@@ -5292,11 +5258,11 @@ var __webpack_exports__ = {};
|
|
|
5292
5258
|
try {
|
|
5293
5259
|
responseData = await func(this.task, params);
|
|
5294
5260
|
} catch (error) {
|
|
5295
|
-
responseData =
|
|
5261
|
+
responseData = Http.handleApiError(error);
|
|
5296
5262
|
}
|
|
5297
5263
|
if (200 === responseData.code) this.task.logger.info(`${func.name} action params error`, responseData);
|
|
5298
5264
|
else if (0 !== responseData.code) {
|
|
5299
|
-
this.task.logger.error(responseData.message || `${func.name} 执行失败`, (
|
|
5265
|
+
this.task.logger.error(responseData.message || `${func.name} 执行失败`, stringifyError(responseData.data), responseData.extra);
|
|
5300
5266
|
this.task.logger.info(`${func.name} action failed`);
|
|
5301
5267
|
} else this.task.logger.info(`${func.name} action success`);
|
|
5302
5268
|
return responseData;
|