@iflyrpa/actions 1.2.20 → 1.2.21
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/bundle.js +3 -1
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["webpack://@iflyrpa/actions/./src/utils/XhsXsCommonEnc.js","webpack://@iflyrpa/actions/./src/utils/ttABEncrypt.js","webpack://@iflyrpa/actions/./src/utils/http.ts","webpack://@iflyrpa/actions/./src/utils/index.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiahaoActivity/index.ts","webpack://@iflyrpa/actions/./src/actions/getToutiaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiaohaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoLocation/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoUserID/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuLocation/index.ts","webpack://@iflyrpa/actions/./src/utils/xhsXsEncrypt.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/common/FansTool/index.ts","webpack://@iflyrpa/actions/./src/actions/common/sessionCheck/index.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getBjhInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getTTInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getWxInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getXhsInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleTTData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleWXData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleBjhData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleXhsData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/getWeixinConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/utils.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/index.ts","webpack://@iflyrpa/actions/./src/index.ts"],"sourcesContent":["\nvar encrypt_lookup = [\n \"Z\",\n \"m\",\n \"s\",\n \"e\",\n \"r\",\n \"b\",\n \"B\",\n \"o\",\n \"H\",\n \"Q\",\n \"t\",\n \"N\",\n \"P\",\n \"+\",\n \"w\",\n \"O\",\n \"c\",\n \"z\",\n \"a\",\n \"/\",\n \"L\",\n \"p\",\n \"n\",\n \"g\",\n \"G\",\n \"8\",\n \"y\",\n \"J\",\n \"q\",\n \"4\",\n \"2\",\n \"K\",\n \"W\",\n \"Y\",\n \"j\",\n \"0\",\n \"D\",\n \"S\",\n \"f\",\n \"d\",\n \"i\",\n \"k\",\n \"x\",\n \"3\",\n \"V\",\n \"T\",\n \"1\",\n \"6\",\n \"I\",\n \"l\",\n \"U\",\n \"A\",\n \"F\",\n \"M\",\n \"9\",\n \"7\",\n \"h\",\n \"E\",\n \"C\",\n \"v\",\n \"u\",\n \"R\",\n \"X\",\n \"5\"\n];\n\nlet esm_typeof = {}\nesm_typeof.A = function (t) {\n return typeof t\n}\n\nfunction encrypt_b64Encode(t) {\n var e = 664\n , r = 634\n , n = 448\n , o = 599\n , i = 315\n , a = 416\n , u = 512\n , s = 361\n , c = 406\n , l = 487\n , f = 496\n , p = 333\n , h = 630\n , d = 639\n , v = 548\n , g = 582\n , m = 447\n , y = 468\n , w = 375\n , b = 331\n , _ = 149\n , E = 382\n , x = 265\n , k = 625\n , T = 570\n , S = 551\n , A = 582\n , L = 581\n , I = 638\n , R = 618\n , O = 606\n , C = 429\n , N = 651\n , P = 667\n , B = 817\n , M = 333\n , j = 567\n , F = 747\n , D = 561\n , q = 570\n , U = 676\n , G = 840\n , H = 240\n , V = {\n udFrB: function (t, e) {\n return t % e\n },\n cCZFe: function (t, e) {\n return t === e\n },\n jevwl: function (t, e) {\n return t - e\n },\n aqlTy: function (t, e) {\n return t + e\n },\n rceYY: function (t, e) {\n return t >> e\n },\n OwjMq: function (t, e) {\n return t & e\n },\n kSGXO: function (t, e) {\n return t << e\n },\n veNiI: function (t, e) {\n return t === e\n },\n QLthP: function (t, e) {\n return t + e\n },\n wDtJz: function (t, e) {\n return t + e\n },\n nYqUQ: function (t, e) {\n return t & e\n },\n TCArD: function (t, e) {\n return t << e\n },\n RHteb: function (t, e) {\n return t - e\n },\n mZPJZ: function (t, e) {\n return t < e\n },\n zDETq: function (t, e, r, n) {\n return t(e, r, n)\n },\n YlZGp: function (t, e) {\n return t > e\n }\n };\n function W(t, e) {\n return a0_0x10f4ac(e, t - -H)\n }\n for (var X = (W(-413, -442) + W(-e, -r) + \"7\")[W(-n, -o)](\"|\"), z = 0; ;) {\n switch (X[z++]) {\n case \"0\":\n var Y;\n continue;\n case \"1\":\n var K = [];\n continue;\n case \"2\":\n var J = V[W(-i, -a)]($, 3);\n continue;\n case \"3\":\n var $ = t[W(-350, -u)];\n continue;\n case \"4\":\n V[W(-s, -c)](J, 1) ? (Y = t[V[W(-l, -f)]($, 1)],\n K[W(-p, -346)](V[W(-h, -d)](encrypt_lookup[V[W(-503, -v)](Y, 2)] + encrypt_lookup[V[W(-g, -741)](V[W(-331, -m)](Y, 4), 63)], \"==\"))) : V[W(-y, -w)](J, 2) && (Y = V[W(-b, -_)](t[$ - 2], 8) + t[V[W(-l, -E)]($, 1)],\n K[W(-333, -x)](V[W(-k, -505)](V[W(-T, -S)](encrypt_lookup[Y >> 10], encrypt_lookup[V[W(-A, -L)](Y >> 4, 63)]) + encrypt_lookup[V[W(-I, -R)](V[W(-O, -C)](Y, 2), 63)], \"=\")));\n continue;\n case \"5\":\n var Q = 16383;\n continue;\n case \"6\":\n for (var Z = 0, tt = V[W(-509, -N)]($, J); V[W(-P, -B)](Z, tt); Z += Q)\n K[W(-M, -153)](V[W(-j, -F)](encrypt_encodeChunk, t, Z, V[W(-D, -413)](Z + Q, tt) ? tt : V[W(-q, -501)](Z, Q)));\n continue;\n case \"7\":\n return K[W(-U, -G)](\"\")\n }\n break\n }\n}\n\nfunction encrypt_encodeUtf8(t) {\n var e = 185\n , r = 410\n , n = 480\n , o = 222\n , i = 194\n , a = 165\n , u = 147\n , s = 290\n , c = 460\n , l = 472\n , f = 497\n , p = 462\n , h = 286\n , d = 209\n , v = 223\n , g = 590\n , m = {\n bIGxm: function (t, e) {\n return t(e)\n },\n MahgM: function (t, e) {\n return t < e\n },\n czxKn: function (t, e) {\n return t === e\n },\n clYIu: function (t, e) {\n return t + e\n }\n }\n , y = m[b(477, 488)](encodeURIComponent, t)\n , w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - g)\n }\n for (var _ = 0; m[b(333, e)](_, y[b(r, n)]); _++) {\n var E = y[b(o, 290)](_);\n if (m[b(i, a)](E, \"%\")) {\n var x = y[b(u, s)](m[b(574, 472)](_, 1)) + y[b(c, 290)](m[b(605, l)](_, 2))\n , k = parseInt(x, 16);\n w[b(592, f)](k),\n _ += 2\n } else\n w[b(p, f)](E[b(217, h) + b(d, v)](0))\n }\n return w\n}\n\nfunction sign_common(h) {\n return encrypt_b64Encode(encrypt_encodeUtf8(JSON.stringify(h)))\n}\nfunction encrypt_tripletToBase64(t) {\n var e = 11\n , r = 15\n , n = 199\n , o = 34\n , i = 4\n , a = 102\n , u = 276\n , s = 205\n , c = 218\n , l = 11\n , f = 115\n , p = 34\n , h = 161\n , d = 123\n , v = 335\n , g = {};\n function m(t, e) {\n return a0_0x10f4ac(e, t - v)\n }\n g[m(205, 328)] = function (t, e) {\n return t + e\n }\n ,\n g[m(e, 53)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(r, n)] = function (t, e) {\n return t & e\n }\n ,\n g[m(o, i)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(-a, -u)] = function (t, e) {\n return t & e\n }\n ;\n var y = g;\n return y[m(s, c)](encrypt_lookup[63 & y[m(l, -75)](t, 18)], encrypt_lookup[y[m(r, f)](y[m(p, h)](t, 12), 63)]) + encrypt_lookup[t >> 6 & 63] + encrypt_lookup[y[m(-a, -d)](t, 63)]\n}\nfunction encrypt_encodeChunk(t, e, r) {\n var n, o = 165, i = 246, a = 205, u = 353, s = 162, c = 17, l = 351, f = 191, p = 139, h = 79, d = 86, v = 233, g = 270, m = 166, y = {\n hwomB: function (t, e) {\n return t < e\n },\n iHUeL: function (t, e) {\n return t & e\n },\n ELxEv: function (t, e) {\n return t << e\n },\n lBuRH: function (t, e) {\n return t << e\n },\n SkIJl: function (t, e) {\n return t & e\n },\n JYxWY: function (t, e) {\n return t + e\n },\n CxjtF: function (t, e) {\n return t(e)\n }\n }, w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - m)\n }\n for (var _ = e; y[b(-63, -o)](_, r); _ += 3)\n n = y[b(-i, -a)](y[b(-166, -124)](t[_], 16), 16711680) + y[b(-u, -205)](y[b(s, -c)](t[_ + 1], 8), 65280) + y[b(-l, -208)](t[y[b(-350, -f)](_, 2)], 255),\n w[b(p, 73)](y[b(h, d)](encrypt_tripletToBase64, n));\n return w[b(-v, -g)](\"\")\n}\n\nfunction a0_0x3693(t, e) {\n var r = [\n \"xUKNL\",\n \"jUrZI\",\n \"rviFu\",\n \"join\",\n \"get\",\n \"LjDtD\",\n \"ZJHyP\",\n \"wOmGY\",\n \"enumera\",\n \"aONWR\",\n \"string\",\n \"kQpMi\",\n \"mZPJZ\",\n \"Ysiay\",\n \"czxKn\",\n \"|5|6|4|\",\n \"prototy\",\n \"jklmnop\",\n \"MuYbw\",\n \"diDwk\",\n \"TRFtx\",\n \"drDHI\",\n \"WLARA\",\n \"xyz0123\",\n \"asBytes\",\n \"|6|0|1|\",\n \"JOtEi\",\n \"Oialn\",\n \"OQrEi\",\n \"uPnXq\",\n \"VWXYZab\",\n \"cIbFa\",\n \"qYuta\",\n \"QDOZZ\",\n \"MahgM\",\n \"iRXZq\",\n \"22098XlFGYn\",\n \"mmLKn\",\n \"jMcIE\",\n \"stringi\",\n \"[object\",\n \"nYqUQ\",\n \"jSgjk\",\n \"ucyEo\",\n \"iewJI\",\n \"vgTwl\",\n \"DnNGR\",\n \"oBytes\",\n \"Xtwzk\",\n \"aqlTy\",\n \"JWnPK\",\n \"1|0|2|4\",\n \"qrstuvw\",\n \"_gg\",\n \"QLthP\",\n \"FJIWy\",\n \"yRnhISG\",\n \"pjUsr\",\n \"KAwuh\",\n \"Thhoa\",\n \"jarkJ\",\n \"WjRNN\",\n \"asStrin\",\n \"x3VT16I\",\n \"357835LaQWjW\",\n \"SkIJl\",\n \"size\",\n \"iyorr\",\n \"iHUeL\",\n \"tTanW\",\n \"tNusJ\",\n \"NiSrP\",\n \"eAt\",\n \"TCArD\",\n \"a2r1ZQo\",\n \"iamspam\",\n \"bOnfu\",\n \"UNSKg\",\n \"HIJKLMN\",\n \"ZfMKC\",\n \"bJhXU\",\n \"zwAAc\",\n \"JYxWY\",\n \"lUAFM97\",\n \"mwaRe\",\n \"EzYWD\",\n \"replace\",\n \"uOtUJ\",\n \"__esMod\",\n \"ViQWI\",\n \"aCMFL\",\n \"EAKSd\",\n \"ule\",\n \"pqnFP\",\n \"qYDsL\",\n \"270726pnaYfG\",\n \"glBZG\",\n \"OwjMq\",\n \"YGrjc\",\n \"ZhAcd\",\n \"JDqFL\",\n \"456789+\",\n \"kEjQs\",\n \"lWhbD\",\n \"OaLTI\",\n \"dXlgm\",\n \"cVte9UJ\",\n \"ctor\",\n \"hwomB\",\n \"wDtJz\",\n \"constru\",\n \"ABHuC\",\n \"zDETq\",\n \"SYNeA\",\n \"BGbij\",\n \"ionFq\",\n \"QzaNS\",\n \"7|3|5|4\",\n \"YlZGp\",\n \"Bjniw\",\n \"ZITuN\",\n \"KPTzH\",\n \"HrBeq\",\n \"xobsT\",\n \"kXJkC\",\n \"QSrEZ\",\n \"ENXtO\",\n \"FYbRJ\",\n \"wOcza/L\",\n \"_hh\",\n \"dVXMb\",\n \"ppkua\",\n \"WgamZ\",\n \"HuwCW\",\n \"362424fnLCuh\",\n \"charCod\",\n \"HhPqg\",\n \"ODunI\",\n \"eJzqq\",\n \"charAt\",\n \"JGAgI\",\n \"ZmserbB\",\n \"TURcG\",\n \"WyrqF\",\n \"iYJzH\",\n \"VIwfH\",\n \"tzzOB\",\n \"YgiCH\",\n \"byyMQ\",\n \"ELxEv\",\n \"0DSfdik\",\n \"HRihr\",\n \"_ii\",\n \"aDsrp\",\n \"ble\",\n \"jTGtW\",\n \"configu\",\n \"cXiYW\",\n \"56kSpAsC\",\n \"158KIldlA\",\n \"oHQtNP+\",\n \"BHavO\",\n \"PCIlh\",\n \"QatIf\",\n \"IKyqh\",\n \"Words\",\n \"Qwnrg\",\n \"44lQAgNu\",\n \"cdefghi\",\n \"nTwxD\",\n \"RHteb\",\n \"coqPr\",\n \"rJwmI\",\n \"aBoeK\",\n \"default\",\n \"exports\",\n \"rceYY\",\n \"isArray\",\n \"mdKKO\",\n \"kzxWE\",\n \"DeBtm\",\n \"tjjUn\",\n \"vJEcD\",\n \"LpfE8xz\",\n \"bin\",\n \"HKazo\",\n \"rable\",\n \"call\",\n \"wordsTo\",\n \"zBiyt\",\n \"GrsGL\",\n \"fqulF\",\n \"jevwl\",\n \"mxfLj\",\n \"xlUnt\",\n \"q42KWYj\",\n \"endian\",\n \"eEqDc\",\n \"oyGAZ\",\n \"bytesTo\",\n \"OzjuJ\",\n \"IfwWq\",\n \"ize\",\n \"6648810piiNEz\",\n \"lTHdy\",\n \"vDLZJ\",\n \"stringT\",\n \"A4NjFqY\",\n \"GkjTz\",\n \"eooJA\",\n \"substr\",\n \"veNiI\",\n \"LYfDp\",\n \"ljKsP\",\n \"jJYWG\",\n \"bcYAf\",\n \"srikB\",\n \"utf8\",\n \"qTbeY\",\n \"yqRzd\",\n \"|3|5\",\n \"bjbAy\",\n \" Array]\",\n \"rMbXP\",\n \"u5wPHsO\",\n \"test\",\n \"gMIMC\",\n \"Deyqv\",\n \" argume\",\n \"ABCDEFG\",\n \"undefin\",\n \"split\",\n \"QTlsj\",\n \"_isBuff\",\n \"OPQRSTU\",\n \"Illegal\",\n \"loSen\",\n \"navigat\",\n \"ObwNo\",\n \"qPbcq\",\n \"7182692QogvXX\",\n \"tvqSn\",\n \"DGptJ\",\n \"HhTfW\",\n \"avIYx\",\n \"defineP\",\n \"PFQbW\",\n \"CjFyM\",\n \"toStrin\",\n \"yMWXS\",\n \"yMyOy\",\n \"0XTdDgM\",\n \"eXkru\",\n \"_blocks\",\n \"indexOf\",\n \"mbBQr\",\n \"lBuRH\",\n \"HzGjH\",\n \"HNErV\",\n \"mEokX\",\n \"userAge\",\n \"UpmtD\",\n \"sgomx\",\n \"KDfKS\",\n \"OTbSq\",\n \"lxMGW\",\n \"0|3|2|1\",\n \"dfWyB\",\n \"lWzAd\",\n \"eyXTL\",\n \"5624qreyZK\",\n \"pow\",\n \"IJstz\",\n \"LMlMB\",\n \"INlwI\",\n \"lRulU\",\n \"TCgZh\",\n \"_digest\",\n \"UBhIl\",\n \"fLtZZ\",\n \"FYSKq\",\n \"2|8|0\",\n \"IoCeZ\",\n \" Object\",\n \"UuTvI\",\n \"lNKLD\",\n \"String\",\n \"Bytes\",\n \"rBVvW\",\n \"KblCWi+\",\n \"pRaIH\",\n \"roperty\",\n \"vTINI\",\n \"atLE\",\n \"functio\",\n \"Udqoy\",\n \"nt \",\n \"htSWx\",\n \"hEwRK\",\n \"encodin\",\n \"sCSVK\",\n \"VuAZF\",\n \"xeIIy\",\n \"RBjMb\",\n \"taTrq\",\n \"vDLFJ\",\n \"bPkya\",\n \"HzimH\",\n \"nCffO\",\n \"BWbtU\",\n \"2|8\",\n \"slice\",\n \"lxMGQ\",\n \"tTiwe\",\n \"JDhJB\",\n \"rCode\",\n \"gNDzY\",\n \"wJkyu\",\n \"cCZFe\",\n \"RNGSl\",\n \"floor\",\n \"clYIu\",\n \"vLiwz\",\n \"BiNSE\",\n \"MtYWB\",\n \"fromCha\",\n \"StNOc\",\n \"|7|5|3|\",\n \"9|1|4|6\",\n \"length\",\n \"UNYAE\",\n \"pngG8yJ\",\n \"hasOwnP\",\n \"pYeWu\",\n \"wTjkk\",\n \"Bvk6/7=\",\n \"KTmgk\",\n \"bIGxm\",\n \"readFlo\",\n \"LFZch\",\n \"_ff\",\n \"1|3|4|2\",\n \"binary\",\n \"LLdJZ\",\n \"ZofOU\",\n \"6399uFPxTQ\",\n \"push\",\n \"YntPT\",\n \"kSGXO\",\n \"random\",\n \"HfpCU\",\n \"hECvuRX\",\n \"getTime\",\n \"iwSyV\",\n \"alert\",\n \"LKMcb\",\n \"DJVdg\",\n \"Hex\",\n \"URzKO\",\n \"CxjtF\",\n \"ZVOCs\",\n \"isBuffe\",\n \"vGpbT\",\n \"rotl\",\n \"udFrB\",\n \"CnbsH\",\n \"crLST\"\n ]\n return r[t -= 131]\n}\nfunction a0_0x10f4ac(t, e) {\n return a0_0x3693(e - -570, t)\n}\n\nvar encrypt_mcr = function (t) {\n var e = 67\n , r = 15\n , n = 164\n , o = 126\n , i = 137\n , a = 39\n , u = 176\n , s = 72\n , c = 56\n , l = 21\n , f = 35\n , p = 34\n , h = 35\n , d = 18\n , v = 25\n , g = 185\n , m = 1149\n , y = 744\n , w = 1295\n , b = 1248\n , _ = 1310\n , E = 1096\n , x = 1166\n , k = 1095\n , T = 1196\n , S = 1180\n , A = 1039\n , L = 976\n , R = 1347\n , I = 1117\n , O = 1168\n , C = 1233\n , N = 1157\n , P = 1006\n , B = 1122\n , M = 1277\n , j = 1288\n , F = 1271\n , D = 986\n , q = 162\n , U = {};\n function H(t, e) {\n return a0_0x10f4ac(e, t - q)\n }\n U[H(-73, -66)] = function (t, e) {\n return t === e\n }\n ,\n U[H(e, 186)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-r, -n)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(r, -o)] = function (t, e) {\n return t & e\n }\n ,\n U[H(-i, -a)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-175, -u)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-59, s)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-c, -l)] = function (t, e) {\n return t >>> e\n }\n ,\n U[H(f, p)] = function (t, e) {\n return t >>> e\n }\n ;\n for (var G, V, W = U, z = 3988292384, X = 256, Y = []; X--; Y[X] = W[H(h, -66)](G, 0))\n for (V = 8,\n G = X; V--;)\n G = W[H(r, d)](G, 1) ? W[H(35, v)](G, 1) ^ z : W[H(h, g)](G, 1);\n return function (t) {\n function e(t, e) {\n return H(e - 1181, t)\n }\n if (W[e(m, 1108)]((0,\n esm_typeof.A)(t), e(y, 914))) {\n for (var r = 0, n = -1; W[e(w, b)](r, t[e(_, 1233)]); ++r)\n n = W[e(E, x)](Y[W[e(k, T)](n, 255) ^ t[e(S, A) + e(1022, L)](r)], n >>> 8);\n return W[e(R, 1166)](n, -1) ^ z\n }\n for (r = 0,\n n = -1; W[e(I, 1044)](r, t[e(O, C)]); ++r)\n n = W[e(N, P)](Y[W[e(1229, B)](W[e(M, T)](n, 255), t[r])], W[e(j, 1125)](n, 8));\n return W[e(F, B)](W[e(D, 1122)](n, -1), z)\n }\n}();\n\nfunction GenXSCommon(a1cookie, x_t, x_s) {\n let b1 = 'I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJeSnMDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnoeSfqYHqwl2qt5B0DoIvMzOZQqZVw7IxOeTqwr4qtiIkrOIi/skccxICLdI3Oe0utl2ADZsLveDSKsSPw5IEvsiutJOqw8BVwfPpdeTDWOIx4VIiu6ZPwbPut5IvlaLbgs3qtxIxes1VwHIkumIkIyejgsY/WTge7sjutKrZgedWI9gfKeYWZGI36eWPwyIEJefut0ocVAPBLLI3Aeiqt3cZ7sVom4IESyIhEqQd4AICY24F4gIiifpVwAICZVJo3sWWJs1qwiIvdef97e0ekKIi/e1piS8qwUIE7s1fds6WAeiVwqed5sdut3IxILbd6sdqtDbgKs0PwgIv8aI3z5rqwGBVtwzfTsKD7sdBdskut+Iioed/As1SiiIkKs0F6s3nVuIkge1Pt0IkVkwPwwNVtMI3/e1qtdIkKs1VwVIEesdutA+qwKsuw7IvrRIxDgJfIj2IJexVtVIhiKIi6eDVw/bz4zLadsYjmfIkWo4VtPmVw5IvAe3qtk+LJeTl5sTSEyIEJekdgs3PtsnPwqI35sSPt0Ih/sV04TIk0ejjNsfqw7Iv3sVut04B8qIkWyIvKsxFOekzNsdAKsYPtKIiMFI3MurVtKIvzjIh6s6lFut//sWqtaI3IYbuwl'\n let h = {\n \"s0\": 3,\n \"s1\": \"\",\n \"x0\": \"1\",\n \"x1\": \"3.6.8\",\n \"x2\": \"Mac OS\",\n \"x3\": \"xhs-pc-web\",\n \"x4\": \"4.20.1\",\n \"x5\": a1cookie, // a1 cookie\n \"x6\": x_t,\n \"x7\": x_s,\n \"x8\": b1,\n \"x9\": encrypt_mcr(x_t + x_s + b1),\n \"x10\": 1,\n }\n\n return sign_common(h)\n}\n\nmodule.exports = GenXSCommon\n\n\n// let a1 = '195b24e679dmxgripk2o89yld9kdnoklz0h04octb40000365251';\n// let x_t = 1754108104611;\n// const x_s = 'XYS_2UQhPsHCH0c1PjhFHjIj2erjwjQM89PjNsQhPjHCHDlkJdphHjIj2ePjwjQTJdPIP/ZlgAmGy0Yt4Lh3cFq34DE84F+ewBrM/9IUwebz8F+3J9Qi+SQD8dzN4e8EPeYS2eb7c0mTc9Yrc7z14nI3nLkQcDSenLkG4sR68FVM+nSF2e+NJ9zca0mkzrTj4DV3GMqMpoS3yeWEznbM+L40wn4Lpbb9zr+7/SW6PMYYzeQ1aFTI8gm8J/YL/FzTc0D6zgSyPjTy+0Ys+7c38g8NLSQD8AWjNsQh+sHCHfRjyfp04sQR'\n\n// console.log(GenXSCommon(a1, x_t, x_s));\n","const a0_0x45db08=a0_0x4b0d;function a0_0x4b0d(_0x2bd218,_0x316d6){const _0x165410=a0_0x1654();return a0_0x4b0d=function(_0x4b0d73,_0x5794db){_0x4b0d73=_0x4b0d73-0x84;let _0x1859e3=_0x165410[_0x4b0d73];return _0x1859e3;},a0_0x4b0d(_0x2bd218,_0x316d6);}(function(_0x1b2596,_0x16c0e0){const _0x1227f1=a0_0x4b0d,_0x46fb59=_0x1b2596();while(!![]){try{const _0x383dd4=parseInt(_0x1227f1(0x85))/0x1+-parseInt(_0x1227f1(0xb0))/0x2*(-parseInt(_0x1227f1(0x9b))/0x3)+parseInt(_0x1227f1(0xaa))/0x4+-parseInt(_0x1227f1(0xa0))/0x5*(parseInt(_0x1227f1(0x9d))/0x6)+parseInt(_0x1227f1(0x86))/0x7+-parseInt(_0x1227f1(0xab))/0x8*(parseInt(_0x1227f1(0x8d))/0x9)+parseInt(_0x1227f1(0x91))/0xa;if(_0x383dd4===_0x16c0e0)break;else _0x46fb59['push'](_0x46fb59['shift']());}catch(_0x4fc071){_0x46fb59['push'](_0x46fb59['shift']());}}}(a0_0x1654,0x807f8));const Random=Math['random'](),Ts=Date['now'](),Sm3DoneTs=Ts+0x30,xhrParaDoneTs=Ts+0x109,xhrReqDoneTs=Ts+0x10af0;function a0_0x1654(){const _0x46e031=['floor','dhzx','map','_compress','charCodeAt','min','invalid\\x20j\\x20for\\x20constant\\x20Tj','reset','662|856|1920|977|1920|977|1920|1080|Linux\\x20x86_64','6GqxJwW','error','1578UVUSyW','fromCharCode','replace','17445vhaSjq','isNaN','toString','push','length','write','reduce','charAt','reg','split','2475936ufrFMu','2137592VTpBSF','join','Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe','exports','fmUmtNjj1OfTrR716RULEyQaLPrOG1jpZz0/4Tyzr7/IbcOXs8PxVxHmrAIsIMm6IfTserj+JgCbPHUssUmedGKwCrIziubgSU0FT1MmqPOZXcPDGB3xUyq+vaM7HZyYgJtKyMR=','48064qVwnFy','concat','prototype','167524mhzzJE','5968354Oyyfma','chunk','string','forEach','size','slice','sort','9BjSPrC','sum','repeat','splice','239400JtRPVl'];a0_0x1654=function(){return _0x46e031;};return a0_0x1654();}class SM3Hasher{constructor(){const _0x468533=a0_0x4b0d;this[_0x468533(0xa8)]=new Array(0x8),this[_0x468533(0x87)]=[],this[_0x468533(0x8a)]=0x0,this[_0x468533(0x99)]();}[a0_0x45db08(0x99)](){const _0x11e792=a0_0x45db08;this[_0x11e792(0xa8)][0x0]=0x7380166f,this[_0x11e792(0xa8)][0x1]=0x4914b2b9,this['reg'][0x2]=0x172442d7,this[_0x11e792(0xa8)][0x3]=0xda8a0600,this['reg'][0x4]=0xa96f30bc,this[_0x11e792(0xa8)][0x5]=0x163138aa,this[_0x11e792(0xa8)][0x6]=0xe38dee4d,this[_0x11e792(0xa8)][0x7]=0xb0fb0e4e,this[_0x11e792(0x87)]=[],this[_0x11e792(0x8a)]=0x0;}[a0_0x45db08(0xa5)](_0x22d1ef){const _0x182388=a0_0x45db08;var _0x2ded18=_0x182388(0x88)==typeof _0x22d1ef?function(_0x5e491d){const _0x12d911=_0x182388;var _0x5795ab=encodeURIComponent(_0x5e491d)[_0x12d911(0x9f)](/%([0-9A-F]{2})/g,function(_0x22d98b,_0x5659da){const _0x357908=_0x12d911;return String[_0x357908(0x9e)]('0x'+_0x5659da);}),_0x5c0d1c=new Array(_0x5795ab['length']);return Array[_0x12d911(0x84)][_0x12d911(0x89)]['call'](_0x5795ab,function(_0x2e8583,_0x28f42f){const _0x4b2a85=_0x12d911;_0x5c0d1c[_0x28f42f]=_0x2e8583[_0x4b2a85(0x96)](0x0);}),_0x5c0d1c;}(_0x22d1ef):_0x22d1ef;this['size']+=_0x2ded18['length'];var _0xffe4ea=0x40-this[_0x182388(0x87)][_0x182388(0xa4)];if(_0x2ded18[_0x182388(0xa4)]<_0xffe4ea)this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18);else{for(this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18[_0x182388(0x8b)](0x0,_0xffe4ea));this[_0x182388(0x87)]['length']>=0x40;)this['_compress'](this[_0x182388(0x87)]),_0xffe4ea<_0x2ded18[_0x182388(0xa4)]?this['chunk']=_0x2ded18[_0x182388(0x8b)](_0xffe4ea,Math[_0x182388(0x97)](_0xffe4ea+0x40,_0x2ded18['length'])):this[_0x182388(0x87)]=[],_0xffe4ea+=0x40;}}[a0_0x45db08(0x8e)](_0x34ff8d,_0xecf9f6){const _0x3ddb20=a0_0x45db08;_0x34ff8d&&(this[_0x3ddb20(0x99)](),this[_0x3ddb20(0xa5)](_0x34ff8d)),this['_fill']();for(var _0x28ac8a=0x0;_0x28ac8a<this[_0x3ddb20(0x87)][_0x3ddb20(0xa4)];_0x28ac8a+=0x40)this[_0x3ddb20(0x95)](this[_0x3ddb20(0x87)]['slice'](_0x28ac8a,_0x28ac8a+0x40));var _0x117621,_0x335539,_0x450e58,_0x5b1ad8=null;if('hex'==_0xecf9f6){_0x5b1ad8='';for(_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++)_0x5b1ad8+=(_0x117621=this[_0x3ddb20(0xa8)][_0x28ac8a][_0x3ddb20(0xa2)](0x10),_0x335539=0x8,_0x450e58='0',_0x117621[_0x3ddb20(0xa4)]>=_0x335539?_0x117621:_0x450e58[_0x3ddb20(0x8f)](_0x335539-_0x117621[_0x3ddb20(0xa4)])+_0x117621);}else for(_0x5b1ad8=new Array(0x20),_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++){var _0x46ad66=this[_0x3ddb20(0xa8)][_0x28ac8a];_0x5b1ad8[0x4*_0x28ac8a+0x3]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x2]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x1]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a]=(0xff&_0x46ad66)>>>0x0;}return this[_0x3ddb20(0x99)](),_0x5b1ad8;}['_fill'](){const _0xa844a0=a0_0x45db08;var _0x15bc36=0x8*this[_0xa844a0(0x8a)],_0x4a32f3=this['chunk'][_0xa844a0(0xa3)](0x80)%0x40;for(0x40-_0x4a32f3<0x8&&(_0x4a32f3-=0x40);_0x4a32f3<0x38;_0x4a32f3++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](0x0);for(var _0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++){var _0xd7dcfe=Math[_0xa844a0(0x92)](_0x15bc36/0x100000000);this['chunk'][_0xa844a0(0xa3)](_0xd7dcfe>>>0x8*(0x3-_0x36cc0b)&0xff);}for(_0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](_0x15bc36>>>0x8*(0x3-_0x36cc0b)&0xff);}[a0_0x45db08(0x95)](_0x1e530c){const _0x3c50af=a0_0x45db08;function _0x3da582(_0x14b06e,_0x4ec82e){return(_0x14b06e<<(_0x4ec82e%=0x20)|_0x14b06e>>>0x20-_0x4ec82e)>>>0x0;}function _0x489962(_0x5dd43e){const _0x744660=a0_0x4b0d;return 0x0<=_0x5dd43e&&_0x5dd43e<0x10?0x79cc4519:0x10<=_0x5dd43e&&_0x5dd43e<0x40?0x7a879d8a:void console[_0x744660(0x9c)](_0x744660(0x98));}function _0x197f71(_0x5e22dd,_0xfc800b,_0x1300f1,_0xed8891){const _0x3414cb=a0_0x4b0d;return 0x0<=_0x5e22dd&&_0x5e22dd<0x10?(_0xfc800b^_0x1300f1^_0xed8891)>>>0x0:0x10<=_0x5e22dd&&_0x5e22dd<0x40?(_0xfc800b&_0x1300f1|_0xfc800b&_0xed8891|_0x1300f1&_0xed8891)>>>0x0:(console[_0x3414cb(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20FF'),0x0);}function _0x2f42fb(_0x326645,_0x2c63af,_0x558c0d,_0x4a902b){const _0x493bba=a0_0x4b0d;return 0x0<=_0x326645&&_0x326645<0x10?(_0x2c63af^_0x558c0d^_0x4a902b)>>>0x0:0x10<=_0x326645&&_0x326645<0x40?(_0x2c63af&_0x558c0d|~_0x2c63af&_0x4a902b)>>>0x0:(console[_0x493bba(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20GG'),0x0);}if(_0x1e530c[_0x3c50af(0xa4)]<0x40){console[_0x3c50af(0x9c)]('compress\\x20error:\\x20not\\x20enough\\x20data');return;}else{for(var _0x23a9bd=function(_0x7114f5){for(var _0x49cf1f=new Array(0x84),_0x698c70=0x0;_0x698c70<0x10;_0x698c70++)_0x49cf1f[_0x698c70]=_0x7114f5[0x4*_0x698c70]<<0x18,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x1]<<0x10,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x2]<<0x8,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x3],_0x49cf1f[_0x698c70]>>>=0x0;for(var _0xe5328=0x10;_0xe5328<0x44;_0xe5328++){var _0x2b58f2=_0x49cf1f[_0xe5328-0x10]^_0x49cf1f[_0xe5328-0x9]^_0x3da582(_0x49cf1f[_0xe5328-0x3],0xf);_0x2b58f2=_0x2b58f2^_0x3da582(_0x2b58f2,0xf)^_0x3da582(_0x2b58f2,0x17),_0x49cf1f[_0xe5328]=(_0x2b58f2^_0x3da582(_0x49cf1f[_0xe5328-0xd],0x7)^_0x49cf1f[_0xe5328-0x6])>>>0x0;}for(_0xe5328=0x0;_0xe5328<0x40;_0xe5328++)_0x49cf1f[_0xe5328+0x44]=(_0x49cf1f[_0xe5328]^_0x49cf1f[_0xe5328+0x4])>>>0x0;return _0x49cf1f;}(_0x1e530c),_0x17c086=this[_0x3c50af(0xa8)][_0x3c50af(0x8b)](0x0),_0x3621a2=0x0;_0x3621a2<0x40;_0x3621a2++){var _0x5959b9=_0x3da582(_0x17c086[0x0],0xc)+_0x17c086[0x4]+_0x3da582(_0x489962(_0x3621a2),_0x3621a2),_0x3b42ff=((_0x5959b9=_0x3da582(_0x5959b9=(0xffffffff&_0x5959b9)>>>0x0,0x7))^_0x3da582(_0x17c086[0x0],0xc))>>>0x0,_0x50d411=_0x197f71(_0x3621a2,_0x17c086[0x0],_0x17c086[0x1],_0x17c086[0x2]);_0x50d411=(0xffffffff&(_0x50d411=_0x50d411+_0x17c086[0x3]+_0x3b42ff+_0x23a9bd[_0x3621a2+0x44]))>>>0x0;var _0x910e21=_0x2f42fb(_0x3621a2,_0x17c086[0x4],_0x17c086[0x5],_0x17c086[0x6]);_0x910e21=(0xffffffff&(_0x910e21=_0x910e21+_0x17c086[0x7]+_0x5959b9+_0x23a9bd[_0x3621a2]))>>>0x0,_0x17c086[0x3]=_0x17c086[0x2],_0x17c086[0x2]=_0x3da582(_0x17c086[0x1],0x9),_0x17c086[0x1]=_0x17c086[0x0],_0x17c086[0x0]=_0x50d411,_0x17c086[0x7]=_0x17c086[0x6],_0x17c086[0x6]=_0x3da582(_0x17c086[0x5],0x13),_0x17c086[0x5]=_0x17c086[0x4],_0x17c086[0x4]=(_0x910e21^_0x3da582(_0x910e21,0x9)^_0x3da582(_0x910e21,0x11))>>>0x0;}for(var _0x459622=0x0;_0x459622<0x8;_0x459622++)this['reg'][_0x459622]=(this[_0x3c50af(0xa8)][_0x459622]^_0x17c086[_0x459622])>>>0x0;}}}function EnvData2CharCode(_0x58cd97,_0x23e1e0,_0x3ca6b2){const _0x56cb93=a0_0x45db08;let _0x2d49d4=Random*0xf0>>0x0>0x6d?(Random*0xf0>>0x0)+0x2:Random*0xf0>>0x0,_0x3f2013=Random*0xff>>0x0&0x4d|0x2|0x10|0x20|0x80,_0x4b8ded=[Random*0xffff&0xff&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0x55,Random*0xffff&0xff&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0xaa,Random*0xffff>>0x8&0xaa|[0x1,0x0,0x1,0xf]['slice'](0x0,0x2)[0x1]&0x55,Random*0xffff>>0x8&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x1]&0xaa,_0x2d49d4&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0x55,_0x2d49d4&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0xaa,_0x3f2013&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0x55,_0x3f2013&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0xaa],_0x5bb315=_0x56cb93(0x9a)['split']('')[_0x56cb93(0x94)](_0x42b4c4=>_0x42b4c4[_0x56cb93(0x96)](0x0)),_0x1cdc95=((String(xhrParaDoneTs+0x3)&0xff)+',')[_0x56cb93(0xa9)]('')[_0x56cb93(0x94)](_0x58aa5d=>_0x58aa5d[_0x56cb93(0x96)](0x0));const _0x26ee7a=new SM3Hasher(),_0xe2d586=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a['sum'](_0x58cd97+_0x56cb93(0x93))),_0x571095=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a[_0x56cb93(0x8e)](_0x23e1e0+'dhzx')),_0x4dabdb=_0x26ee7a[_0x56cb93(0x8e)](_0x3ca6b2);let _0x4139e6=[0x29,(xhrReqDoneTs-0x190e5788800)/0x3e8/0x3c/0x3c/0x18/0xe>>0x0,0x6,xhrParaDoneTs-Ts+0x3&0xff,xhrParaDoneTs&0xff,xhrParaDoneTs>>0x8&0xff,xhrParaDoneTs>>0x10&0xff,xhrParaDoneTs>>0x18&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff/0x100&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]>>0x8&0xff,[0xa,0x4,0x4,0x0,0x1][0x0],[0xa,0x4,0x4,0x0,0x1][0x1],[0xa,0x4,0x4,0x0,0x1][0x2],[0xa,0x4,0x4,0x0,0x1][0x3],0x8&0xff,0x8>>0x8&0xff,0x8>>0x10&0xff,0x8>>0x18&0xff,_0xe2d586[0x9],_0xe2d586[0x12],0x3,_0xe2d586[0x3],_0x571095[0xa],_0x571095[0x13],0x4,_0x571095[0x4],_0x4dabdb[0xb],_0x4dabdb[0x15],0x5,_0x4dabdb[0x5],Sm3DoneTs&0xff,Sm3DoneTs>>0x8&0xff,Sm3DoneTs>>0x10&0xff,Sm3DoneTs>>0x18&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100/0x100&0xff,0x3,0x6529&0xff,0x6529>>0x8&0xff,0x6529>>0x10&0xff,0x6529>>0x18&0xff,0x4cf&0xff,0x4cf>>0x8&0xff,0x4cf>>0x10&0xff,0x4cf>>0x18&0xff,_0x5bb315['length'],_0x5bb315['length'],0x0,_0x1cdc95[_0x56cb93(0xa4)],_0x1cdc95[_0x56cb93(0xa4)],0x0],_0x339170=[_0x4139e6[0x9],_0x4139e6[0x12],_0x4139e6[0x1e],_0x4139e6[0x23],_0x4139e6[0x2f],_0x4139e6[0x4],_0x4139e6[0x2c],_0x4139e6[0x13],_0x4139e6[0xa],_0x4139e6[0x17],_0x4139e6[0xc],_0x4139e6[0x28],_0x4139e6[0x19],_0x4139e6[0x2a],_0x4139e6[0x3],_0x4139e6[0x16],_0x4139e6[0x26],_0x4139e6[0x15],_0x4139e6[0x5],_0x4139e6[0x2d],_0x4139e6[0x1],_0x4139e6[0x1d],_0x4139e6[0x6],_0x4139e6[0x2b],_0x4139e6[0x21],_0x4139e6[0xe],_0x4139e6[0x24],_0x4139e6[0x25],_0x4139e6[0x2],_0x4139e6[0x2e],_0x4139e6[0xf],_0x4139e6[0x30],_0x4139e6[0x1f],_0x4139e6[0x1a],_0x4139e6[0x10],_0x4139e6[0xd],_0x4139e6[0x8],_0x4139e6[0x29],_0x4139e6[0x1b],_0x4139e6[0x11],_0x4139e6[0x27],_0x4139e6[0x14],_0x4139e6[0xb],_0x4139e6[0x0],_0x4139e6[0x22],_0x4139e6[0x7],_0x4139e6[0x32],_0x4139e6[0x33],_0x4139e6[0x35],_0x4139e6[0x36]];function _0x56e1cd(_0x24b6d5,_0x196cf7){const _0x2eb1f3=_0x56cb93;return _0x196cf7[_0x2eb1f3(0x8c)]((_0x2171ba,_0x925e58)=>_0x925e58-_0x2171ba)[_0x2eb1f3(0x89)](_0x540dbd=>{const _0x2fbb10=_0x2eb1f3;_0x540dbd>=0x0&&_0x540dbd<_0x24b6d5[_0x2fbb10(0xa4)]&&_0x24b6d5[_0x2fbb10(0x90)](_0x540dbd,0x1);}),_0x24b6d5;}let _0x41ebdd=_0x4b8ded[_0x56cb93(0xb1)](_0x56e1cd(_0x4139e6,[0x18,0x1c,0x20,0x31,0x34])),_0x42a240=_0x41ebdd[_0x56cb93(0xa6)]((_0x49ec53,_0x3d9ba0)=>_0x49ec53^_0x3d9ba0),_0xeaa831=_0x339170['concat'](_0x5bb315,_0x1cdc95,_0x42a240),_0x477e24=[],_0x3bd924=0x0;for(let _0xa7bf19=0x0;_0xa7bf19+0x2<_0xeaa831[_0x56cb93(0xa4)];){_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x91|_0xeaa831[_0xa7bf19++]&0x6e),_0x477e24['push'](Random*0x3e8&0xff&0x42|_0xeaa831[_0xa7bf19++]&0xbd),_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x2c|_0xeaa831[_0xa7bf19++]&0xd3),_0x477e24[_0x56cb93(0xa3)](_0xeaa831[_0xa7bf19-0x3]&0x91|_0xeaa831[_0xa7bf19-0x2]&0x42|_0xeaa831[_0xa7bf19-0x1]&0x2c),_0x3bd924+=0x3;}let _0x23c273=_0x4b8ded[_0x56cb93(0xb1)](_0x477e24,_0xeaa831[_0x56cb93(0x8b)](_0x3bd924,_0xeaa831[_0x56cb93(0xa4)]));return _0x23c273[_0x56cb93(0x94)](_0x4d13ab=>String['fromCharCode'](_0x4d13ab))[_0x56cb93(0xac)]('');}function Base2Data(_0x348aa6){const _0x2bc7c7=a0_0x45db08;let _0x874207=[Random*0xffff&0xff&0xaa|[0x3,0x52][0x0]&0x55,Random*0xffff&0xff&0x55|[0x3,0x52][0x0]&0xaa,Random*0x28>>0x0&0xaa|[0x3,0x52][0x1]&0x55,Random*0x28>>0x0&0x55|[0x3,0x52][0x1]&0xaa][_0x2bc7c7(0x94)](_0x224d00=>{const _0x31697c=_0x2bc7c7;return String[_0x31697c(0x9e)](_0x224d00);})[_0x2bc7c7(0xac)](''),_0x235e4f=[0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8,0xe7,0xe6,0xe5,0xe4,0xe3,0xe2,0xe1,0xe0,0xdf,0xde,0xdd,0xdc,0xdb,0xda,0xd9,0xd8,0xd7,0xd6,0xd5,0xd4,0xd3,0xd2,0xd1,0xd0,0xcf,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8,0xc7,0xc6,0xc5,0xc4,0xc3,0xc2,0xc1,0xc0,0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0,0xaf,0xae,0xad,0xac,0xab,0xaa,0xa9,0xa8,0xa7,0xa6,0xa5,0xa4,0xa3,0xa2,0xa1,0xa0,0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,0x8f,0x8e,0x8d,0x8c,0x8b,0x8a,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6f,0x6e,0x6d,0x6c,0x6b,0x6a,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,0x4f,0x4e,0x4d,0x4c,0x4b,0x4a,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x2f,0x2e,0x2d,0x2c,0x2b,0x2a,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0];const _0x29dde1='Ó'[_0x2bc7c7(0x96)](0x0);let _0x4a74f1=0x0;for(let _0xef36c2=0x0;_0xef36c2<_0x235e4f[_0x2bc7c7(0xa4)];_0xef36c2++){let _0x4120e4=_0x235e4f[_0xef36c2];_0x4a74f1=(_0x4a74f1*_0x4120e4+_0x4a74f1+_0x29dde1)%0x100,[_0x235e4f[_0xef36c2],_0x235e4f[_0x4a74f1]]=[_0x235e4f[_0x4a74f1],_0x235e4f[_0xef36c2]];}let _0x39cb62=0x0,_0x5cbaf6='';for(let _0x29a672=0x0;_0x29a672<_0x348aa6[_0x2bc7c7(0xa4)];_0x29a672++){let _0x96c5ae=_0x348aa6[_0x2bc7c7(0x96)](_0x29a672),_0x46c34b=_0x29a672+0x1,_0x5d4cb4=_0x235e4f[_0x46c34b];[_0x235e4f[_0x46c34b],_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100]]=[_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100],_0x235e4f[_0x46c34b]];let _0x506f4f=_0x235e4f[(_0x235e4f[_0x46c34b]+_0x5d4cb4)%0x100];_0x39cb62=(_0x39cb62+_0x5d4cb4)%0x100,_0x5cbaf6+=String['fromCharCode'](_0x96c5ae^_0x506f4f);}return _0x874207+_0x5cbaf6;}function Data2A_B(_0x19ca6d){const _0x5d8d72=a0_0x45db08;let _0x225e7d=_0x5d8d72(0xad),_0x4f0a28='',_0x251d62=[0x3e,0x12a,0x10,0x0,0x4,0x9,0x10,0x0,0x5,0x36,0x0,0x5,0x3e,0x12b,0x1a,0x12c,0x36,0x0,0x5,0x3e,0x12d,0x1a,0x12e,0x36,0x0,0x5,0x3e,0x12f,0x1a,0x130,0x36,0x0,0x5,0x3e,0x131,0x1a,0x10c,0x36,0x0,0x5,0x3e,0x132,0x1a,0x128,0x36,0x0,0x5,0x36,0x0,0x3,0x4c,0x10,0x0,0x6,0x3e,0x24,0x10,0x0,0x7,0x17,0x0,0x10,0x0,0x9,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x17,0x3,0x31,0x43,0xe,0x9f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x20,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f,0x32,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x12,-0xad,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x0,0x17,0x0,0x13,0xe,0xa0,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x2,0x16,0x4,0xf7,0x36,0x0,0x9,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x12,0x2,0x17,0x0,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x12,0x3,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x41];for(let _0x2b8eea=0x0;_0x2b8eea<_0x19ca6d['length'];_0x2b8eea+=0x3){const _0x3fca04=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea),_0xb85a46=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x1),_0x4e702d=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x2),_0x4382e1=_0x3fca04<<_0x251d62[0x5e]|_0xb85a46<<_0x251d62[0x70]|_0x4e702d,_0x225aa0=(_0x4382e1&_0x251d62[0x93])>>_0x251d62[0x96];_0x4f0a28+=_0x225e7d[_0x5d8d72(0xa7)](_0x225aa0);const _0x5607b9=(_0x4382e1&_0x251d62[0xad])>>_0x251d62[0xb0];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x3fca04)?_0x225e7d[_0x5d8d72(0xa7)](_0x5607b9):'=';const _0x3fb7b7=(_0x4382e1&_0x251d62[0xc7])>>_0x251d62[0xca];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0xb85a46)?_0x225e7d[_0x5d8d72(0xa7)](_0x3fb7b7):'=';const _0x425784=_0x4382e1&_0x251d62[0xe1];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x4e702d)?_0x225e7d[_0x5d8d72(0xa7)](_0x425784):'=';}return _0x4f0a28;}function GenAB(_0x315138,_0x1c32b3){const _0x206982=a0_0x45db08,_0x56536b=_0x206982(0xaf);return Data2A_B(Base2Data(EnvData2CharCode(_0x315138,_0x1c32b3,_0x56536b)));}module[a0_0x45db08(0xae)]=GenAB;","import type { ResponseData } from \"@iflyrpa/share\";\nimport axios, {\n\ttype AxiosError,\n\ttype AxiosInstance,\n\ttype AxiosResponse,\n\ttype CreateAxiosDefaults,\n\ttype AxiosRequestConfig,\n} from \"axios\";\n\nexport class Http {\n\tprivate apiClient: AxiosInstance;\n\n\tstatic handleApiError(error: unknown): ResponseData {\n\t\t// 如果错误已经是 ResponseData 格式,直接抛出\n\t\tif (error && typeof error === \"object\" && \"code\" in error && \"message\" in error) {\n\t\t\treturn error as ResponseData;\n\t\t}\n\n\t\t// 处理其他类型的错误\n\t\treturn {\n\t\t\tcode: 500,\n\t\t\tmessage: \"\",\n\t\t\tdata: error,\n\t\t};\n\t}\n\tconstructor(config?: CreateAxiosDefaults) {\n\t\tthis.apiClient = axios.create({\n\t\t\t...config,\n\t\t\t// proxy: {\n\t\t\t// \thost: \"192.168.137.1\", // 根据你的代理服务设置\n\t\t\t// \tport: 9000,\n\t\t\t// \tprotocol: \"http\" // 可选\n\t\t\t// },\n\t\t});\n\t}\n\n\t// 添加响应拦截器\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\tpublic addResponseInterceptor<T = any>(findError: (response: AxiosResponse<T>) => ResponseData | undefined) {\n\t\tthis.apiClient.interceptors.response.use(\n\t\t\t(response) => {\n\t\t\t\t// 检查响应中的 errno 字段\n\t\t\t\tconst error = findError(response);\n\n\t\t\t\tif (error) {\n\t\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\tObject.assign(error, {\n\t\t\t\t\t\t\textra: {\n\t\t\t\t\t\t\t\tmethod: response.config.method,\n\t\t\t\t\t\t\t\turl: response.config.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\t(error: AxiosError) => {\n\t\t\t\t// 创建标准错误响应格式\n\t\t\t\tconst errorResponse: ResponseData = {\n\t\t\t\t\tcode: error.response?.status || 500,\n\t\t\t\t\tmessage: error.message || \"\",\n\t\t\t\t\tdata: error.response?.data,\n\t\t\t\t\textra: {\n\t\t\t\t\t\tmethod: error.config?.method,\n\t\t\t\t\t\turl: error.config?.url,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\t// 如果服务端返回了详细错误信息,可以使用服务端的错误信息\n\t\t\t\tif (error.response?.data) {\n\t\t\t\t\tif (typeof error.response.data === \"object\") {\n\t\t\t\t\t\t// 如果服务端返回的是对象,可以尝试提取错误信息\n\t\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\t\t\t\tconst serverError = error.response.data as any;\n\t\t\t\t\t\tif (serverError.message) {\n\t\t\t\t\t\t\terrorResponse.message = serverError.message;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 可以保留原始错误数据\n\t\t\t\t\t\terrorResponse.data = serverError;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// 返回标准化的错误响应\n\t\t\t\treturn Promise.reject(errorResponse);\n\t\t\t},\n\t\t);\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\tpublic async api<T = any>(config: AxiosRequestConfig): Promise<T> {\n\t\ttry {\n\t\t\tconst response = await this.apiClient<T>(config);\n\t\t\treturn response.data;\n\t\t} catch (error) {\n\t\t\treturn Promise.reject(Http.handleApiError(error));\n\t\t}\n\t}\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CommonAction, Page, ResponseData } from \"@iflyrpa/share\";\nimport domSerializer from \"dom-serializer\";\nimport { type ChildNode, DomHandler, type Element } from \"domhandler\";\nimport { DomUtils, Parser } from \"htmlparser2\";\nimport mime from \"mime-types\";\n\nimport { Http } from \"./http\";\n\n/**\n * 生成两数之间的随机整数\n * @param min\n * @param max\n * @returns\n */\nexport function getRandomInRange(min: number, max: number) {\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport const getFileState = (filePath: string) => {\n\t// 获取文件名\n\tconst filename = path.basename(filePath);\n\t// 获取文件类型\n\tconst fileType = mime.lookup(filePath);\n\tconst stats = fs.statSync(filePath);\n\t// 获取文件大小\n\tconst fileSize = stats.size;\n\t// 获取最后修改时间\n\tconst lastModifiedDate = stats.mtime;\n\n\treturn {\n\t\tname: filename,\n\t\ttype: fileType,\n\t\tsize: fileSize,\n\t\tlastModifiedDate: lastModifiedDate.toString(),\n\t};\n};\n\nexport type AspectRatio = [number, number];\nexport type CropCoordinates = {\n\tx1: number;\n\ty1: number;\n\tx2: number;\n\ty2: number;\n};\n\n/**\n * 获取特定的比例切割图片,获取切割的坐标\n * @param width 图片长度\n * @param height 图片高度\n * @param aspectRatio 切割比例:[宽度,高度]\n * @returns\n */\nexport const calculateCropCoordinates = (width: number, height: number, aspectRatio: AspectRatio): CropCoordinates => {\n\tconst targetRatio = aspectRatio[0] / aspectRatio[1];\n\tlet cropWidth: number;\n\tlet cropHeight: number;\n\n\tif (width / height > targetRatio) {\n\t\t// 图片过宽,需要裁切宽度\n\t\tcropHeight = height;\n\t\tcropWidth = height * targetRatio;\n\t} else {\n\t\t// 图片过高,需要裁切高度\n\t\tcropWidth = width;\n\t\tcropHeight = width / targetRatio;\n\t}\n\n\tconst x1 = (width - cropWidth) / 2;\n\tconst y1 = (height - cropHeight) / 2;\n\tconst x2 = x1 + cropWidth;\n\tconst y2 = y1 + cropHeight;\n\n\t// 返回百分比坐标\n\treturn {\n\t\tx1: x1 / width,\n\t\ty1: y1 / height,\n\t\tx2: x2 / width,\n\t\ty2: y2 / height,\n\t};\n};\n\n// 提取 html 中的 img 标签\nexport const extractImgTag = (html: string) => {\n\tconst srcList: string[] = [];\n\n\tconst parser = new Parser({\n\t\tonopentag(name, attributes) {\n\t\t\tif (name === \"img\" && (attributes.src.trim() || attributes.currentSrc.trim())) {\n\t\t\t\tsrcList.push(attributes.src.trim() || attributes.currentSrc.trim());\n\t\t\t}\n\t\t},\n\t});\n\n\tparser.write(html);\n\tparser.end();\n\n\treturn srcList;\n};\n\n/**\n * 时间格式化\n * @param time\n * @param format 默认 yyyy-MM-dd HH:mm\n * @returns 时间字符串\n */\nexport class TimeFormatter {\n\tstatic format(timestamp: number, formatStr: String = 'yyyy-MM-dd hh:mm') {\n\t // 自动判断:如果是10位(秒),就转为毫秒\n\t if (typeof timestamp === 'number' && timestamp.toString().length === 10) {\n\t\ttimestamp *= 1000;\n\t }\n \n\t const date = new Date(timestamp);\n \n\t const map: Record<string, string> = {\n\t\t\"yyyy\": String(date.getFullYear()),\n\t\t\"yy\": String(date.getFullYear()).slice(-2),\n\t\t\"MM\": String(date.getMonth() + 1).padStart(2, '0'),\n\t\t\"dd\": String(date.getDate()).padStart(2, '0'),\n\t\t\"hh\": String(date.getHours()).padStart(2, '0'),\n\t\t\"mm\": String(date.getMinutes()).padStart(2, '0'),\n\t\t\"ss\": String(date.getSeconds()).padStart(2, '0'),\n\t\t\"M\": String(date.getMonth() + 1), // 月不带前导零\n \t\t\"d\": String(date.getDate()), // 日不带前导零\n\t\t\"h\": String(date.getHours()), // 不带前导零\n\t\t\"m\": String(date.getMinutes()), // 不带前导零\n\t\t\"s\": String(date.getSeconds()) // 不带前导零\n\t };\n \n\t return formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, key => map[key]);\n\t}\n }\nexport const replaceImgSrc = (html: string, callback: (dom: Element) => Element) => {\n\tlet lastedHtml = html;\n\n\tconst isImageTag = (node: ChildNode): node is Element => node.type === \"tag\" && node.name === \"img\";\n\n\tconst traverseDom = (node: ChildNode) => {\n\t\tif (DomUtils.hasChildren(node)) {\n\t\t\tfor (const child of node.children) {\n\t\t\t\tif (isImageTag(child)) {\n\t\t\t\t\tcallback(child);\n\t\t\t\t}\n\t\t\t\ttraverseDom(child);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handler = new DomHandler((error, dom) => {\n\t\tif (error) {\n\t\t\tconsole.log(error);\n\t\t} else {\n\t\t\t// 处理 DOM 节点的函数\n\t\t\tdom.forEach(traverseDom);\n\t\t}\n\n\t\tlastedHtml = domSerializer(dom, { decodeEntities: false });\n\t});\n\n\tconst parser = new Parser(handler, { decodeEntities: false });\n\tparser.write(html);\n\tparser.end();\n\n\treturn lastedHtml;\n};\n\nexport const stringifyError = (error: unknown) => {\n\tif (error instanceof Error) {\n\t\treturn error.toString();\n\t}\n\n\tif (typeof error === \"object\") {\n\t\treturn JSON.stringify(error);\n\t}\n\n\treturn error;\n};\n\n/**\n * 创建一个函数,该函数会依次执行传入的函数列表,直到有一个函数成功或所有函数都失败。\n *\n * @template P - 函数的参数类型,为一个任意长度的数组。\n * @template T - 函数的返回类型,为一个 Promise 的解析值类型。\n * @param {CommonAction<P, T>[]} actions - 一个函数列表,每个函数的类型为 `(...p: P) => Promise<T>`。\n * @returns {CommonAction<P, T>} - 返回一个新的函数,其类型与传入的函数列表中的函数类型相同。\n * 当调用该函数时,会依次执行 `actions` 中的函数,直到有一个函数成功(即返回一个解析的 Promise),\n * 或者所有函数都失败(即抛出异常)。如果所有函数都失败,则抛出最后一个错误。\n *\n * @example\n * const action1 = async (num) => {\n * if (num > 0) return \"Action 1 succeeded\";\n * throw new Error(\"Action 1 failed\");\n * };\n *\n * const action2 = async (num) => {\n * if (num > 1) return \"Action 2 succeeded\";\n * throw new Error(\"Action 2 failed\");\n * };\n *\n * const combinedAction = executeAction(action1, action2);\n *\n * (async () => {\n * try {\n * const result = await combinedAction(1);\n * console.log(result); // 输出: \"Action 2 succeeded\"\n * } catch (error) {\n * console.error(error.message);\n * }\n * })();\n */\nexport const executeAction = <P, T>(...actions: CommonAction<P, T>[]): CommonAction<P, T> => {\n\treturn async (task, params) => {\n\t\tlet result: ResponseData<T> = {\n\t\t\tcode: 500,\n\t\t\tmessage: \"\",\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\tdata: null as any,\n\t\t};\n\n\t\tfor (let index = 0; index < actions.length; index++) {\n\t\t\tconst action = actions[index];\n\n\t\t\ttry {\n\t\t\t\tresult = await action(task, params);\n\t\t\t} catch (error) {\n\t\t\t\tresult = Http.handleApiError(error);\n\t\t\t}\n\n\t\t\t// code === 0 表示成功, code === 200 虽然表示失败,但是不需要继续执行后续的 action\n\t\t\tif (result.code === 0 || result.code === 200) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// 不是最后一个 action,上报错误信息\n\t\t\tif (index !== actions.length - 1) {\n\t\t\t\ttask.logger.error(result.message, stringifyError(result.data), result.extra);\n\t\t\t}\n\t\t}\n\n\t\t// 所有 action 都执行完毕但都失败了,返回最后一个失败结果\n\t\treturn result;\n\t};\n};\n\n/**\n * 将 HTML 内容复制到剪贴板\n * @param page - 页面对象\n * @param html - HTML 内容\n * @param options - 选项,包括格式和回退\n * @returns 无返回值\n */\nexport async function copyHtmlToClipboard(page: Page, html: string, options = { format: \"text/html\", fallback: true }) {\n\ttry {\n\t\t// 尝试使用原生 API\n\t\tawait page.evaluate(\n\t\t\tasync ({ htmlContent, format }) => {\n\t\t\t\tconst blob = new Blob([htmlContent], { type: format });\n\t\t\t\tawait navigator.clipboard.write([new ClipboardItem({ [format]: blob })]);\n\t\t\t},\n\t\t\t{ htmlContent: html, format: options.format },\n\t\t);\n\t} catch (error) {\n\t\tif (options.fallback) {\n\t\t\t// 回退到 DOM 操作\n\t\t\tawait page.evaluate((htmlContent) => {\n\t\t\t\tconst div = document.createElement(\"div\");\n\t\t\t\tdiv.contentEditable = \"true\";\n\t\t\t\tdiv.style.cssText = `\n position: fixed;\n left: -9999px;\n opacity: 0;\n pointer-events: none;\n `;\n\n\t\t\t\tdiv.innerHTML = htmlContent;\n\t\t\t\tdocument.body.appendChild(div);\n\n\t\t\t\tconst range = document.createRange();\n\t\t\t\trange.selectNodeContents(div);\n\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <忽略错误>\n\t\t\t\tconst selection = window.getSelection()!;\n\t\t\t\tselection.removeAllRanges();\n\t\t\t\tselection.addRange(range);\n\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\tdocument.body.removeChild(div);\n\t\t\t\tselection.removeAllRanges();\n\t\t\t}, html);\n\t\t}\n\t}\n}\n\n/**\n * 通用弹窗监听处理器\n * @param page - Playwright 页面对象\n * @param popupSelector - 弹窗的选择器(字符串或 Locator)\n * @param popKey - 弹窗中的唯一键(字符串)\n * @param buttonSelector - 弹窗中需要点击的按钮选择器\n * @param options - 可选配置项\n */\nexport function PopupListener(\n\tpage: Page, \n\tpopupSelector: string, \n\tpopKey: string, \n\tbuttonSelector: string, \n\toptions:{\n\t\tcheckInterval?: number;\n\t\tstopAfterClick?: boolean;\n\t} = {}) {\n\tconst {\n\t\tcheckInterval = 1000,\n\t\tstopAfterClick = false\n\t} = options;\n\n\tconst popup = page.locator(popupSelector);\n\tconst button = page.locator(buttonSelector);\n\n\tconst intervalId = setInterval(async () => {\n\t\ttry {\n\t\t\tif (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent()||\"\").includes(popKey)) {\n\t\t\t\tawait button.click({ force: true });\n\n\t\t\t\tif (stopAfterClick) {\n\t\t\t\t\tclearInterval(intervalId);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) { }\n\t}, checkInterval);\n\n\treturn () => {\n\t\tclearInterval(intervalId);\n\t};\n}\n\n// 将 url 的 queryString 解析成对象\nexport const parseUrlQueryString = (url: string) => {\n\tconst queryStringObject: Record<string, string> = {};\n\n\t// 检查 URL 是否包含查询参数\n\tif (!url || !url.includes(\"?\")) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 提取查询字符串部分\n\tconst queryString = url.split(\"?\")[1];\n\n\t// 检查查询字符串是否为空\n\tif (!queryString) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 处理 hash 部分\n\tconst queryWithoutHash = queryString.split(\"#\")[0];\n\n\t// 分割查询参数\n\tconst queryStringArray = queryWithoutHash.split(\"&\");\n\n\tfor (const item of queryStringArray) {\n\t\t// 跳过空参数\n\t\tif (!item) continue;\n\n\t\tconst equalIndex = item.indexOf(\"=\");\n\n\t\t// 处理没有值的参数 (如 ?param)\n\t\tif (equalIndex === -1) {\n\t\t\tqueryStringObject[item] = \"\";\n\t\t} else {\n\t\t\tconst key = item.slice(0, equalIndex);\n\t\t\tconst value = item.slice(equalIndex + 1);\n\n\t\t\t// 尝试解码,如果解码失败则使用原始值\n\t\t\ttry {\n\t\t\t\tqueryStringObject[key] = decodeURIComponent(value);\n\t\t\t} catch (e) {\n\t\t\t\tqueryStringObject[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn queryStringObject;\n};\n\n/**\n * 合并默认参数\n * @param params\n * @param defaults\n * @returns\n */\nexport const defaultParams = <P = Record<string, unknown>>(params: P, defaults: Partial<P>): P => {\n\treturn Object.assign({}, defaults, params);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction } from \".\";\nimport { extractImgTag, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n\terrmsg: string;\n\terrno: number;\n}\n\ninterface ImageRetResponse {\n\tbos_url: string;\n\thttps_url: string;\n\tno_waterlog_bos_url: string;\n\torg_url: string;\n}\n\nconst errnoMap: Record<number, string> = {\n\t20040706: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20040084: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20050004: \"今日百家号发布次数已达上限,请明天再试。\",\n\t10000015: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20050000: \"操作太频繁,请稍后再试\",\n\t20040027: \"你的账号状态异常,请到百家号平台检查账号状态。\",\n\t10000017: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20040033: \"封面图片推荐 jpg、png格式,宽高在372×284-5000×5000 范围内。\",\n\t2004005714: \"网络环境异常,请检查网络后重试发布。\",\n\t401100032: \"异常,请检查图片(如:格式、版权、合规性等)。\",\n\t20040034: \"封面图片推荐jpg、png格式,不支持gif格式。\",\n\t20040124: \"服务器异常,请稍后重试!\",\n\t20040001: \"当前用户未登录,请登陆后重试!\",\n 401100025: \"该应用不支持此媒资类型\",\n 401100033: \"图片宽高不满足要求\"\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { baijiahaoSingleCover, baijiahaoMultCover, baijiahaoCoverType } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n\n\t\t// 检查响应中的 errno 字段\n\t\tif (response.data.errno !== 0) {\n\t\t\tlet errmsg = response.config.defaultErrorMsg || `文章${msgType}异常,请稍后重试。`;\n\n\t\t\tif (response.data.errno === 20050000) {\n\t\t\t\terrmsg = msgType + errnoMap[response.data.errno];\n\t\t\t}\n\t\t\tif (response.data.errno === 401100032) {\n\t\t\t\terrmsg = `图片${msgType}${errnoMap[response.data.errno]}`;\n\t\t\t} else if (errnoMap[response.data.errno]) {\n\t\t\t\terrmsg = errnoMap[response.data.errno];\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.errno] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/home/index\",\n\t\tdefaultErrorMsg: `百家号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\t// 1. 获取用户 appId\n\tconst appIdInfo = await http.api<CommonResponse<{ user: { app_id: number } }>>({\n\t\tmethod: \"post\",\n\t\turl: \"https://baijiahao.baidu.com/builder/app/appinfo\",\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试。\",\n\t});\n\n\tconst appId = appIdInfo.data.user.app_id;\n\n\tconst uploadImages = async (_images: string[]) => {\n\t\t// 过滤掉空字符串\n\t\tconst images = _images.filter((url) => !!url && url.trim() !== \"\");\n\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"org_file_name\", fileName);\n\t\t\t\tformData.append(\"type\", \"image\");\n\t\t\t\tformData.append(\"app_id\", appId);\n\t\t\t\tformData.append(\"is_waterlog\", \"1\");\n\t\t\t\tformData.append(\"save_material\", \"1\");\n\t\t\t\tformData.append(\"no_compress\", \"0\");\n\t\t\t\tformData.append(\"article_type\", \"news\");\n\t\t\t\tformData.append(\"media\", fs.createReadStream(image));\n\n\t\t\t\tconst res = await http.api<{ ret: ImageRetResponse }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://baijiahao.baidu.com/materialui/picture/uploadProxy\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t});\n\n\t\t\t\treturn res.ret;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 2. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].bos_url;\n\t\t\tdom.attribs[\"data-bjh-origin-src\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-params\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-type\"] = \"IMG\";\n\t\t}\n\n\t\treturn dom;\n\t});\n\n\t// 3. 上传竖版封面\n\t// let vertical_cover = params.settingInfo.baijiahaoVerticalCover;\n\t// if (vertical_cover) {\n\t// \tvertical_cover = (await uploadImages([vertical_cover]))[0].bos_url;\n\t// }\n\n\t// 4. 上传横版封面\n\tconst horizontalCoverUrl = baijiahaoCoverType === \"single\" ? [baijiahaoSingleCover] : baijiahaoMultCover;\n\tconst horizontalCoverRes = await uploadImages(horizontalCoverUrl);\n\tconst cover_images = horizontalCoverRes.map((item) => ({\n\t\tsrc: item.bos_url,\n\t\tmachine_chooseimg: 0,\n\t\tisLegal: 0,\n\t}));\n\tconst _cover_images_map = horizontalCoverRes.map((item) => ({\n\t\tsrc: item?.bos_url,\n\t\torigin_src: item?.org_url,\n\t}));\n\n\t// 5. 构造发布数据\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst activityList = params.settingInfo.baijiahaoSelectActivityCache;\n\tconst cover_layout = baijiahaoCoverType === \"single\" ? \"one\" : \"three\";\n\n\tconst activity_list = [\n\t\t...(activityList.length > 0 ? [{ id: `task_${activityList[0]}`, is_checked: 1 }] : []),\n\t\t...(params.settingInfo.baijiahaoPublishConf?.map( item => ({ id : item.confName, is_checked : item.isChecked? 1 : 0 })) || [])\n\t];\n\n\tif(isAi && !activity_list.some(item => 'aigc_bjh_status' in item)){ activity_list.push({ id : 'aigc_bjh_status', is_checked : 1 })} // 兼容旧版配置\n\n\tconst publishData: Record<string, any> = {\n\t\ttitle: params.settingInfo.baijiahaoTitle,\n\t\tcontent,\n\t\t// vertical_cover,\n\t\tabstract: params.settingInfo.baijiahaoAbstract,\n\t\tcover_layout,\n\t\tcover_images: JSON.stringify(cover_images),\n\t\t_cover_images_map: JSON.stringify(_cover_images_map),\n\t\ttype: \"news\",\n\t\tsource_reprinted_allow: 0,\n\t\tabstract_from: 1,\n\t\tisBeautify: \"false\",\n\t\tusingImgFilter: \"false\",\n\t\tsource: \"upload\",\n\t\tcover_source: \"upload\",\n\t\tevent2news: params.settingInfo?.baijiahaoEvent2News ? 2 : 0,\n\t\tactivity_list,\n\t\t...(params.settingInfo.timer ? { timer_time: params.settingInfo.timer } : {}),\n\t};\n\n\tconst isDraft = params.saveType === \"draft\";\n\n\tconst saveUrl = isDraft\n\t\t? \"https://baijiahao.baidu.com/pcui/article/save?callback=bjhdraft\"\n\t\t: \"https://baijiahao.baidu.com/pcui/article/publish?callback=bjhpublish\";\n\n task._timerRecord['PrePublish']= Date.now();\n \n\tconst res = await http.api<{ ret: { article_id: string } }>({\n\t\tmethod: \"post\",\n\t\turl: saveUrl,\n\t\tdata: publishData,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\torigin: \"https://baijiahao.baidu.com\",\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/edit?type=news\",\n\t\t},\n\t\tdefaultErrorMsg: isDraft ? \"文章同步出现异常,请稍后重试。\" : \"文章发布出现异常,请稍后重试。\",\n\t});\n\n\treturn success(res.ret.article_id, \"百家号发布完成。\");\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, TimeFormatter} from \"../../utils\";\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"baijiahao.baidu.com\",\n\t\turl: \"https://baijiahao.baidu.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://baijiahao.baidu.com/builder/rc/edit?type=news&is_from_cms=1\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".bjh-edit-header\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\".edui-editor-toolbarbox\", { state: \"visible\" });\n\n\t// 2. 关闭纯文本粘贴\n\t// 有个默认开启纯文本粘贴的提示,先关闭\n\tif (await page.locator(\"#_onceTip-news_pasteplain_tip\").isVisible()) {\n\t\tawait page.locator(\"#_onceTip-news_pasteplain_tip .confirm\").click();\n\t}\n\t// 判断是否开启纯文本粘贴,如果开启,点击关闭\n\tif (await page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").isVisible()) {\n\t\tawait page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").click();\n\t}\n\n\t// 3. 填写标题\n\tconst titleInstance = page.locator(\"#ueditor #bjhNewsTitle .input-box textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\"#ueditor .edui-editor-iframeholder iframe\");\n\t// 模拟Ctrl+A全选\n\tawait page.keyboard.press(\"Control+A\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 等待 1 秒钟(让正文中的图片上传上去)\n\tawait page.waitForTimeout(1000);\n\n\t// 5. 设置封面\n\tconst coverFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(0);\n\tconst isSingleCover = params.settingInfo.baijiahaoCoverType === \"single\";\n\tif (isSingleCover) {\n\t\t// 单图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"单图\" })\n\t\t\t.click();\n\t} else {\n\t\t// 多图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"三图\" })\n\t\t\t.click();\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\t(isSingleCover ? [params.settingInfo.baijiahaoSingleCover] : params.settingInfo.baijiahaoMultCover).map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\tconst coverSelector = page.locator(\n\t\t\".cheetah-form-item-control .edit-cover-container .cover-list .DraggableTags-tag-drag .coverUploaderView\",\n\t);\n\tconst coverCount = await coverSelector.count();\n\n\tfor (let i = 0; i < coverCount; i++) {\n\t\tconst item = coverSelector.nth(i);\n\t\tconst image = images[i];\n\n\t\t// 滚动到可视区域\n\t\tawait item.evaluate((node) => node.scrollIntoView());\n\n\t\t// 如果已经存在图片,选择更换\n\t\tif (await item.locator(\".actions-wrap\").isVisible()) {\n\t\t\tawait item.locator(\".actions-wrap .action\").filter({ hasText: \"更换\" }).click();\n\t\t} else {\n\t\t\tawait item.click();\n\t\t}\n\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\".cheetah-modal-root .cheetah-ui-pro-image-modal\", { state: \"visible\" });\n\t\t// 选择本地图片 tab\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-nav-list .cheetah-tabs-tab\")\n\t\t\t.filter({ hasText: \"本地图片\" })\n\t\t\t.click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-tabpane-active .cheetah-upload-wrapper\")\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([image]);\n\t\t// 等待上传完成(可以用去编辑是否可点击来判断)\n\t\t// 等待 button 元素上面的 disabled 属性消失\n\t\tawait page.waitForSelector(\n\t\t\t\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button#imageModalEditBtn[disabled]\",\n\t\t\t{ state: \"detached\" },\n\t\t);\n\t\t// 点击确认关闭弹窗\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.click();\n\t\t// 等待 2 秒\n\t\tawait page.waitForTimeout(1000);\n\t}\n\n\t// 6. 摘要\n\tconst abstractFormItem = page\n\t\t.locator(\".bjh-edit-wrap-set .cheetah-form-item\")\n\t\t.nth(1)\n\t\t.locator(\"textarea.cheetah-input\");\n\tawait abstractFormItem.click();\n\tawait abstractFormItem.fill(params.settingInfo.baijiahaoAbstract);\n\n\t// 7. 设置\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst settingFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(5);\n\tif (isAi) {\n\t\tawait settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").filter({ hasText: \"AI创作声明\" }).click();\n\t}\n\tif(params.settingInfo.baijiahaoPublishConf){\n\t\tfor (const item of params.settingInfo.baijiahaoPublishConf) {\n\t\t\tconst _settingFormItem = settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").locator(`span.${item.confName}`)\n\t\t\tif((await _settingFormItem.isChecked()) !== item.isChecked ) await _settingFormItem.click();\n\t\t\tawait page.waitForTimeout(200);\n\t\t};\n\t}\n\n\tconst enent2NewsBtn = page.locator(\"input#event2news\")\n\tif((await enent2NewsBtn.isVisible()) && params.settingInfo.baijiahaoEvent2News) await enent2NewsBtn.click()\n\n\t// 8. 活动投稿\n\tif (params.settingInfo.baijiahaoActivity.length > 0 && params.settingInfo.baijiahaoSelectActivityCache.length > 0) {\n\t\tconst activity = params.settingInfo.baijiahaoActivity.filter((it) =>\n\t\t\tparams.settingInfo.baijiahaoSelectActivityCache.includes(it.id),\n\t\t);\n\t\tif (activity.length > 0) {\n\t\t\tconst activityFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(3);\n\t\t\tconst name = activity[0].task_name;\n\t\t\tconst findActivity = activityFormItem.locator(\".cheetah-form-item-control\").getByText(name, { exact: true });\n\t\t\tif ((await findActivity.count()) > 0) {\n\t\t\t\tawait findActivity.first().locator(\"..\").click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 9. 保存草稿 / 发布\n\tconst {articleId, message}= await new Promise<{articleId: string, message:string}>(async (resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tconst url = response.url();\n\t\t\tif (url.includes(\"/pcui/article/save\") || url.includes(\"/pcui/article/publish\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve({articleId:jsonResponse?.ret?.article_id, message: jsonResponse?.errmsg});\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n task._timerRecord['PrePublish']= Date.now();\n\n\t\tconst operatorContainer = page.locator(\".editor-component-operator\");\n\t\tif (params.saveType === \"draft\") {\n\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"存草稿\" }).locator(\"button\").click();\n\t\t} else {\n\t\t\tif (params.settingInfo.timer) {\n\t\t\t\t// 点击“定时发布”按钮\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"定时发布\" }).locator(\"button\").click();\n\n\t\t\t\t// 选择日期\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"日\"}).click();\n\t\t\t\tawait page.locator('#select-date_list + * .cheetah-select-item-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"M月dd日\") }).click();\n\t\t\t\tawait page.waitForTimeout(200);\n\n\t\t\t\t// 选择小时\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"点\"}).click();\n\t\t\t\tawait page.locator('#select-hour_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollHourInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-hour_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-hour_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistHourElem = scrollHourInfo.elementItem[0];\n\t\t\t\tlet fistHourElemH = Number(fistHourElem?.split(\"点\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastHourElem = scrollHourInfo.elementItem[scrollHourInfo.elementItem.length - 1];\n\t\t\t\tlet lastHourElemH = Number(lastHourElem?.split(\"点\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeH = Number(TimeFormatter.format(params.settingInfo.timer, 'h')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeH > lastHourElemH ? (targetTimeH-lastHourElemH)*scrollHourInfo.elementHeight : targetTimeH < fistHourElemH ? -(fistHourElemH - targetTimeH)*scrollHourInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-hour_list + * .cheetah-select-item-option \",{ hasText: targetTimeH + \"点\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\t// 选择分钟\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"分\"}).click();\n\t\t\t\tawait page.locator('#select-minute_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollMinuteInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-minute_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-minute_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistMinuteElem = scrollMinuteInfo.elementItem[0];\n\t\t\t\tlet fistMinuteElemH = Number(fistMinuteElem?.split(\"分\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastMinuteElem = scrollMinuteInfo.elementItem[scrollMinuteInfo.elementItem.length - 1];\n\t\t\t\tlet lastMinuteElemH = Number(lastMinuteElem?.split(\"分\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeM = Number(TimeFormatter.format(params.settingInfo.timer, 'm')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeM > lastMinuteElemH ? (targetTimeM-lastMinuteElemH)*scrollMinuteInfo.elementHeight : targetTimeM < fistMinuteElemH ? -(fistMinuteElemH - targetTimeM)*scrollMinuteInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-minute_list + * .cheetah-select-item-option \",{ hasText: targetTimeM + \"分\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\tawait page.locator(\".cheetah-modal-confirm-btns button\").filter({ hasText:\"定时发布\" }).click()\n\t\t\t}else{\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: /^发布/ }).locator(\"button\").click();\n\t\t\t}\n\t\t}\n\t});\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, articleId? \"发布成功\" : message);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ninterface ActivityData {\n\tid: string;\n\ttask_name: string;\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t[key: string]: any;\n}\n\nexport interface BaijiahaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttoken: string;\n\ttitle: string;\n\tcontent: string;\n\tsettingInfo: {\n\t\tbaijiahaoTitle: string; // 标题\n\t\tbaijiahaoCoverType: \"single\" | \"multiple\"; // 封面设置:单图 | 三图\n\t\tbaijiahaoAbstract: string; // 摘要\n\t\tbaijiahaoIsAi: string[]; // 设置-由配置项取代\n\t\tbaijiahaoSingleCover: string; // 单图封面\n\t\tbaijiahaoMultCover: string[]; // 三图封面\n\t\tbaijiahaoVerticalCover?: string; // 竖版封面-下版本删除\n\t\tbaijiahaoActivity: ActivityData[]; // 活动投稿\n\t\tbaijiahaoPublishConf?: {\n\t\t\tconfName: string;\n\t\t\tisChecked: boolean;\n\t\t}[]; // 发布配置项\n\t\tbaijiahaoEvent2News: boolean; // 图文转动态\n\t\tbaijiahaoSelectActivityCache: string[]; // 选中的活动标签\n\t\ttimer?: number;\n\t};\n}\n\nexport type PublishAction = CommonAction<BaijiahaoPublishParams, string>;\n\nexport const baijiahaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoActivityParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ActivityData {\n\tid: string;\n\ttask_name: string;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoActivityParams, ActivityData[]>;\n\nexport const getBaijiahaoActivity: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { list: ActivityData[] } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/author/eco/tasksystem/getSquareMissionList\",\n\t\tparams: {\n\t\t\tpage_no: 1,\n\t\t\tpage_size: 18,\n\t\t\tarticle_type: 1,\n\t\t\ttask_attend: 1,\n\t\t\ttask_origin: \"market\",\n\t\t\ttask_type: -1,\n\t\t},\n\t});\n\n\treturn success(res?.data?.list ?? []);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetToutiaoConfigParams extends ActiomCommonParams {}\n\nexport interface GetToutiaoConfigResult {\n\tsuggestWords: Toutiao.Topic[];\n\tcityDistrict: Toutiao.CityDistrict | null;\n\tuserRights: Toutiao.UserRight[];\n}\n\nexport type PublishAction = CommonAction<GetToutiaoConfigParams, GetToutiaoConfigResult>;\n\nexport const getToutiaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\tconst getSuggestWords = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; hots: Toutiao.Topic[] }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\t\t\tparams: { type: 2, words: \"\" },\n\t\t\t});\n\n\t\t\treturn res.code === 0 ? res.hots : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst getCityDistrict = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ status: number; data: Toutiao.CityDistrict }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/toutiao/normandy/mp/city_district/\",\n\t\t\t});\n\t\t\treturn res.status === 0 ? res.data : null;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tconst getUserRights = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; data: { benefit_level_info_list: Toutiao.UserRight[] } }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_project/get_benefit_page_info\",\n\t\t\t});\n\t\t\treturn res.code === 0 ? res.data.benefit_level_info_list : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst [suggestWords, cityDistrict, userRights] = await Promise.all([\n\t\tgetSuggestWords(),\n\t\tgetCityDistrict(),\n\t\tgetUserRights(),\n\t]);\n\n\treturn success({ suggestWords, cityDistrict, userRights });\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoConfigParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ConfigData {\n\tid: string;\n\tname: string;\n\tdetail: string;\n\tis_enable: number;\n\tpublish_num_left?: number;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoConfigParams, ConfigData[]>;\n\nexport const getBaijiahaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { article: { activity_list: ConfigData[]}, ability: { publish_num_left: number} } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/article/edit\",\n\t\tparams: {\n\t\t\ttype: \"news\"\n\t\t},\n\t});\n\tconst data : ConfigData[] = res?.data?.article.activity_list.map((_item) =>{ \n\t\treturn {\n\t\t\tid: _item.id,\n\t\t\tname: _item.name,\n\t\t\tdetail: _item.detail,\n\t\t\tis_enable: _item.is_enable\n\t\t}\n\t})?? []\n\tdata.push({\n\t\tid: \"bjh_publish_num_left\",\n\t\tname: \"账号剩余发文数\",\n\t\tdetail: \"\",\n\t\tis_enable: 1,\n\t\tpublish_num_left: res.data.ability.publish_num_left\n\t})\n\treturn success(data, \"获取百家号配置项成功!\")\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoTopicListParams extends ActiomCommonParams {\n\tsearchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoTopicListParams, Toutiao.Topic[]>;\n\nexport const searchToutiaoTopicList: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ code: number; recents: Toutiao.Topic[]; hots: Toutiao.Topic[] }>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\t\tparams: { type: 2, words: params.searchValue },\n\t\t});\n\n\t\tif (res.code === 0) {\n\t\t\treturn success(params.searchValue ? res.recents : res.hots);\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoLocationParams extends ActiomCommonParams {\n\tplaceName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoLocationParams, Toutiao.CityPoi[]>;\n\nexport const searchToutiaoLocation: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n biz: 1231\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ code: number; data: {poi: Array<any>}}>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.toutiao.com/poi/api/searchplace\",\n\t\t\tdata: {\n appid: 1231,\n device: 2,\n keywords: params.placeName,\n language: \"zh-CN\",\n location: \"-1,-1\",\n offset: 20,\n page: 1,\n region: \"CN\",\n scenario: \"TIPS\",\n timestamp: Math.floor(Date.now() / 1000)\n },\n\t\t});\n \n\t\tif (res.code === 200) {\n\t\t\treturn success(res.data.poi.map(item => ({ \n position: item.name,\n city: item.city,\n longitude: item.longitude,\n latitude: item.latitude,\n type_code: item.type_code,\n poi_id: item.id,\n })));\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoUserIDParams extends ActiomCommonParams {\n\tUserName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoUserIDParams, Toutiao.SuggestWords[]>;\n\nexport const searchToutiaoUserInfo: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ err_no: number; data: {suggest: Array<any>}}>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.toutiao.com/ugc/publish/post/v1/suggest/\",\n\t\t\tparams: { \n words: params.UserName,\n language: \"zh\",\n app_name: \"toutiao_mp\"\n },\n\t\t});\n\n\t\tif (res.err_no === 0) {\n\t\t\treturn success(res.data.suggest.map(item => ({ \n user_id: item.user.info.user_id,\n name: item.user.info.name,\n avatar_url: item.user.info.avatar_url,\n followers_count: item.user.relation_count.followers_count\n })), '搜索成功');\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Xiaohongshu } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface searchXiaohongshuLocationParams extends ActiomCommonParams {\n\tsearchValue: string;\n\tlatitude?: number;\n\tlongitude?: number;\n\tsize?: number;\n\tpage?: number;\n}\n\nexport type PublishAction = CommonAction<searchXiaohongshuLocationParams, Xiaohongshu.Location[]>;\n\nexport const searchXiaohongshuLocation: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com\",\n\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst result = await http.api<{ code: number; data: { poi_list: Xiaohongshu.Location[] } }>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://edith.xiaohongshu.com/web_api/sns/v1/local/poi/creator/search\",\n\t\t\tdata: {\n\t\t\t\tkeyword: params.searchValue,\n\t\t\t\tlatitude: params.latitude ?? 0,\n\t\t\t\tlongitude: params.longitude ?? 0,\n\t\t\t\tpage: params.page ?? 1,\n\t\t\t\tsize: params.size ?? 10,\n\t\t\t\tsource: \"WEB\",\n\t\t\t\ttype: 3,\n\t\t\t},\n\t\t});\n\n\t\treturn success(result.code === 0 ? result.data.poi_list : []);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { Buffer } from \"node:buffer\";\nimport crypto from \"node:crypto\";\n\n/**\n * 小红书加密参数逆向,代码来自:https://github.com/Cloxl/xhshow\n */\nexport class XsEncrypt {\n\tprivate words = [929260340, 1633971297, 895580464, 925905270];\n\tprivate keyBytes = Buffer.concat(\n\t\tthis.words.map(\n\t\t\t(word) =>\n\t\t\t\tnew Uint8Array(Buffer.from([(word >> 24) & 0xff, (word >> 16) & 0xff, (word >> 8) & 0xff, word & 0xff])),\n\t\t),\n\t);\n\tprivate iv = Buffer.from(\"4uzjr7mbsibcaldp\", \"utf8\");\n\n\t/**\n\t * 根据传入的url生成MD5摘要\n\t *\n\t * @param {string} url - API的url\n\t * @returns {string} MD5摘要\n\t */\n\tasync encryptMD5(url: string): Promise<string> {\n\t\treturn crypto.createHash(\"md5\").update(url, \"utf8\").digest(\"hex\");\n\t}\n\n\t/**\n\t * 根据传入的text生成AES加密后的内容,并将其转为base64编码\n\t *\n\t * @param {string} text - 需要加密的字符串\n\t * @returns {string} 加密后的base64编码字符串\n\t */\n\tasync encryptText(text: string): Promise<string> {\n\t\t// 将文本编码为 Base64\n\t\tconst textEncoded = Buffer.from(text).toString(\"base64\");\n\t\t// 创建 AES 加密器\n\t\tconst cipher = crypto.createCipheriv(\"aes-128-cbc\", new Uint8Array(this.keyBytes), new Uint8Array(this.iv));\n\t\t// 对数据进行填充\n\t\tconst ciphertext = cipher.update(textEncoded, \"utf8\", \"base64\");\n\t\treturn ciphertext + cipher.final(\"base64\");\n\t}\n\n\t/**\n\t * 把加密后的payload转为16进制\n\t *\n\t * @param {string} encodedData - 加密后的payload(Base64编码)\n\t * @returns {string} 十六进制字符串\n\t */\n\tasync base64ToHex(encodedData: string): Promise<string> {\n\t\t// 将 Base64 字符串解码为二进制数据\n\t\tconst decodedData = Buffer.from(encodedData, \"base64\");\n\t\t// 将二进制数据转换为十六进制字符串\n\t\treturn decodedData.toString(\"hex\");\n\t}\n\n\t/**\n\t * 把小红书加密参数payload转16进制 再使用base64编码\n\t *\n\t * @param {string} payload - 要加密处理的payload内容\n\t * @param {string} platform - 登录平台\n\t * @returns {string} 加密后并进行base64编码的字符串\n\t */\n\tasync encryptPayload(payload: string, platform: string): Promise<string> {\n\t\t// 将 payload 转换为十六进制\n\t\tconst hexPayload = await this.base64ToHex(payload);\n\n\t\t// 构造对象\n\t\tconst obj = {\n\t\t\tsignSvn: \"56\",\n\t\t\tsignType: \"x2\",\n\t\t\tappID: platform,\n\t\t\tsignVersion: \"1\",\n\t\t\tpayload: hexPayload,\n\t\t};\n\n\t\t// 将对象转换为 JSON 字符串(紧凑格式)\n\t\tconst jsonString = JSON.stringify(obj, null, 0);\n\n\t\t// 对 JSON 字符串进行 Base64 编码\n\t\treturn Buffer.from(jsonString).toString(\"base64\");\n\t}\n\n\t/**\n\t * 将传入的参数加密为小红书的xs\n\t * Args: url: API请求的URL\n\t * a1: 签名参数a1\n\t * ts: 时间戳\n\t * platform: 登录平台 默认为xhs-pc-web\n\t * Returns:\n\t * 最终的加密签名字符串,前缀为“XYW_”\n\t */\n\tasync encryptXs(url: string, a1: string, ts: string, platform = \"xhs-pc-web\"): Promise<string> {\n\t\tconst text = `x1=${await this.encryptMD5(`url=${url}`)};x2=0|0|0|1|0|0|1|0|0|0|1|0|0|0|0|1|0|0|0;x3=${a1};x4=${ts};`;\n\t\treturn `XYW_${await this.encryptPayload(await this.encryptText(text), platform)}`;\n\t}\n\n\tdumps(...rest: Parameters<typeof JSON.stringify>): string {\n\t\tconst [data, replacer = null, space = 0] = rest;\n\t\treturn JSON.stringify(data, replacer, space)\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/\":\\s+\"/g, '\":\"');\n\t}\n}\n","import {type CommonAction, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, Xiaohongshu} from \"../../types\";\nimport {Http} from \"../../utils/http\";\nimport {XsEncrypt} from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new XsEncrypt();\n\nexport interface SearchXiaohongshuTopicListParams extends ActiomCommonParams {\n searchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchXiaohongshuTopicListParams, Xiaohongshu.Topic[]>;\n\nexport const searchXiaohongshuTopicList: PublishAction = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: []};\n\n try {\n const xt = Date.now().toString();\n const topicData = {\n keyword: params.searchValue,\n suggest_topic_request: {\n title: \"\",\n desc: `#${params.searchValue}`\n },\n page: {\n page_size: 20,\n page: 1\n }\n }\n const topicDataStr = xsEncrypt.dumps(topicData);\n const fatchTopic = `/web_api/sns/v1/search/topic${topicDataStr}`;\n const xs = await xsEncrypt.encryptXs(fatchTopic, a1Cookie, xt);\n const result = await http.api<{ code: number; data: { topic_info_dtos: Xiaohongshu.Topic[] } }>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v1/search/topic\",\n data: topicData,\n headers: {\"x-s\": xs, \"x-t\": xt},\n defaultErrorMsg: \"话题搜索异常,请稍后重试。\",\n });\n\n return success(result.code === 0 ? result.data.topic_info_dtos : [], '获取话题成功');\n } catch (error) {\n return success([]);\n }\n\n}","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { Toutiao } from \"../../types\";\nimport { extractImgTag, replaceImgSrc, TimeFormatter } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n\tcode: number;\n\tmessage: string;\n}\n\nconst errnoMap: Record<number, string | string[]> = {\n\t20004020: \"图片上传异常,请重新绑定账号后同步。\",\n\t7115: \"正文图片和封面图片推荐jpg、png格式。\",\n\t100006: \"文章同步异常,请重新绑定账号后重试。\",\n\t3101: [\n\t\t\"今日头条号发布次数已达上限,请明天再试。\",\n\t\t\"头条账号状态异常,需前往头条号完成实名认证。\",\n\t\t\"头条账号状态异常,资料审核未通过,请前往头条号查看。\",\n\t],\n\t2007: \"文章发布失败,声明原创要求正文字数不少于 300 字,请修改后重试。\",\n\t2010: \"无头条广告权限,请修改后重试。\",\n\t3103: \"今日头条号发布次数已达上限,请明天再试。\",\n\t1053: \"正文图片和封面图片推荐jpg、png格式。\",\n\t1050: \"图片上传失败,请重试上传。\",\n\t2005: \"账号无【申明原创】权限,请关闭申明后重试。\",\n\t100004: \"用户未登录或登陆已过期,请重新登陆后重试。\"\n};\nconst generatorFormData = (data: Record<string, unknown>) => {\n\treturn Object.entries(data)\n\t\t.map(([key, value]) => {\n\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t})\n\t\t.join('&');\n};\nconst get3101DetailError = (errorList: string[], message: string, saveType: string) => {\n\tlet error = \"\";\n\tif (message?.includes(\"当日发文\")) {\n\t\terror = errorList[0];\n\t} else if (message?.includes(\"实名认证\")) {\n\t\terror = errorList[1];\n\t} else if (message?.includes(\"资料审核\")) {\n\t\terror = errorList[2];\n\t}\n\treturn error || (saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { toutiaoSingleCover, toutiaoMultCover, toutiaoCoverType, toutiaoOriginal, toutiaoExclusive, toutiaoClaim } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.toutiao.com\",\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\t// 检查响应中的 errno 字段\n\t\tif (response.data?.code !== 0) {\n\t\t\tlet errmsg = \"\";\n\n\t\t\tif (Array.isArray(errnoMap[response.data.code])) {\n\t\t\t\terrmsg = get3101DetailError(errnoMap[response.data.code] as string[], response.data.message, params.saveType);\n\t\t\t} else {\n\t\t\t\terrmsg =\n\t\t\t\t\t(errnoMap[response.data.code] as string) ||\n\t\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\t\t(params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.code] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n\t\tdefaultErrorMsg: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\tconst uploadImages = async (images: string[]) => {\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(image));\n\n\t\t\t\tconst response = await http.api<CommonResponse<Toutiao.ImageData>>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020002&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 1. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].image_url;\n\t\t\tdom.attribs.web_uri = targetContentImages[idx].image_uri;\n\t\t\tdom.attribs.img_width = targetContentImages[idx].image_width.toString();\n\t\t\tdom.attribs.image_height = targetContentImages[idx].image_height.toString();\n\t\t\tdom.attribs.image_type = targetContentImages[idx].image_type.toString();\n\t\t\tdom.attribs.mime_type = targetContentImages[idx].image_mime_type;\n\t\t}\n\t\treturn dom;\n\t});\n\n\t// 3. 上传横版封面\n\tconst coverUrl =\n\t\ttoutiaoCoverType === \"single\" ? [toutiaoSingleCover] : toutiaoCoverType === \"multiple\" ? toutiaoMultCover : [];\n\tconst coverRes = await uploadImages(coverUrl);\n\n\t// 4. 构造发布数据\n\t// const isSingleTitle = params.settingInfo.toutiaoTitleType === \"single\";\n\tconst location = params.settingInfo.toutiaoLocation;\n\tconst topics = params.settingInfo.toutiaoTopic || [];\n\n\t// const multiTitleData = params.settingInfo.subTitles.map((title) => ({\n\t// \tid: \"0\",\n\t// \tvisibility_level: 0,\n\t// \tsource: \"author\",\n\t// \told_source: \"author\",\n\t// \ttext: title,\n\t// \tversion: \"author\",\n\t// \tai_title: \"\",\n\t// }));\n\n\tconst topicContent = topics\n\t\t.map(\n\t\t\t(topic) =>\n\t\t\t\t`<p><a class=\"tteditor-forum\" data-name=\"${topic.word}\" data-id=\"${topic.id}\" data-concern-id=\"${topic.id}\">#${topic.word}#</a ></p >`,\n\t\t)\n\t\t.join(\"\");\n\n\tlet sourceData : Record<string, any> = {\n\t\tsource_type: toutiaoClaim ? toutiaoClaim.type : 5 // 老用户默认为:个人观点,仅供参考\n\t}\n\tif (toutiaoClaim && toutiaoClaim.type === 1) {\n\t\tif( !toutiaoClaim?.source_author_uid) return { code: 500, message: \"请填写作者ID\", data: \"\" }\n\t\tsourceData = {\n\t\t\t...sourceData,\n\t\t\tsource_author_uid: toutiaoClaim.source_author_uid,\n\t\t\ttime_format: toutiaoClaim.time_format,\n\t\t\tposition: toutiaoClaim.position\n\t\t}\n\t}\n\tconst extraData = {\n\t\tcontent_word_cnt: params.settingInfo.cntWord,\n\t\t// is_multi_title: isSingleTitle ? 0 : 1,\n\t\t// sub_titles: isSingleTitle ? [] : multiTitleData,\n\t\tgd_ext: {\n\t\t\tentrance: \"\",\n\t\t\tfrom_page: \"publisher_mp\",\n\t\t\tenter_from: \"PC\",\n\t\t\tdevice_platform: \"mp\",\n\t\t\tis_message: 0,\n\t\t},\n\t\ttuwen_wtt_trans_flag: \"0\",\n\t\tinfo_source: sourceData,\n\t\t...(location ? { city: location.label, city_code: location.value } : null),\n\t};\n\n\tconst publishData = {\n\t\tarticle_type: 0,\n\t\tsource: 0,\n\t\tsearch_creation_info: '{\"searchTopOne\": 0, \"abstract\": \"\", \"clue_id\": \"\"}',\n\t\ttitle_id: \"\",\n\t\teducluecard: \"\",\n\t\torigin_debut_check_pgc_normal: 1,\n\t\tis_fans_article: 0,\n\t\tgovern_forward: 0,\n\t\tpraise: 0,\n\t\tdisable_praise: 0,\n\t\ttree_plan_article: 0,\n\t\tstar_order_id: \"\",\n\t\tstar_order_name: \"\",\n\t\tcustomer_nick_name: \"\",\n\t\tactivity_tag: 0,\n\t\ttrends_writing_tag: 0,\n\t\tis_refute_rumor: 0,\n\t\tsave: params.saveType === \"publish\" ? 1 : 0,\n\t\ttimer_status: params.settingInfo.timer? 1 : 0,\n\t\ttimer_time: params.settingInfo.timer? TimeFormatter.format(params.settingInfo.timer):\"\",\n\t\ttitle: params.title,\n\t\tcontent: content + topicContent,\n\t\textra: JSON.stringify(extraData),\n\t\tmp_editor_stat: toutiaoCoverType === \"no\" ? \"{}\" : '{\"image\": %d}',\n\t\tdraft_form_data: JSON.stringify({\n\t\t\tcoverType: COVER_TYPE[toutiaoCoverType],\n\t\t}),\n\t\tpgc_feed_covers: JSON.stringify(\n\t\t\tcoverRes.map((item) => ({\n\t\t\t\tid: \"\",\n\t\t\t\turl: item.image_url,\n\t\t\t\turi: item.image_uri,\n\t\t\t\tic_uri: \"\",\n\t\t\t\tthumb_widt: item.image_width,\n\t\t\t\tthumb_heigh: item.image_height,\n\t\t\t\textra: {\n\t\t\t\t\tfrom_content_uri: \"\",\n\t\t\t\t\tfrom_content: \"0\",\n\t\t\t\t},\n\t\t\t})),\n\t\t),\n\t\tarticle_ad_type: getAddTypeValue(params.settingInfo.toutiaoAd),\n\t\t// claim_origin: toutiaoOriginal.includes(\"original\") ? 1 : 0,\n\t\tclaim_exclusive: toutiaoExclusive ? toutiaoExclusive : toutiaoOriginal?.includes(\"exclusive\") ? 1 : 0, // 首发声明兼容老用户字段\n\t};\n \n task._timerRecord['PrePublish']= Date.now();\n\n\tconst msToken = params.cookies.find((it) => it.name === \"msToken\")?.value;\n\tlet publishOption = {}\n\tif (!msToken) {\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.toutiao.com/mp/agw/article/publish?source=mp&type=article&aid=1\",\n\t\t\tdata: publishData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}else{\n\t\tconst postHeaders = generatorFormData({\n\t\t\tsource: \"mp\",\n\t\t\ttype: \"article\",\n\t\t\taid: 1231,\n\t\t\tmp_publish_ab_val: 0,\n\t\t\tmsToken: msToken\n\t\t})\n\t\tconst postData = generatorFormData(publishData)\n\t\tlet a_bogus = GenAB(postHeaders,postData)\n\t\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: `https://mp.toutiao.com/mp/agw/article/publish?${postHeaders}&a_bogus=${a_bogus}`,\n\t\t\tdata: postData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\"\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}\n\tconst publishResult = await http.api<CommonResponse<{ pgc_id: string }>>(publishOption)\n\n\treturn success(publishResult.data.pgc_id);\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, getRandomInRange, PopupListener, TimeFormatter } from \"../../utils\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \".toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-editor\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn {\n\t\t\tcode: 400,\n\t\t\tmessage: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t\t\tdata: page.url(),\n\t\t};\n\t}\n\n\tconst interceptUrls = [\n\t\t'/mp/agw/article/publish'\n\t];\n\t \n\tawait page.route('**', async (route, request) => {\n\t\tconst url = new URL(request.url()); \n\t\tif (interceptUrls.some(pattern => url.pathname.includes(pattern))) {\n\t\t\tconst headers = {\n\t\t\t\t...request.headers(),\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\" //ua参数固定,不可修改\n\t\t\t};\n\n\t\t\tconst generatorFormData = (data: Record<string, unknown>) => {\n\t\t\t\treturn Object.entries(data)\n\t\t\t\t\t.map(([key, value]) => {\n\t\t\t\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\t\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\t\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join('&');\n\t\t\t};\n\n\t\t\tconst postHeaders = generatorFormData({\n\t\t\t\tsource: \"mp\",\n\t\t\t\ttype: \"article\",\n\t\t\t\taid: 1231,\n\t\t\t\tmp_publish_ab_val: 0,\n\t\t\t\tmsToken: url.searchParams.get('msToken')\n\t\t\t})\n\t\t\tconst postData = request.postData() || \"\";\n\t\t\tlet a_bogus = GenAB(postHeaders,postData)\n\n\t\t\turl.searchParams.set('aid', \"1231\"); \n\t\t\turl.searchParams.set('mp_publish_ab_val', \"0\"); \n\t\t\turl.searchParams.set('a_bogus', a_bogus); \n\n\t\t\tawait route.continue({ url: url.toString() , headers: headers});\n\n\t\t} else {\n\t\t\tawait route.continue();\n\t\t}\n\t});\n\n\t//弹窗监听检测\n\tPopupListener(page,'.byte-modal.publish-exclusive-modal .title',\"激励\", '.byte-modal-close-icon', \n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t\n\t// 1. 填写标题\n\tconst titleInstance = page.locator(\".publish-editor-title-wrapper .publish-editor-title textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 2. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".publish-editor .syl-editor-wrap .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 3. 封面\n\tconst coverTypeValue = COVER_TYPE[params.settingInfo.toutiaoCoverType];\n\tconst coverContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"展示封面\" });\n\t// 滚动到可视区域\n\tawait coverContainer.evaluate((node) => node.scrollIntoView());\n\tawait coverContainer.locator(`.article-cover label.byte-radio:has(input[value=\"${coverTypeValue}\"])`).click();\n\n\tlet coverUrls: string[] = [];\n\tif (params.settingInfo.toutiaoCoverType === \"single\") {\n\t\tcoverUrls = [params.settingInfo.toutiaoSingleCover];\n\t} else if (params.settingInfo.toutiaoCoverType === \"multiple\") {\n\t\tcoverUrls = params.settingInfo.toutiaoMultCover;\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tcoverUrls.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n\tconst coverUploadEle = coverContainer\n\t\t.locator(\".article-cover .article-cover-images\")\n\t\t.locator(\".article-cover-img-wrap, .article-cover-add\");\n\tconst coverUploadCount = await coverUploadEle.count();\n\n\tfor (let i = 0; i < coverUploadCount; i++) {\n\t\tif (!images[i]) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ele = coverUploadEle.nth(i);\n\t\t// 如果存在图片则替换\n\t\tif ((await ele.locator(\"img\").count()) > 0) {\n\t\t\tawait ele.locator(\".article-cover-img-menu a\").filter({ hasText: \"替换\" }).click();\n\t\t} else {\n\t\t\t// 如果不存在图片则点击上传\n\t\t\tawait ele.click();\n\t\t}\n\n\t\t// 上传图片\n\t\tconst drawerContainer = page.locator(\".byte-drawer-wrapper:not(.byte-drawer-wrapper-hide)\");\n\t\tawait drawerContainer.locator(\".byte-tabs-header .byte-tabs-header-title\").filter({ hasText: \"上传图片\" }).click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.waitForTimeout(200);\n\t\tawait drawerContainer.locator(\".upload-image-panel button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([images[i]]);\n\n\t\t// 等待上传完成\n\t\tconst confirmBtn = drawerContainer\n\t\t\t.locator(\".footer .confirm-btns button:not(.byte-btn-disabled)\")\n\t\t\t.filter({ hasText: \"确定\" });\n\t\tawait confirmBtn.waitFor({ state: \"visible\" });\n\t\tawait confirmBtn.click();\n\n\t\tawait page.waitForTimeout(getRandomInRange(500, 1000));\n\t}\n\n\t// 4. 添加位置\n\tif (params.settingInfo.toutiaoLocation) {\n\t\tconst locationContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"添加位置\" });\n\t\tawait locationContainer.locator(\".position-select\").click();\n\t\tawait locationContainer\n\t\t\t.locator(\".position-select .byte-select-view-search input\")\n\t\t\t.fill(params.settingInfo.toutiaoLocation.label);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 5. 投放广告\n\tconst adContainer = page\n\t\t.locator(\".form-container .edit-cell .edit-label\")\n\t\t.filter({ hasText: \"投放广告\" })\n\t\t.locator(\"xpath=..\");\n\n\t// 判断是否存在投放广告的选项\n\tconst isAdOptionVisible = await adContainer.isVisible();\n\n\tif (isAdOptionVisible) {\n\t\t// 获取元素的父元素句柄并点击\n\t\tawait adContainer\n\t\t\t.locator(`label.byte-radio:has(input[value=\"${getAddTypeValue(params.settingInfo.toutiaoAd)}\"])`)\n\t\t\t.click();\n\t}\n\n\t// 6. 声明首发\n\tconst exclusiveContainer = page.locator(\".form-container .edit-cell .edit-label\").filter({ hasText: \"声明首发\" }).locator(\"xpath=..\");\n\tif ((params.settingInfo.toutiaoOriginal && params.settingInfo.toutiaoOriginal.includes(\"exclusive\")) || params.settingInfo.toutiaoExclusive ) {\n\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").check();\n\t}else{\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").uncheck();\n\t}\n\n\t// 作品声明\n\tlet claim = params.settingInfo.toutiaoClaim ? params.settingInfo.toutiaoClaim.type : 5;\n\tswitch (claim) {\n\t\t// case 1:\n\t\t// \tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用站内\"}).locator(\".byte-checkbox-mask\").check();\n\t\t// \tif(!params.settingInfo.toutiaoClaim?.source_author_name) return{ code: 500, message: \"请填写作者账户名\", data: \"\" };\n\t\t// \tawait page.locator(\".source-form-item\",{hasText: \"账号\"}).locator(\".byte-select-view-search input\").fill(params.settingInfo.toutiaoClaim.source_author_name)\n\t\t// \tbreak;\n\t\tcase 3:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用AI\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"取材网络\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"虚构演绎,故事经历\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\n\t\t\tbreak;\n\t}\n\n\t// 7. 保存草稿 / 发布\n\tconst articleId = await new Promise<string>(async (resolve) => {\n\t\tconst handleResponse = async (response: Response) => {\n\t\t const url = response.url();\n\t\t if (url.includes(\"/mp/agw/article/publish\")) {\n\t\t\tconst jsonResponse = await response.json();\n\t\t\tpage.off(\"response\", handleResponse);\n\t\t\tresolve(jsonResponse.data.pgc_id);\n\t\t }\n\t\t};\n\t \n\t\tpage.on(\"response\", handleResponse);\n\t \n\t\tif (params.settingInfo.timer && params.saveType == \"publish\") {\n\t\t // 点击“定时发布”按钮\n\t\t await page.locator(\".publish-footer button\").filter({ hasText: \"定时发布\" }).click();\n\t\t await page.waitForSelector('button.publish-btn:not(.byte-btn-loading) >> nth=1', { state: 'attached' });\n\t \n\t\t // 选择日期\n\t\t await page.locator(\".byte-modal-content .day-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"MM月dd日\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择小时\n\t\t await page.locator(\".byte-modal-content .hour-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"h\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择分钟\n\t\t await page.locator(\".byte-modal-content .minute-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"m\") }).click();\n\t\t await page.waitForTimeout(200);\n\n\t\t await page.locator(\".byte-modal-footer button\").filter({ hasText:\"预览并定时发布\" }).click()\n\t\t}else{\n\t\t\tawait page.locator(\".publish-footer button\").filter({ hasText:\"预览并发布\" }).click();\n\t\t}\n\t \n\t });\n\n\tif(params.settingInfo.toutiaoAd == 'no'){\n\t\tawait page.waitForTimeout(200);\n\t\tconst confirmBtn = page.locator('div.byte-modal-footer button.byte-btn-primary:has-text(\"确定\")');\n\t\tif (await confirmBtn.isVisible()) {\n\t\t await confirmBtn.click();\n\t\t}\n\t}\n \n\ttask._timerRecord['PrePublish']= Date.now();\n \n\tif (params.saveType === \"publish\") {\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).waitFor({ state: \"visible\" });\n\t\tawait page.waitForTimeout(200);\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).click();\n\t}\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, params.saveType === \"publish\" ? \"发布成功\" : \"保存草稿成功\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ntype CoverType = \"single\" | \"multiple\" | \"no\";\n\nexport interface ToutiaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttitle: string;\n\tcontent: string;\n\tsettingInfo: {\n\t\ttoutiaoCoverType: CoverType;\n\t\ttoutiaoTitleType: \"single\" | \"multiple\"; // 已关闭对应功能,保留参数,兼容老版本\n\t\ttoutiaoSingleCover: string;\n\t\ttoutiaoMultCover: string[];\n\t\ttoutiaoAd: string; // 广告配置 - 投放广告/不投放广告\n\t\ttoutiaoOriginal?: string; // 原创声明-已修改为首发声明,兼容老用户\n\t\ttoutiaoExclusive?: number; // 头条首发 0 - 声明非首发 2- 声明首发\n\t\ttoutiaoClaim?: {\n\t\t\ttype: number// 作品声明 -1 - 不声明,4 - 取材网络,1 - 引用站内(该选项必须传入下方两个参数,否则会错误),5 - 个人观点,仅供参考,3 - 引用AI,6 - 虚构演绎,故事经历\n\t\t\tsource_author_uid?: string;\n\t\t\tsource_author_name?: string;\n\t\t\ttime_format?: string;\n\t\t\tposition?: {\n\t\t\t\tposition: string;\n\t\t\t\tcity: string;\n\t\t\t\tlongitude: number;\n\t\t\t\tlatitude: number;\n\t\t\t\ttype_code: string;\n\t\t\t\tpoi_id: string;\n\t\t\t}\n\n\t\t}; \n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\ttoutiaoLocation?: { label: string; value: string; [key: string]: any }; // 位置\n\t\ttoutiaoTopic: { id: string; word: string }[]; // 话题\n\t\tcntWord: number;\n\t\tsubTitles: string[]; // 多标题\n\t\ttimer?: number;\n\t};\n}\n\nexport const COVER_TYPE: Record<CoverType, number> = {\n\tno: 1,\n\tsingle: 2,\n\tmultiple: 3,\n};\n\nexport const getAddTypeValue = (toutiaoAd: ToutiaoPublishParams[\"settingInfo\"][\"toutiaoAd\"]) =>\n\ttoutiaoAd === \"yes\" ? 3 : 2;\n\nexport type PublishAction = CommonAction<ToutiaoPublishParams, string>;\n\nexport const toutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao, Xiaohongshu, Weixin, BaiJiaHao} from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\n\n\nexport type ttSearchAction = CommonAction<ActiomCommonParams, Toutiao.FansCount>;\n\nexport type xhsSearchAction = CommonAction<ActiomCommonParams, Xiaohongshu.FansCount>;\n\nexport interface GetWxFansSearchParams extends ActiomCommonParams {\n token: string| number;\n}\nexport type wxSearchAction = CommonAction<GetWxFansSearchParams, Weixin.FansCount>;\n\nexport type bjhSearchAction = CommonAction<ActiomCommonParams, BaiJiaHao.FansCount>;\n\n\nexport const TTFansExport: ttSearchAction = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n try {\n const res = await http.api<{ code: number; total_fans_count: number }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?app_id=1231\",\n params: { app_id: 1231},\n });\n\n return success(res.code === 0 ? { fans_count: res.total_fans_count } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const XhsFansExport: xhsSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ result: number; data: Xiaohongshu.FansCount }>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n });\n\n return success(res.result === 0 ? { fans_count: res.data.fans_count } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const WxFansExport: wxSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n\n try {\n const htmlStr = await http.api<string>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/home\",\n params: {\n t: \"home/index\",\n token: params.token,\n lang: \"zh_CN\",\n },\n });\n\n const match = htmlStr.match(/总用户数[\\s\\S]*?<mp-thousandth>(\\d+)<\\/mp-thousandth>/);\n \n return success(match ? { fans_count: Number(match[1]) }: {fans_count: null},\"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const BjhFansExport: bjhSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ errno: number; data: {total_fans: number} }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/cms-ui/rights/growth/get_info\",\n });\n\n return success(res.errno === 0 ? { fans_count: res.data.total_fans } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\n\nexport interface sessionCheckResult {\n\tisValidSession: boolean;\n}\n\nexport type ttSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport interface wxSessionParams extends ActiomCommonParams {\n token: string | number;\n}\nexport type wxSessionCheck = CommonAction<wxSessionParams, sessionCheckResult>;\nexport type xhsSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport type bjhSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\n\nexport const TTSessionCheck: ttSessionCheck = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n try {\n const res = await http.api({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n defaultErrorMsg: `头条号登录状态失效。`,\n });\n\n return success(res.code === 0 ? { isValidSession: true } : { isValidSession: false }, \"头条账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false }, \"头条账号有效性检测失败!\");\n }\n\n};\n\nexport const WxSessionCheck: wxSessionCheck = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n try {\n const res = await http.api<{base_resp: {ret: number;}}>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n params: {\n fingerprint,\n sub: \"list\",\n begin: 0,\n count: 10,\n query: \"\",\n type: 101_1_102_103,\n show_type: \"\",\n free_publish_type: 1_102_103,\n sub_action: \"list_ex\",\n search_card: 0,\n token: params.token,\n lang: \"zh_CN\",\n f: \"json\",\n ajax: 1,\n },\n });\n\n return success(res.base_resp.ret === 0 ? { isValidSession: true } : { isValidSession: false }, \"微信账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false }, \"微信账号有效性检测失败!\");\n }\n\n};\n\nexport const XhsSessionCheck: xhsSessionCheck = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ result: number;}>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/user/info\",\n });\n\n return success(res.result === 0 ? { isValidSession: true } : { isValidSession: false }, \"小红书账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false}, \"小红书账号有效性检测完成!\");\n }\n\n};\n\nexport const BjhSessionCheck: bjhSessionCheck = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\n try {\n const res = await http.api({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/home/index\",\n defaultErrorMsg: `百家号登录状态失效。`,\n });\n\n return success(res.errno === 0 ? { isValidSession: true } : { isValidSession: false }, \"百家号账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false}, \"百家号账号有效性检测失败!\");\n }\n\n};","\nexport interface ttConfigData {\n fansNum: number;\n fansNumYesterday: number | null;\n readNum: number;\n incomeNum: number;\n incomeNumYesterday: number| null;\n showNumYesterday: number| null;\n readNumYesterday: number| null;\n likeNumYesterday: number| null;\n commentNumYesterday: number| null;\n}\n\nexport interface xhsConfigData {\n fansNum: number;\n favedNum: number;\n watchNumLastWeek: number;\n likeNumLastWeek: number;\n collectNumLastWeek: number;\n commentNumLastWeek: number;\n fansNumLastWeek: number;\n fansNumYesterday: number;\n}\n\nexport interface wxConfigData {\n fansNum: number;\n fansNumYesterday: number;\n readNumYesterday: number;\n shareNumYesterday: number;\n}\n\nexport interface bjhConfigData {\n fansNum: number;\n fansNumYesterday: number | null;\n readNum: number;\n incomeNum: number;\n incomeNumYesterday: number | null;\n recommendNumYesterday: number | null;\n readNumYesterday: number | null;\n likeNumYesterday: number | null;\n commentNumYesterday: number | null;\n}\n\nexport interface SearchAccountInfoResponse {\n code: number;\n message: string;\n data: ttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null;\n};\n\nexport const errorResponse = (\n message: string,\n code: number = 500\n): SearchAccountInfoResponse => ({\n code,\n message,\n data: null,\n});\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { SearchAccountInfoResponse, errorResponse, bjhConfigData } from \"./types\";\nimport { type SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { TimeFormatter } from \"../../utils\";\n\nexport async function getBaijiahaoData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n try {\n const { token } = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: String(token),\n Referer: \"https://baijiahao.baidu.com/builder/rc/home\",\n },\n });\n\n const yesterday = TimeFormatter.format(new Date().setDate(new Date().getDate() - 1), \"yyyyMMdd\");\n const [fansData, readData, incomeData, yesterdayData] = await Promise.all([\n http.api<{ data: { coreData: { fansCount: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/home/index\",\n }),\n http.api<{ data: { total: { view_count: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/statistic/getauthorhistory\",\n }),\n http.api<{ data: { all_income: { total_income: number; yesterday_income: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/income4/homepageincome\",\n }),\n http.api<{ data: { data: { recommend_count: number; view_count: number; likes_count: number; comment_count: number; fans_increase: number; } } }>({\n method: \"get\",\n url: `https://baijiahao.baidu.com/author/eco/statistics/appStatistic`,\n params: {\n type: \"all\",\n is_yesterday: false,\n start_day: yesterday,\n end_day: yesterday,\n stat: 0,\n },\n }),\n ]);\n\n const bjhData: bjhConfigData = {\n fansNum: fansData.data.coreData.fansCount,\n fansNumYesterday: yesterdayData.data.data.fans_increase == -1 ? null : yesterdayData.data.data.fans_increase,\n readNum: readData.data.total.view_count,\n incomeNum: incomeData.data.all_income.total_income,\n incomeNumYesterday: incomeData.data.all_income.yesterday_income == -1 ? null : incomeData.data.all_income.yesterday_income,\n recommendNumYesterday: yesterdayData.data.data.recommend_count == -1 ? null : yesterdayData.data.data.recommend_count,\n readNumYesterday: yesterdayData.data.data.view_count == -1 ? null : yesterdayData.data.data.view_count,\n likeNumYesterday: yesterdayData.data.data.likes_count == -1 ? null : yesterdayData.data.data.likes_count,\n commentNumYesterday: yesterdayData.data.data.comment_count == -1 ? null : yesterdayData.data.data.comment_count,\n };\n\n return success(bjhData, \"百家号平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号平台数据获取失败\");\n }\n}\n","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, ttConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\n\nexport async function getToutiaoData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {cookies} = params;\n try {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n const [totalData, contentDataYesterday] = await Promise.all([\n http.api<{\n data: {\n statistic: {\n data: {\n total_subscribe_count: string;\n total_read_play_count: string;\n total_income: number;\n yesterday_income: number;\n is_yesterday_income_ready: boolean;\n yesterday_fans?: string\n yesterday_play_count: string;\n yesterday_read_count: string;\n }\n }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/fe_api/home/merge_v2\",\n params: {app_id: 1231},\n }),\n http.api<{\n author_stat: {\n consume_data: { impression_count: number; go_detail_count: number; },\n interaction_data: { comment_count: number; digg_count: number; }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/statistic/v2/content_stat\",\n params: {type: 0, app_id: 1231},\n }),\n ]);\n\n const isReday = totalData.data.statistic.data.yesterday_read_count !== undefined\n\n const ttData: ttConfigData = {\n fansNum: Number(totalData.data.statistic.data.total_subscribe_count),\n fansNumYesterday: totalData.data.statistic.data.yesterday_fans !== undefined ? Number(totalData.data.statistic.data.yesterday_fans) : null,\n readNum: Number(totalData.data.statistic.data.total_read_play_count),\n incomeNum: totalData.data.statistic.data.total_income,\n incomeNumYesterday: totalData.data.statistic.data.is_yesterday_income_ready ? totalData.data.statistic.data.yesterday_income : null,\n showNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.impression_count: null,\n readNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.go_detail_count : null,\n likeNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.digg_count: null,\n commentNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.comment_count: null,\n };\n\n return success(ttData, \"头条号粉丝数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号数据获取失败\");\n }\n\n}","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, wxConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {TimeFormatter} from \"../../utils\";\n\nexport async function getWeixinData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {token} = params;\n\n if (!token) return {code: 200, message: \"缺少token\", data: null};\n\n try {\n const {token} = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n const userInfo = {\n originalCount: 0,\n totalUsers: 0,\n userIncrease: 0,\n yesterday: {\n read: 0,\n share: 0,\n subscribe: 0\n }\n };\n const userInfoHtml = await http.api<string>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/home\",\n params: {\n t: \"home/index\",\n token,\n lang: \"zh_CN\"\n },\n })\n\n // 提取原创内容(兼容属性、换行)\n const originalMatch = userInfoHtml.trim().match(/原创内容[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (originalMatch) userInfo.originalCount = parseInt(originalMatch[1].replace(/,/g, ''), 10);\n\n // 提取总用户数(兼容属性、空格)\n const totalUsersMatch = userInfoHtml.match(/总用户数[\\s\\S]*?<div[^>]*class=[\"']weui-desktop-user_sum[\"'][^>]*>[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (totalUsersMatch) userInfo.totalUsers = parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);\n\n // 提取用户增长(支持正负号、带属性)\n const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\\s*([+-]?)\\s*<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (increaseMatch) {\n const sign = increaseMatch[1] === '-' ? -1 : 1;\n userInfo.userIncrease = sign * parseInt(increaseMatch[2].replace(/,/g, ''), 10);\n }\n\n // 昨日阅读\n const readMatch = userInfoHtml.match(/昨日阅读[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (readMatch) userInfo.yesterday.read = parseInt(readMatch[1].replace(/,/g, ''), 10);\n\n // 昨日分享\n const shareMatch = userInfoHtml.match(/昨日分享[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (shareMatch) userInfo.yesterday.share = parseInt(shareMatch[1].replace(/,/g, ''), 10);\n\n // 昨日新增关注\n const subscribeMatch = userInfoHtml.match(/昨日新增关注[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (subscribeMatch) userInfo.yesterday.subscribe = parseInt(subscribeMatch[1].replace(/,/g, ''), 10);\n\n const wxData: wxConfigData = {\n fansNum: userInfo.totalUsers,\n fansNumYesterday: userInfo.yesterday.subscribe,\n readNumYesterday: userInfo.yesterday.read,\n shareNumYesterday: userInfo.yesterday.share,\n };\n\n return success(wxData, \"微信平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"微信平台数据获取失败\");\n }\n}","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { SearchAccountInfoResponse, errorResponse, xhsConfigData } from \"./types\";\nimport { type SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { XsEncrypt } from \"../../utils/xhsXsEncrypt\";\n\nexport async function getXiaohongshuData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n\n try {\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return errorResponse(\"账号数据异常,请重新绑定账号后重试。\", 200);\n }\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n\n const xsEncrypt = new XsEncrypt();\n const xt = Date.now().toString();\n const sevenDataUrl = \"/api/galaxy/v2/creator/datacenter/account/base\";\n const xs = await xsEncrypt.encryptXs(sevenDataUrl, a1Cookie, xt);\n\n const [overAllData, sevenData] = await Promise.all([\n http.api<{ data: { fans_count: number; faved_count: number; } }>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n }),\n http.api<{ data: { seven: { view_count: number; like_count: number; collect_count: number; comment_count: number; rise_fans_count: number; rise_fans_list: { data: number; count: number; }[] } } }>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: sevenDataUrl,\n headers: { \"x-s\": xs, \"x-t\": xt },\n }),\n ]);\n\n const xhsData: xhsConfigData = {\n fansNum: overAllData.data.fans_count,\n favedNum: overAllData.data.faved_count,\n watchNumLastWeek: sevenData.data.seven.view_count,\n likeNumLastWeek: sevenData.data.seven.like_count,\n collectNumLastWeek: sevenData.data.seven.collect_count,\n commentNumLastWeek: sevenData.data.seven.comment_count,\n fansNumLastWeek: sevenData.data.seven.rise_fans_count,\n fansNumYesterday: sevenData.data.seven.rise_fans_list[0].count\n };\n\n return success(xhsData, \"小红书平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书平台数据获取失败\");\n }\n}","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { ttConfigData, xhsConfigData, wxConfigData, bjhConfigData } from \"./types\";\nimport { getBaijiahaoData } from \"./getBjhInfo\";\nimport { getToutiaoData } from \"./getTTInfo\";\nimport { getWeixinData } from \"./getWxInfo\";\nimport { getXiaohongshuData } from \"./getXhsInfo\";\n\nexport interface SearchAccountInfoParams extends ActiomCommonParams {\n token?: string | number;\n platform: string;\n}\n\nexport const SearchAccountInfo: CommonAction<\nSearchAccountInfoParams,\nttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null\n> = async (_task, params) => {\n const { platform } = params;\n switch (platform) {\n case \"toutiao\":\n return getToutiaoData(params);\n case \"xiaohongshu\":\n return getXiaohongshuData(params);\n case \"weixin\":\n return getWeixinData(params);\n case \"baijiahao\":\n return getBaijiahaoData(params);\n default:\n return success(null, \"暂不支持该平台\");\n }\n};","\n// 文章公共属性\ninterface BaseArticle {\n title: string; // 文章标题\n imageUrl: string; // 图片地址\n createTime: number; // 发布时间\n redirectUrl: string; // 文章网页端地址\n originalData?: any; // 原始数据,可选\n}\n\n// 平台特定文章属性\nexport interface ToutiaoArticle extends BaseArticle {\n showNum: number; // 展现量\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n}\n\nexport interface WeixinArticle extends BaseArticle {\n readNum: number; // 阅读人数\n likeNum: number; // 点赞人数\n shareNum: number; // 分享人数\n recommendNum: number; // 推荐人数\n}\n\nexport interface BaijiahaoArticle extends BaseArticle {\n recommendNum: number; // 推荐量\n collectNum: number; // 收藏量\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n shareNum: number; // 转发量\n}\n\nexport interface XiaohongshuArticle extends BaseArticle {\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n collectNum: number; // 收藏量\n shareNum: number; // 转发量\n}\n\n// 响应数据类型\nexport interface FetchArticlesData {\n articleCell?: (ToutiaoArticle | WeixinArticle | BaijiahaoArticle | XiaohongshuArticle)[];\n pagination?: {\n total?: number; // 总条数\n nextPage?: boolean; // 是否有下一页\n lastPage?: number; // 用于维系游标所在页,提高查询速度\n cursor?: number; // 返回最终游标\n pageNum: number; // 当前页\n pageSize: number; // 每页大小\n };\n}\n\nexport interface FetchArticlesResponse {\n code: number;\n message: string;\n data: FetchArticlesData | null\n}\n\nexport const errorResponse = (\n message: string,\n code: number = 500\n): FetchArticlesResponse => ({\n code,\n message,\n data: null,\n});\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, ToutiaoArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleResponse {\n itemCell: {\n actionCtrl: Record<string, unknown>;\n cellCtrl: {\n articleImageType: number;\n dspStyle: null | string;\n };\n extra: {\n answer_count: string;\n origin_content: string;\n };\n logPB: string;\n articleBase: {\n createTime: number;\n itemStatus: number;\n articleURL: string;\n displayFlags: string;\n gidStr: string;\n subTitle: string | null;\n title: string;\n abstractText: string;\n content: string;\n displayURL: string;\n groupID: number;\n publishTime: number;\n schema: string;\n visibilityLevel: number;\n };\n articleClassification: {\n bizTag: number;\n groupSource: number;\n isOriginal: boolean;\n isStick: boolean;\n isSubject: boolean;\n articleSubType: number;\n articleType: number;\n bizID: number;\n };\n containsElements: {\n hasImage: boolean;\n hasVideo: boolean;\n };\n imageList: {\n staggerFeedCover: ImageInfo[];\n thumbImageList: ImageInfo[];\n };\n itemCounter: {\n readCount: number;\n repinCount: number;\n showCount: number;\n videoWatchCount: number;\n commentCount: number;\n diggCount: number;\n };\n richContentInfo: {\n richContent: string;\n titleRichSpan: string;\n };\n shareInfo: {\n shareURL: string;\n };\n userInfo: {\n avatarURL: string;\n name: string;\n userID: number;\n };\n };\n}\n\ninterface ImageInfo {\n width: number;\n height: number;\n uri: string;\n url: string;\n}\nexport async function handleToutiaoData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n\n const visitedUid = await http.api<{ user_id_str: string }>({\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?\",\n method: \"get\",\n params: { app_id: 1231 },\n })\n\n const articleInfo = await http.api<{ data: { assembleCell: ArticleResponse }[], total_number: number; api_base_info: { app_extra_params: string } }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/api/feed/mp_provider/v1/\",\n params: {\n provider_type: \"mp_provider\",\n aid: \"13\",\n app_name: \"news_article\",\n category: \"mp_all\",\n channel: \"\",\n stream_api_version: \"88\",\n genre_type_switch: '{\"repost\":1,\"small_video\":1,\"toutiao_graphic\":1,\"weitoutiao\":1,\"xigua_video\":1}',\n device_platform: \"pc\",\n platform_id: \"0\",\n visited_uid: visitedUid.user_id_str,\n offset: (pageNum - 1) * pageSize,\n count: pageSize,\n keyword: \"\",\n client_extra_params: `{\"category\":\"mp_all\",\"real_app_id\":\"1231\",\"need_forward\":\"true\",\"offset_mode\":\"1\",\"page_index\":\"1\",\"status\":${onlySuccess ? \"2\" : \"8\"},\"source\":\"0\"}`,\n app_id: \"1231\"\n },\n });\n\n const articleCell: ToutiaoArticle[] = articleInfo.data.map((item) => ({\n title: item.assembleCell.itemCell.articleBase.title,\n imageUrl: item.assembleCell.itemCell.imageList.staggerFeedCover[0].url,\n createTime: item.assembleCell.itemCell.articleBase.publishTime,\n redirectUrl: item.assembleCell.itemCell.articleBase.articleURL,\n showNum: item.assembleCell.itemCell.itemCounter.showCount,\n readNum: item.assembleCell.itemCell.itemCounter.readCount,\n likeNum: item.assembleCell.itemCell.itemCounter.diggCount,\n commentNum: item.assembleCell.itemCell.itemCounter.commentCount,\n ...(showOriginalData ? {\n originalData: item,\n // articleStates: item.assembleCell.itemCell.articleBase.itemStatus == 20 ? 1: item.assembleCell.itemCell.articleBase.itemStatus == 10? 5 : ; // 文章状态:1发布成功,4发布失败,5审核中,7已过期\n } : {}),\n }));\n const api_base_info_json: { total_count: number } = JSON.parse(articleInfo.api_base_info.app_extra_params)\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: api_base_info_json.total_count,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"头条号文章文章获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号文章数据获取失败\");\n }\n}","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {Http} from \"../../utils/http\";\nimport {FetchArticlesResponse, errorResponse, WeixinArticle} from \"./types\";\nimport {type FetchArticlesParams} from \".\"\nimport {it} from \"vitest\";\n\ninterface PublishInfo {\n type: number;\n msgid: number;\n sent_result: {\n reject_index_list: any[];\n };\n appmsg_info: Array<{\n share_type: number;\n appmsgid: number;\n content_url: string;\n title: string;\n is_deleted: boolean;\n copyright_status: number;\n copyright_type: number;\n read_num: number;\n like_num: number;\n comment_id: string;\n is_comment_enable: boolean;\n comment_num: number;\n vote_id: any[];\n super_vote_id: any[];\n cover: string;\n smart_product: number;\n modify_status: number;\n appmsg_like_type: number;\n can_delete_status: number;\n old_like_num: number;\n itemidx: number;\n is_pay_subscribe: number;\n is_from_transfer: number;\n public_tag_info: {\n public_tag_list: any[];\n modify_times: number;\n init_tag_list_size: number;\n };\n appmsg_album_info: {\n appmsg_album_infos: any[];\n };\n digest: string;\n is_cooling_article: number;\n pic_cdn_url_235_1: string;\n pic_cdn_url_16_9: string;\n pic_cdn_url_3_4: string;\n pic_cdn_url_1_1: string;\n disable_recommend: number;\n line_info: {\n use_line: number;\n line_count: number;\n send_time: number;\n is_appmsg_flag: number;\n is_use_flag: number;\n };\n claim_source_type: number;\n share_num: number;\n is_rumor_refutation: number;\n segment_comment_id: string;\n is_segment_comment_enable: boolean;\n multi_picture_cover: number;\n share_imageinfo: any[];\n moment_like_num: number;\n item_show_type: number;\n }>;\n appmsgex: any[];\n copy_appmsg_id: number;\n new_publish: number;\n}\n\ninterface BasePublishItem<T = string> {\n publish_type: number;\n publish_info: T;\n}\n\ninterface BaseParsedPublishPage<T = string> {\n total_count: number;\n publish_count: number;\n masssend_count: number;\n publish_list: BasePublishItem<T>[];\n featured_count: number;\n}\n\n\ntype ParsedPublishPage = BaseParsedPublishPage<PublishInfo>;\n\n\nexport async function handleWeixinData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n token,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n cursor,\n lastPage,\n } = params;\n if (!token) return {code: 200, message: \"缺少token\", data: null};\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n },\n });\n\n const ParsePublishPage = (body: string): ParsedPublishPage => {\n\n const match = body.match(/publish_page\\s*=\\s*({[\\s\\S]*?});/);\n if (!match) {\n throw new Error('无法提取 publish_page 字段');\n }\n\n let parsedData = JSON.parse(match[1]);\n\n // HTML 实体解码函数\n const decodeEntities = function (str: string, decode: boolean = false) {\n const encodeMap = [\"&\", \"&\", \"<\", \"<\", \">\", \">\", \" \", \" \", '\"', \""\", \"'\", \"'\"];\n const decodeMap = [\"'\", \"'\", \""\", '\"', \" \", \" \", \">\", \">\", \"<\", \"<\", \"&\", \"&\", \"<\", \"<\", \">\", \">\"];\n const map = decode ? decodeMap : encodeMap;\n\n let result = str;\n for (let i = 0; i < map.length; i += 2) {\n result = result.replace(new RegExp(map[i], \"g\"), map[i + 1]);\n }\n return result;\n };\n\n const finalData = {\n ...parsedData,\n publish_list: parsedData.publish_list.map((item: { publish_info: string; publish_type: number; }) => {\n const decoded = decodeEntities(item.publish_info, true);\n const parsedInfo = JSON.parse(decoded);\n return {\n publish_type: item.publish_type,\n publish_info: parsedInfo,\n };\n }),\n };\n\n return finalData;\n };\n\n async function fetchArticles(\n begin: number,\n pageSize: number,\n token: string | number,\n ): Promise<string> {\n return http.api<string>({\n method: \"get\",\n url: 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish',\n params: {\n sub: \"list\",\n begin: begin,\n count: pageSize,\n token: token,\n lang: \"zh_CN\"\n }\n });\n }\n\n let size = onlySuccess ? 10 : pageSize > 20 ? 20 : pageSize;\n let begin = (lastPage ?? pageNum) - 1; // 转换为 0-based index\n let rawArticlesInfo = await fetchArticles(begin * size, size, token);\n let articlesInfo = ParsePublishPage(rawArticlesInfo);\n let articleCell: WeixinArticle[] = [];\n\n if (!onlySuccess && pageSize > 20) {\n let totalFetched = articlesInfo.publish_list.length;\n let nextPage = pageNum + 1;\n\n while (totalFetched < pageSize) {\n const remaining = pageSize - totalFetched;\n const currentPageSize = remaining > 20 ? 20 : remaining;\n\n let _rawArticlesInfo = await fetchArticles((nextPage - 1) * 20, currentPageSize, token);\n let parsed = ParsePublishPage(_rawArticlesInfo);\n\n articlesInfo.publish_list = articlesInfo.publish_list.concat(parsed.publish_list);\n totalFetched = articlesInfo.publish_list.length;\n\n if (parsed.publish_list.length < currentPageSize) break;\n nextPage++;\n }\n }\n\n let nextPage = false;\n if (onlySuccess) {\n let filteredList = articlesInfo.publish_list\n .filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1)\n .map((item) => item.publish_info);\n\n if (cursor) {\n const cursorIndex = filteredList.findIndex((item) => item.msgid === cursor);\n if (cursorIndex !== -1) filteredList = filteredList.slice(cursorIndex + 1);\n }\n\n let totalFetched = filteredList.length;\n\n while (totalFetched < pageSize && begin * size < articlesInfo.total_count) {\n begin += 1; // 页数递增\n let nextRawArticlesInfo = await fetchArticles(begin * size, size, token);\n let nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n const newFiltered = nextArticlesInfo.publish_list\n .filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1)\n .map((item) => item.publish_info);\n filteredList = filteredList.concat(newFiltered);\n totalFetched = filteredList.length;\n }\n\n filteredList = filteredList.slice(0, pageSize);\n totalFetched = filteredList.length;\n\n if (totalFetched >= pageSize && begin * size < articlesInfo.total_count) {\n let nextRawArticlesInfo = await fetchArticles((begin + 1) * size, size, token);\n let nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n nextPage = nextArticlesInfo.publish_list.length > 0 && nextArticlesInfo.publish_list.some((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1);\n }\n\n const lastMsgId = filteredList.length > 0 ? filteredList[filteredList.length - 1].msgid : undefined;\n articleCell = filteredList.map((item) => ({\n title: item.appmsg_info[0].title,\n imageUrl: item.appmsg_info[0].cover,\n createTime: item.appmsg_info[0].line_info.send_time,\n redirectUrl: item.appmsg_info[0].content_url,\n readNum: item.appmsg_info[0].read_num,\n likeNum: item.appmsg_info[0].old_like_num,\n shareNum: item.appmsg_info[0].share_num,\n recommendNum: item.appmsg_info[0].like_num,\n ...(showOriginalData ? {originalData: item} : {}),\n }));\n\n return success(\n {\n articleCell,\n pagination: {\n nextPage,\n pageNum,\n pageSize,\n lastPage: begin + 1, // 返回当前页数\n cursor: lastMsgId, // 返回最后一条的 msgid\n }\n },\n \"微信文章文章获取成功\"\n );\n }\n\n articleCell = articlesInfo.publish_list.map((item) => ({\n title: item.publish_info.appmsg_info[0].title,\n imageUrl: item.publish_info.appmsg_info[0].cover,\n createTime: item.publish_info.appmsg_info[0].line_info.send_time,\n redirectUrl: item.publish_info.appmsg_info[0].content_url,\n readNum: item.publish_info.appmsg_info[0].read_num,\n likeNum: item.publish_info.appmsg_info[0].old_like_num,\n shareNum: item.publish_info.appmsg_info[0].share_num,\n recommendNum: item.publish_info.appmsg_info[0].like_num,\n ...(showOriginalData ? {originalData: item} : {}),\n }));\n return success(\n {\n articleCell,\n },\n \"微信文章文章获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"微信文章数据获取失败\");\n }\n}\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, BaijiahaoArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleInfo {\n abstract: string;\n antispam_code: number;\n app_id: string;\n article_id: string;\n article_set_nids: string;\n audit_msg: string;\n authentication_type: string;\n auto_generate_id: string;\n bad_status: string;\n bjh_ext_info: string;\n bjh_video_finger_printing: string;\n call_slot: number;\n commit_at: string;\n cover_images: string;\n cover_layout: string;\n created_at: string;\n creative_method: string;\n deleted_at: string;\n displaytype_exinfo: string;\n domain: string;\n dst_status: string;\n ext_info: string;\n feed_cat: string;\n feed_id: string;\n feed_id_from: number;\n feed_push_amount: number;\n feed_rs: string;\n feed_source_id: string;\n feed_sub_cat: string;\n file_name: string;\n first_exclusive_publish: number;\n first_storage_time: number;\n has_edited_times: number;\n is_authenticated: number;\n is_feed_import: number;\n is_good: number;\n is_pay: number;\n is_published: number;\n is_reported: number;\n is_tagged: number;\n is_wx_spread: number;\n issue_status: number;\n midway_issue_status: number;\n mount_goods: number;\n mthvideo: number;\n news_mount: any[];\n nid: string;\n open_comment: number;\n open_front_page: number;\n origin_app_id: string;\n origin_id: string;\n origin_url: string;\n original_status: number;\n pay_money: number;\n platform_source: number;\n provider: string;\n publish_at: string;\n publish_time: string;\n publish_type: string;\n quality: number;\n quality_audit_type: string;\n quality_not_pass_reason: string;\n quality_status: string;\n res_slot: string;\n secure_not_pass_reason: string;\n secure_status: string;\n shoubai_c_articleid: string;\n smp_url: string;\n source_name: string;\n source_reprinted_allow: number;\n source_reprinted_astrict: string;\n source_type: string;\n status: string;\n sub_status_id: number;\n subtitle: string;\n tag: string;\n tag_detail: string;\n title: string;\n top_end: number;\n top_st: number;\n tp_id: string;\n transform_id: string;\n trigger_odyssey: number;\n type: string;\n updated_at: string;\n url: string;\n vertical_cover: string;\n video_sub_type: number;\n video_tag: string;\n weixin_import_type: number;\n id: string;\n goods_list: any[];\n certify_url: string;\n timer_time: number;\n similar_article_id: string;\n article_push_audit_res: number;\n withdraw_status: {\n withdraw_msg: string;\n has_withdraw_times: {\n news: number;\n };\n can_withdraw: number;\n };\n modify_status: {\n edit_msg: string;\n can_edit: number;\n };\n delete_status: {\n delete_msg: string;\n can_delete: number;\n };\n recover_status: {\n recover_msg: string;\n can_recover: number;\n };\n activity_list: any[];\n can_edit_goods: number;\n recomm_status: {\n can_recomm: number;\n };\n dxxFinalAuditResult: string;\n read_amount: number;\n read_num: number;\n forward_num: number;\n praise_num: number;\n comment_num: number;\n rec_amount: number;\n comment_amount: number;\n share_amount: number;\n like_amount: number;\n collection_amount: number;\n profit: number;\n is_rec: number;\n activity_ids: any[];\n solicit_info: {\n tag: string | null;\n point: string | null;\n inspire: string | null;\n };\n group_can_share: number;\n group_already_shared: number;\n show_selected_comment_option: number;\n show_ai_intro: number;\n flow_invest_status: number;\n flow_invest_msg: string;\n package_invest_status: number;\n can_only_modify_goods: number;\n audit_msg_color: string;\n audit_msg_icon: string;\n playlet_pay2free_switch: number;\n audit_type_v0: string;\n is_ridewind: string;\n is_show_adding: string;\n is_show_add_view: string;\n add_view_count: string;\n coupons_add_view_count: string;\n platform_add_view_count: string;\n rec_count: number;\n share_url: string;\n v_type: number;\n v_intro: string;\n duration: number | null;\n video_num: number;\n};\n\ntype ArticleApiResponse = {\n data: {\n list: ArticleInfo[];\n page: {\n currentPage: number;\n pageSize: number;\n totalCount: number;\n totalPage: number;\n };\n };\n\n};\n\nexport async function handleBaijiahaoData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n token,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n if (!token) return { code: 200, message: \"缺少token\", data: null };\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: token\n },\n });\n\n async function fetchArticles(\n pageNum: number,\n pageSize: number,\n onlySuccess: boolean = false\n ): Promise<ArticleApiResponse> {\n return await http.api<ArticleApiResponse>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/article/lists\",\n params: {\n currentPage: pageNum,\n pageSize: pageSize,\n search: \"\",\n type: \"\",\n collection: onlySuccess ? \"publish\" : \"\",\n clearBeforeFetch: false,\n dynamic: 1,\n },\n });\n };\n\n\n const articleInfo = await fetchArticles(pageNum, pageSize, onlySuccess);\n let filtered = articleInfo.data.list.filter(item => item.status !== \"draft\");\n const totalPage = articleInfo.data.page?.totalPage || 1;\n\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && currentPage <= totalPage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, pageSize, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.list.filter(item => item.status !== \"draft\");\n filtered.push(...validItems);\n\n currentPage++;\n }\n\n // 截取前 pageSize 条返回\n const final = filtered.slice(0, pageSize);\n\n // 转换结构\n const articleCell: BaijiahaoArticle[] = final.map((item) => ({\n title: item.title,\n imageUrl: JSON.parse(item.cover_images)[0].src,\n createTime: Math.floor(new Date(item.publish_at.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: item.url,\n recommendNum: item.rec_amount | item.forward_num,\n collectNum: item.collection_amount,\n readNum: item.read_amount | item.read_num,\n likeNum: item.like_amount | item.praise_num,\n commentNum: item.comment_amount | item.comment_num,\n shareNum: item.share_amount,\n ...(showOriginalData ? { originalData: item } : {}),\n }));\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: articleInfo.data.page?.totalCount,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"百家号文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号文章数据获取失败\");\n }\n}\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, XiaohongshuArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\nimport { XsEncrypt } from \"../../utils/xhsXsEncrypt\";\n\ninterface Note {\n id: string;\n sticky: boolean;\n schedule_post_time: number;\n comments_count: number;\n tab_status: number;\n display_title: string;\n time: string;\n view_count: number;\n shared_count: number;\n images_list: {\n url: string;\n }[];\n permission_code: number;\n permission_msg: string;\n level: number;\n xsec_token: string;\n xsec_source: string;\n type: string;\n likes: number;\n collected_count: number;\n goods_info: {\n goods_name: string[];\n };\n}\ntype ArticleApiResponse = {\n data: {\n notes: Note[];\n page: number;\n tags: {\n notes_count: number;\n }[]\n }\n\n}\nexport async function handleXiaohongshuData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try{\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n const xsEncrypt = new XsEncrypt();\n const a1Cookie = cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return { code: 200, message: \"账号数据异常\", data: null };\n if (onlySuccess && pageSize != 10) return { code: 200, message: \"小红书pageSize不可修改\", data: null };\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n\n async function fetchArticles(\n pageNum: number,\n a1Cookie: string,\n onlySuccess: boolean = false\n ): Promise<ArticleApiResponse> {\n const xt = Date.now().toString();\n const serveUrl = `/web_api/sns/v5/creator/note/user/posted?tab=${onlySuccess ? 1 : 0}&page=${pageNum - 1}`;\n const xs = await xsEncrypt.encryptXs(serveUrl, a1Cookie, xt);\n return await http.api<ArticleApiResponse>({\n method: \"get\",\n baseURL: \"https://edith.xiaohongshu.com\",\n url: serveUrl,\n headers: { \"x-s\": xs, \"x-t\": xt },\n });\n };\n const articleInfo = await fetchArticles(pageNum, a1Cookie, onlySuccess)\n\n let hasNextpage = articleInfo.data.page != -1;\n let filtered = articleInfo.data.notes;\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && hasNextpage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, a1Cookie, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.notes\n filtered.push(...validItems);\n\n currentPage++;\n hasNextpage = res.data.page != -1;\n }\n\n const final = filtered.slice(0, pageSize);\n const articleCell: XiaohongshuArticle[] = final.map((item) => ({\n title: item.display_title,\n imageUrl: item.images_list[0].url,\n createTime: Math.floor(new Date(item.time.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: `https://www.xiaohongshu.com/explore/${item.id}?xsec_token=${item.xsec_token}&xsec_source=pc_creatormng`,\n readNum: item.view_count,\n likeNum: item.likes,\n commentNum: item.comments_count,\n collectNum: item.collected_count,\n shareNum: item.shared_count,\n // articleStates: item.status,\n ...(showOriginalData ? { originalData: item } : {}),\n }));\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n nextPage: hasNextpage,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"小红书文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书文章数据获取失败\");\n }\n\n}\n","// @ts-ignore\nimport { success, type CommonAction } from \"@iflyrpa/share\";\nimport { FetchArticlesData } from \"./types\";\nimport { handleToutiaoData } from \"./handleTTData\";\nimport { handleWeixinData } from \"./handleWXData\";\nimport { handleBaijiahaoData } from \"./handleBjhData\";\nimport { handleXiaohongshuData } from \"./handleXhsData\";\nimport type { ActiomCommonParams } from \"../../types\";\n\n// 请求参数接口\nexport interface FetchArticlesParams extends ActiomCommonParams {\n platform: string; // 社交平台:weixin, toutiao, baijiahao, xiaohongshu\n token?: string | number; // 微信和百家号需要\n pageNum?: number; // 当前页,默认1\n pageSize?: number; // 每页大小,默认10\n size?: number; // 获取前多少篇文章(不含草稿),默认获取全部\n onlySuccess?: boolean; // 是否仅获取发布成功的文章,默认false\n showOriginalData?: boolean; // 是否展示原始数据,默认false\n cursor?: number; // 仅用于微信分页游标,默认为空\n lastPage?: number;\n }\n\nexport const FetchArticles: CommonAction<FetchArticlesParams, FetchArticlesData | null> = async (_task, params) => {\n const { platform } = params;\n switch (platform) {\n case \"toutiao\":\n return handleToutiaoData(params);\n case \"weixin\":\n return handleWeixinData(params);\n case \"baijiahao\":\n return handleBaijiahaoData(params);\n case \"xiaohongshu\":\n return handleXiaohongshuData(params);\n default:\n return success(null, \"暂不支持该平台\");\n }\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetWeixinConfigParams extends ActiomCommonParams {\n\ttoken: string | number;\n}\n\ninterface QuotaDetail {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\ninterface QuotaDetailResponse {\n\tbase_resp: { err_msg: string ,ret: number },\n\tquota_detail_list: { quota_item_list: QuotaDetail, quota_type: string }[];\n}\n\n\nexport interface ConfigData {\n\tpublishQuota: QuotaDetail[];\n}\n\nexport type PublishAction = CommonAction<GetWeixinConfigParams, ConfigData>;\n\nexport const getWeixinConfig: PublishAction = async (_task, params) => {\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n\tconst res = await http.api<QuotaDetailResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\tparams: {\n\t\t\tf: 'json',\n\t\t\ttoken: params.token,\n\t\t\tlang: 'zh_CN',\n\t\t\tajax: 1,\n\t\t\tfingerprint: fingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t},\n\t});\n\tconst filtered = {\n\t\tpublishQuota : res.base_resp.ret === 0? res.quota_detail_list\n\t\t.filter(item => item.quota_type === \"kQuotaTypeMassSendNormal\")\n\t\t.map(item => item.quota_item_list): [],\n\t}\n\treturn success(filtered, res.base_resp.ret === 0 ? \"微信配置信息获取成功!\" : \"微信配置信息获取失败!\");\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { Http } from \"../../utils/http\"\n\nimport type { PublishAction } from \".\";\nimport type { Toutiao } from \"../../types\";\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.toutiao.com\",\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\t// 0. 校验登录\n\tconst userInfoRes = await http.api<{ code: number }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n });\n\n\tif (userInfoRes.code !== 0) {\n return { code: 0, message: \"登录失效\", data: userInfoRes };\n\t}\n\n\t// 1. 上传图片\n\tconst imageList: string[] = [];\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst res = await Promise.all(\n\t\t\timages.map(async (it) => {\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(it));\n\n\t\t\t\tconst response = await http.api<{ data: Toutiao.ImageData }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020003&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\n\t\timageList.push(...res.map((it) => it.image_uri));\n\t}\n\n\t// 2. 构造发布数据\n\tconst extra = {\n\t\tadd_music_to_article_flag: \"0\", // 开启配乐\n\t\tclaim_exclusive: \"0\", // 原创&首发声明\n\t\ttuwen_wtt_trans_flag: \"0\",\n\t\tinfo_source: JSON.stringify({\n\t\t\tsource_type: 5,\n\t\t\tsource_author_uid: \"\",\n\t\t\ttime_format: \"\",\n\t\t\tposition: {},\n\t\t}),\n\t\tugc_position: JSON.stringify({\n\t\t\taddress: \"\",\n\t\t\tposition: \"合肥市\",\n\t\t\tcity: \"合肥市\",\n\t\t\tlongitude: 117.227289,\n\t\t\tlatitude: 31.82057,\n\t\t\tpoi_type_code: \"190104\",\n\t\t\tpoi_id: \"22535659123306003\",\n\t\t}),\n\t};\n\n\tconst syncData = {\n\t\tcontent: params.content, // 正文,\n\t\timage_list: imageList, // 图片列表\n\t\tis_fans_article: 2,\n\t\tpre_upload: 1,\n\t\twelfare_card: \"\",\n\t\textra: JSON.stringify(extra),\n\t};\n\n const res = await http.api<any>({\n method: \"post\",\n url: \"https://mp.toutiao.com/mp/agw/article/wtt\",\n data: syncData,\n });\n\n return success(res.data)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/weitoutiao/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-box\");\n\t} catch (error) {\n\t\treturn { code: 0, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 添加正文\n\tconst descInstance = page.locator(\".syl-editor .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 2. 添加图片\n\tif (params.banners && params.banners?.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.locator(\".toolbar .syl-toolbar-tool.weitoutiao-image-plugin\").click();\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer .footer button.byte-btn\").filter({ hasText: \"确定\" }).click();\n\t}\n\n\t// 滚动到底部\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\t// 3. 添加位置\n\tif (params.address) {\n\t\tconst addressFormItem = page.locator(\".img-form-wrap .form-item-wrap .form-item\").filter({ hasText: \"添加位置\" });\n\t\tawait addressFormItem.locator(\".byte-select\").click();\n\t\tawait addressFormItem.locator(\".byte-select-view-search input\").fill(params.address);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 4. 作品声明\n\tif (params.declaration) {\n\t\tconst declarationFormItem = page\n\t\t\t.locator(\".img-form-wrap .form-item-wrap .form-item\")\n\t\t\t.filter({ hasText: \"作品声明\" })\n\t\t\t.locator(\".source-info-wrap\");\n\t\tawait declarationFormItem.locator(`.byte-checkbox:has(input[value=\"${params.declaration}\"])`).click();\n\t}\n\n\t// 5. 发布\n\tawait page.locator(\".footer-wrap button.publish-content\").click();\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\n/**\n * 作品声明\n * 1:引用站内\n * 3:引用AI\n * 4:取材网络\n * 5:个人观点,仅供参考\n * 6:虚构演绎,故事经历\n * 7:投资观点,仅供参考\n * 8:健康医疗分享,仅供参考\n */\ntype DeclarationType = 1 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport interface WeitoutiaoPublishParams extends ActiomCommonParams {\n\tcontent: string;\n\tbanners?: string[];\n\taddress?: string;\n\tdeclaration?: DeclarationType;\n}\n\nexport type PublishAction = CommonAction<WeitoutiaoPublishParams>;\n\nexport const weitoutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","export const scanRetryMaxCount = 30;\n\nexport const QuotaType = {\n\tNormal: \"kQuotaTypeMassSendNormal\",\n\tProductActivity: \"kQuotaTypeMassSendProductActivity\",\n};\n\nexport interface QuotaItem {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\nexport interface QuotaDetail {\n\tquota_item_list: QuotaItem[];\n\tquota_type: string;\n}\n","import fs, { write } from \"node:fs\";\n// import https from \"node:https\";\nimport path from \"node:path\";\nimport { type ResponseData, downloadImage, getFilenameFromUrl, randomString, sleep, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { extractImgTag, getFileState, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport type { PublishAction, WeixinPublishParams , WxWhitelistUserInfo, WxInteraction} from \"./index\";\nimport { type QuotaDetail, QuotaType, scanRetryMaxCount } from \"./utils\";\nimport { match } from \"node:assert\";\n\ntype CommonResponse<T = unknown> = T & {\n\tbase_resp?: { err_msg: string; ret: number };\n};\n\nconst GET_QRCODE_DEFAULT_ERROR = \"二维码获取异常,请稍后重试。\";\n\nconst errnoMap: Record<number|string, string> = {\n\t200003: \"微信公众号号登录状态失效,请重新绑定账号后重试。\",\n\t420001: \"封面图不支持GIF,请更换后重试。\",\n\t200002: \"上传图片参数错误,请检查后重试。\",\n\t200039: \"上传图片高度(像素)与宽度(像素)的乘积不能超过600万,请更换后重试。\",\n\t153201: \"不支持发布审核中或转码中的视频\",\n\t200007: \"登陆失败,请重新登陆账户后重试。\",\n\t64703: \"摘要超出120字长度限制,请修改摘要后重试。\",\n\t\"-4\": \"不支持发布审核中或转码中的视频\",\n\t\"-2\": \"不支持发布审核中或转码中的视频\",\n \"-1\" :\"系统错误,请注意备份内容后重试\",\n\t770001: \"不支持发布审核中或转码中的视频\",\n\t200074: \"系统繁忙,请稍后重试!\",\n\t64702: \"标题超出64字长度限制,请修改标题后重试。\"\n};\n\n// 不需要直接抛出的异常码,如 154019\nconst ignoreErrno = [154019];\n\n// 用户互动类型表\nconst userTypeMap: Record<string, 1 | 2 | 3> = {\n\t\"所有用户\": 1,\n\t\"已关注的用户\": 2,\n\t\"已关注7天及以上的用户\": 3,\n };\n\nconst generatorFormData = (data: Record<string, unknown>) => {\n\tconst formData = new URLSearchParams();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, String(value));\n\t}\n\n\treturn formData.toString();\n};\n\nexport const checkCopyrightStat = async <T>(http: Http, params: WeixinPublishParams, data: Record<string, unknown>) => {\n\tlet resData: T;\n\n\ttry {\n\t\tresData = await http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\taction: \"get_appmsg_copyright_stat\",\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData(data),\n\t\t});\n\t} catch (error) {\n\t\tresData = (error as ResponseData)?.data;\n\t}\n\n\treturn resData;\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\tconst client_time_diff = Number(\"1743488763\") * 1 - Math.floor(new Date().getTime() / 1000);\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\t// 接口代理,特意保留,作为测试使用\n\t\t// httpsAgent: new https.Agent({\n\t\t// \trejectUnauthorized: false,\n\t\t// \thost: \"127.0.0.1\",\n\t\t// \tport: 9000,\n\t\t// }),\n\t\theaders: {\n\t\t\t\"User-Agent\":\n\t\t\t\t\"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\",\n\t\t\tCookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.weixin.qq.com\",\n\t\t\treferer: `https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&isNew=1&type=77&createType=0&token=${params.token}&lang=zh_CN×tamp=${Date.now()}`,\n\t\t},\n\t});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst responseData = response.data;\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n\n\t\t// 检查响应中的 errno 字段\n\t\tif (\n\t\t\tresponseData?.base_resp &&\n\t\t\tresponseData.base_resp.ret !== 0 &&\n\t\t\t!ignoreErrno.includes(responseData.base_resp.ret)\n\t\t) {\n\t\t\tconst errmsg =\n\t\t\t\terrnoMap[responseData.base_resp.ret] ||\n\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\tresponseData.base_resp.err_msg ||\n\t\t\t\t`文章${msgType}异常,请稍后重试。`;\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[responseData.base_resp.ret] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: responseData,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n\t\tparams: {\n\t\t\tfingerprint,\n\t\t\tsub: \"list\",\n\t\t\tbegin: 0,\n\t\t\tcount: 10,\n\t\t\tquery: \"\",\n\t\t\ttype: 101_1_102_103,\n\t\t\tshow_type: \"\",\n\t\t\tfree_publish_type: 1_102_103,\n\t\t\tsub_action: \"list_ex\",\n\t\t\tsearch_card: 0,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t},\n\t});\n\n\t// 1. 提取并上传正文中的图片\n\tconst uploadImages = async (images: string[]) => {\n\t\tconst cloudImages: Array<{ cdn_url: string; content: string }> = [];\n\n\t\t// 下载图片到本地\n\t\tconst localImages = await Promise.all(\n\t\t\timages.map((url) => {\n\t\t\t\tlet fileName = getFilenameFromUrl(url);\n let ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = localImages[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<(typeof cloudImages)[0]>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t\tdefaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n\t\t\t});\n\n\t\t\tcloudImages.push(response);\n\t\t}\n\n\t\treturn cloudImages;\n\t};\n\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].cdn_url;\n\t\t\tdom.attribs.class = \"rich_pass wxw-img js_insertlocalimg\";\n\t\t\tdom.attribs.style = \"\";\n\t\t}\n\t\treturn dom;\n\t});\n\n\t// 3. 上传封面图片\n\tconst coverRes = await uploadImages([params.settingInfo.wxCover]);\n\n\t// 4. 原创声明白名单有效性判断与生成转载白名单\n\tlet oriWhitelist = null;\n\n\tif (params.settingInfo?.wxCopyright && params.settingInfo?.wxWhitelist) {\n\t\tconst _oriWhitelist = params.settingInfo.wxWhitelist;\n\n\t\tif (_oriWhitelist && _oriWhitelist.length > 0) {\n\t\t\tconst white_list = [];\n\n\t\t\tconst white_list_user = {\n\t\t\t\tnickname: \"\",\n\t\t\t\ttitle: \"可修改文章\",\n\t\t\t\topenid: \"\",\n\t\t\t\twx_name: \"\",\n\t\t\t\tusername: \"\",\n\t\t\t\tavatar: \"\",\n\t\t\t\tcan_modify: \"1\",\n\t\t\t\tcan_hide_source: \"0\",\n\t\t\t\tcan_reward: \"0\",\n\t\t\t};\n\n\t\t\tfor (const _user of _oriWhitelist) {\n\t\t\t\tconst userInfo_res = await http.api<{ search_list: WxWhitelistUserInfo[] }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgcopyright?action=searchacct\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taction: \"searchacct\",\n\t\t\t\t\t},\n\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\tusername: _user,\n\t\t\t\t\t}),\n\t\t\t\t\tdefaultErrorMsg: \"搜索用户信息失败\",\n\t\t\t\t});\n\n\t\t\t\tif(userInfo_res.search_list.length>0){\n\t\t\t\t\tlet userInfo_resJson = userInfo_res.search_list[0];\n\t\t\t\t\twhite_list_user.nickname = userInfo_resJson.nickname;\n\t\t\t\t\twhite_list_user.openid = userInfo_resJson.openid;\n\t\t\t\t\twhite_list_user.avatar = userInfo_resJson.pic_url;\n\t\t\t\t\twhite_list_user.username = userInfo_resJson.username;\n\t\t\t\t\twhite_list_user.wx_name = userInfo_resJson.wx_name;\n\t\t\t\t\twhite_list.push({ ...white_list_user });\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 200, message: `白名单用户:${_user} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\t\t\toriWhitelist = white_list.length > 0 ? JSON.stringify({ \"white_list\" : white_list }) : \"\";\n\t\t}\n\t}\n\n\t// 5. 赞赏设置\n\tlet writerid = null;\n\tlet reply_id = null\n\tif (params.settingInfo.wxCopyright && params.settingInfo.wxRewardTarget){\n\t\tasync function getWriterList() {\n\t\t\tconst res = await http.api({\n\t\t\t method: \"get\",\n\t\t\t url: 'https://mp.weixin.qq.com/acct/writermgr',\n\t\t\t params: {\n\t\t\t\taction: 'get_writer_list',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t }\n\t\t\t});\n\n\t\t\treturn res.pageinfo.writerlist || [];\n\t\t }\n\n\t\t async function getRewardText(): Promise<{ text: string , reply_id: string}[]> {\n\t\t\tconst res = await http.api({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\tparams: {\n\t\t\t\taction: 'getautoreply',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn res.reply_infos;\n\t\t}\n\n\t\t//遍历绑定信息\n\t\tfor (var _type in params.settingInfo.wxRewardTarget){\n\t\t\tif (_type === \"author\"){\n\n\t\t\t\tif( (await getWriterList()).length == 0){\n\t\t\t\t\t// 获取二维码等待用户绑定\n\t\t\t\t\tconst rewardbind = await http.api({\n\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\taction: \"get_rewardbind_qrcode\",\n\t\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst rewardBuffer = Buffer.from(rewardbind.qrcode_base64, 'base64');\n\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\n\t\t\t\t\tconst task_id = rewardbind.task_id\n\n\t\t\t\t\tlet code = null\n\n\t\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\t\tawait sleep(2000);\n\n\t\t\t\t\t\tconst checkScanResult = await http.api<{ qrcode_status: number; }>({\n\t\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\taction: \"query_rewardbind_qrcode_status\",\n\t\t\t\t\t\t\t\ttask_id: task_id,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\ttimespam: Date.now(),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcode = checkScanResult.qrcode_status\n\n\t\t\t\t\t\tif ( code == 2 && (await getWriterList()).length > 0 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\t\t\t\t\treturn { code: 200, message: \"二维码已过期,请重试绑定。\", data: \"\" };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// 判断为赞赏作者\n\t\t\t\tlet _writer = await getWriterList()\n\t\t\t\tfor (var _writer_item of _writer){\n\t\t\t\t\tif (_writer_item.nickname === params.settingInfo.wxRewardTarget[_type]){\n\t\t\t\t\t\twriterid = _writer_item.writerid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!writerid){\n\t\t\t\t\t// 没找到作者id\n\t\t\t\t\treturn { code: 200, message: \"未匹配到赞赏绑定用户,请确认用户名与绑定是否正常!\", data: \"\" };\n\t\t\t\t}\n\n\t\t\t\tif (params.settingInfo?.wxRewardText){\n\t\t\t\t\t// 判断文案是否已添加\n\t\t\t\t\tlet rewardList = await getRewardText()\n\n\t\t\t\t\tlet matchdID = rewardList.find(\n\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t)?.reply_id ?? null;\n\n\t\t\t\t\tif (rewardList.length == 0 || !matchdID ){\n\t\t\t\t\t\tawait http.api({\n\t\t\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t \taction: 'addautoreply',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\t\t\ttype: 1,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttext: params.settingInfo.wxRewardText\n\t\t\t\t\t\t })\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treply_id = matchdID\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!matchdID) {\n\t\t\t\t\t\tfor (var _reply_item of (await getRewardText())){\n\t\t\t\t\t\t\treply_id = (await getRewardText()).find(\n\t\t\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t\t\t)?.reply_id ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!reply_id) {\n\t\t\t\t\t\t\treturn {code:200, message:\"赞赏文案添加失败,请重新检查\", data:\"\"}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}else if(_type === \"project\"){\n\t\t\t\t// 判断为公益捐赠\n\t\t\t}\n\t\t}\n\n\t}\n\t// 留言设置\n\tconst wxInteractionInfo = (() => {\n\t\tconst _wxInteraction = {\n\t\t\tneed_open_comment0: 0,\n\t\t\tonly_fans_can_comment0: 0,\n\t\t\tonly_fans_days_can_comment0: 0,\n\t\t\treply_flag0: 2,\n\t\t\tauto_elect_comment0: 0,\n\t\t\tauto_elect_reply0: 1,\n\t\t\topen_fansmsg0: 0\n\t\t};\n\n\t\tconst type = params?.settingInfo?.wxInteraction?.Type ?? \"\";\n\t\tif (type === \"public\") {\n\t\t\tconst _opt = params?.settingInfo?.wxInteraction?.Option;\n\t\t\tif (!_opt || !_opt.Comment || !_opt.reply || _opt.elect_comment == null || _opt.elect_reply == null) return null;\n\n\t\t\tconst commentType = userTypeMap[_opt.Comment];\n\t\t\tconst replyType = userTypeMap[_opt.reply] + 1;\n\n\t\t\t// 设置评论权限\n\t\t\t_wxInteraction.need_open_comment0 = 1;\n\t\t\tswitch (commentType) {\n\t\t\t\tcase 1:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 1;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// 设置回复权限等级\n\t\t\t_wxInteraction.reply_flag0 = replyType;\n\n\t\t\t// 精选功能\n\t\t\t_wxInteraction.auto_elect_comment0 = _opt.elect_comment ? userTypeMap[_opt.Comment] : 0;\n\t\t\t_wxInteraction.auto_elect_reply0 = _opt.elect_reply ? userTypeMap[_opt.reply] : 1;\n\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\tif (type === \"private\") {\n\t\t\t_wxInteraction.open_fansmsg0 = 1;\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\t// 其他未启用评论功能的情形\n\t\treturn _wxInteraction;\n\t})();\n\n\tif (!wxInteractionInfo) return { code: 200, message: \"互动参数设置错误,请检查参数设置!\", data: \"\" }\n\n\n\t// 4. 保存为草稿\n\tconst draftData = {\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\tcount: 1,\n\t\toperate_from: \"Chrome\",\n\t\tisnew: 0,\n\t\tarticlenum: 1,\n\t\tpre_timesend_set: 0,\n\t\tis_finder_video0: 0,\n\t\tfinder_draft_id0: 0,\n\t\tapplyori0: 0,\n\t\tcan_reward0: writerid ? 1 : 0,\n\t\tpay_gifts_count0: 0,\n\t\tis_video_recommend0: -1,\n\t\twriterid0: writerid ? writerid : 0,\n\t\tauto_gen_digest0: 0,\n\t\tlast_choose_cover_from0: 0,\n\t\tneed_open_comment0: wxInteractionInfo.need_open_comment0 ,\n\t\tonly_fans_can_comment0: wxInteractionInfo.only_fans_can_comment0,\n\t\tonly_fans_days_can_comment0: wxInteractionInfo.only_fans_days_can_comment0,\n\t\treply_flag0: wxInteractionInfo.reply_flag0,\n\t\tauto_elect_comment0: wxInteractionInfo.auto_elect_comment0,\n\t\tauto_elect_reply0: wxInteractionInfo.auto_elect_reply0,\n\t\treward_reply_id0:params.settingInfo?.wxRewardText? reply_id ? reply_id : 0 : 0,\n\t\tnot_pay_can_comment0: 0,\n\t\tdata_seq: 0,\n\t\tmsg_index_id0: \"\",\n\n\t\ttoken: params.token,\n\t\tAppMsgId: params.appMsgId || \"\",\n\t\ttitle0: params.title,\n\t\tauthor0: params?.settingInfo?.wxAuthor || \"\" ,\n\t\tdigest0: params?.settingInfo?.wxAbstract || \"\",\n\t\tcontent0: content || \"\",\n\t\tsourceurl0: params?.settingInfo?.wxOriginalText || \"\",\n\t\tcdn_url0: coverRes[0].cdn_url || \"\",\n\t\tcopyright_type0: params?.settingInfo?.wxCopyright? 1 : 0,\n\t\tallow_reprint0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tallow_reprint_modify0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tori_white_list0: params?.settingInfo?.wxCopyright? oriWhitelist: '',\n\t\topen_fansmsg0: wxInteractionInfo.open_fansmsg0,\n\t\tallow_fast_reprint0: params?.settingInfo?.wxQuickReprint ? 1 : 0,\n\t\tdisable_recommend0: params?.settingInfo?.wxNotAllowRecommend ? 1 : 0,\n\t\tclaim_source_type0: params?.settingInfo?.wxCreationSource?.[0] || \"\",\n\n\t\tmasssend_check: 1,\n\t\tis_masssend: 1,\n\t};\n \n task._timerRecord['PrePublish']= Date.now();\n\n\tconst { appMsgId } = await http.api<{ appMsgId: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"create\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData(draftData),\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t});\n\n\t// 如果只需要保存为草稿,直接返回 appMsgId\n\tif (params.saveType === \"draft\") {\n\t\treturn { code: 0, data: appMsgId, message: \"微信公众号保存草稿成功。\" };\n\t}\n\n\tconst masssendpage = () => {\n\t\treturn http.api<CommonResponse<{ operation_seq: string; quota_detail_list: QuotaDetail[] }>>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tpreview_appmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t},\n\t\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t\t});\n\t};\n\n\t// 4. 预览\n\tlet massSendRes = await masssendpage();\n\t// 判断是否需要同意群发声明\n\tif (massSendRes.base_resp?.ret === 154019) {\n\t\ttask.logger.info(\"需要同意群发声明\");\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/setprotocolsign\",\n\t\t\tparams: {\n\t\t\t\tcgi: \"setprotocolsign\",\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttoken: params.token,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\tissigned: 1,\n\t\t\t}),\n\t\t});\n\t\tmassSendRes = await masssendpage();\n\t}\n\n\t// 判断是否还有群发次数\n\tconst { operation_seq, quota_detail_list = [] } = massSendRes;\n\n\t// 群发时需要判断是否还有群发次数\n\tif (params.masssend) {\n\t\tconst quotaDetail = quota_detail_list.find((it) => it.quota_type === QuotaType.Normal);\n\t\tif (!quotaDetail?.quota_item_list[0]?.quota) {\n\t\t\treturn { code: 200, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\tt: \"ajax-response\",\n\t\t\t\tfor_check: 1,\n\t\t\t\tis_release_publish_page: 1,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\tappmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t}),\n\t\t});\n\t}\n\n\t// check\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend?action=check_same_material\",\n\t\tdata: generatorFormData({\n\t\t\tmsgid: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tconst copyrightStatData = {\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\trandom: Math.random().toString(),\n\t\tfingerprint,\n\t\tfirst_check: 1,\n\t\ttype: 10,\n\t\tappmsgid: appMsgId,\n\t};\n\tfor (let i = 0; i < 10; i++) {\n\t\tawait sleep(1000);\n\t\tconst lastData = { ...copyrightStatData, first_check: i === 0 ? 1 : 0 };\n\t\tconst checkCopyrightStatRes = await checkCopyrightStat<{ open_ad_reprint_status?: string }>(http, params, lastData);\n\t\tif (checkCopyrightStatRes.open_ad_reprint_status) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_ad\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsg_id: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tis_release_publish_page: params.masssend ? 0 : 1, // 群发时为 0,否则为 1\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : 0 ,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_music\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsgid: appMsgId,\n\t\t\tmasssend_check: 1,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\t// 5. 获取群发文章ticket接口\n\tconst getTicketResult = await http.api<{ ticket: string; operation_seq: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\taction: \"get_ticket\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\n\tawait sleep(300);\n\n\t// 6. 获取群发文章 uuid\n\tconst getUuidResult = await http.api<{ uuid: string; genuuid_res: number }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrconnect\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tstate: 0,\n\t\t\tlogin_type: \"safe_center\",\n\t\t\ttype: \"json\",\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\tawait sleep(1000);\n\n\tif (getUuidResult.genuuid_res !== 0) {\n\t\treturn { code: 200, message: GET_QRCODE_DEFAULT_ERROR, data: \"\" };\n\t}\n\tconst uuid = getUuidResult.uuid;\n\tawait sleep(1000);\n\n\t// 7. 获取验证二维码\n\tconst qrcodeResult = await http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrcode\",\n\t\tparams: {\n\t\t\taction: \"check\",\n\t\t\ttype: \"msgs\",\n\t\t\tservice_type: 1,\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tuuid,\n\t\t\tmsgid: operation_seq,\n\t\t\topen_email: params.settingInfo.timer ? true : false,\n\t\t\t...(params.masssend ? {} : { publish_type: 1 }),\n\t\t},\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\tresponseType: \"arraybuffer\",\n\t});\n\n\tconst qrcodeBuffer = Buffer.from(qrcodeResult);\n\tconst qrcodeFilePath = path.join(tmpCachePath, \"weixin_qrcode.jpg\");\n\tfs.writeFileSync(qrcodeFilePath, new Uint8Array(qrcodeBuffer));\n\n\tparams.safeQrcodeCallback?.(qrcodeFilePath);\n\n\t// 8. 验证二维码结果\n\tlet code = \"\";\n\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\tawait sleep(2000);\n\n\t\tconst checkScanResult = await http.api<{ code: string; errcode: number }>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/safe/safeuuid\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttimespam: Date.now(),\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tuuid,\n\t\t\t\taction: \"json\",\n\t\t\t\ttype: \"json\",\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t}),\n\t\t});\n\n\t\tif (checkScanResult.errcode === 405 && checkScanResult.code) {\n\t\t\tcode = checkScanResult.code;\n\t\t\tbreak;\n\t\t}\n\n\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\treturn { code: 200, message: \"二维码已过期,请重试发布。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t1: 1,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\taction: \"get_uuid\",\n\t\t\t\tuuid,\n\t\t\t}),\n\t\t});\n\t}\n\n\t// 9. 发送群发通知\n\tawait http.api<{ code: string; errcode: number }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\tt: \"ajax-response\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t...(params.masssend ? {\n\t\t\t\t...(params.settingInfo.timer ? {\n\t\t\t\t\taction: \"time_send\"\n\t\t\t\t}: {})\n\t\t\t} : { is_release_publish_page: 1 }),\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: \"1\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t\tack: \"\",\n\t\t\tcode,\n\t\t\treprint_info: \"\",\n\t\t\treprint_confirm: \"0\",\n\t\t\tlist: \"\",\n\t\t\tgroupid: \"\",\n\t\t\tsex: \"0\",\n\t\t\tcountry: \"\",\n\t\t\tprovince: \"\",\n\t\t\tcity: \"\",\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : \"0\",\n\t\t\ttype: \"10\",\n\t\t\tshare_page: \"1\",\n\t\t\tsynctxweibo: \"0\",\n\t\t\toperation_seq,\n\t\t\treq_id: randomString(32),\n\t\t\treq_time: new Date().getTime() + client_time_diff * 1e3,\n\t\t\tsync_version: \"1\",\n\t\t\tisFreePublish: params.masssend ? \"false\" : \"true\",\n\t\t\tappmsgid: appMsgId,\n\t\t\tisMulti: \"0\",\n\t\t\tdirect_send: \"1\",\n\t\t\tisNeedCode: \"true\",\n\t\t\tuserType: \"1\",\n\t\t}),\n\t\tdefaultErrorMsg: params.masssend ? \"文章群发异常,请尝试关闭群发或稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t});\n\n\treturn success(appMsgId, params.settingInfo.timer ? \"微信公众号文章定时发布成功。\" : \"微信公众号发布完成。\");\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport axios from \"axios\";\n\nimport { copyHtmlToClipboard, parseUrlQueryString, PopupListener, TimeFormatter } from \"../../utils\";\nimport type { PublishAction } from \"./index\";\nimport { scanRetryMaxCount } from \"./utils\";\n\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst urlParams = {\n\t\taction: \"edit\",\n\t\ttype: 77,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\ttimestamp: Date.now(),\n\t\tappmsgid: params.appMsgId,\n\t};\n\n\tif (params.settingInfo?.wxRewardTarget){\n\t\tconst urlRewardParams = {\n\t\t\taction: \"inviteauthor\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t};\n\t\tconst wxRewardPage = await task.createPage({\n\t\t\tshow: task.debug,\n\t\t\turl:\n\t\t\t\tparams.url ||\n\t\t\t\t`https://mp.weixin.qq.com/cgi-bin/safecenterstatus?${Object.entries(urlRewardParams)\n\t\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t\t.join(\"&\")}`,\n\t\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t\t});\n\n\t\tconst reward_page = wxRewardPage.locator(\"#app\")\n\t\tconst isAddRewarder = reward_page.locator('.author_card_bd.weui-desktop-vm_primary').filter({hasText: params.settingInfo.wxRewardTarget.author}).count()\n\t\tif(await isAddRewarder == 0){\n\t\t\tawait reward_page.locator('.weui-desktop-panel__hd-right').click()\n\t\t\ttry {\n\t\t\t\ttry {\n\t\t\t\t\tawait wxRewardPage.waitForSelector('.invite-qrcode', { state: 'visible', timeout: 20000 });\n\t\t\t\t\tconst qrcodeSrc = await reward_page.locator(\".invite-qrcode\").getAttribute('src')\n\n\t\t\t\t\tif (qrcodeSrc) {\n\t\t\t\t\t\tconst rewardBuffer = Buffer.from(qrcodeSrc.replace(/^data:image\\/\\w+;base64,/, ''), 'base64');\n\t\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\t\t\t\t\t}\n\n\t\t\t\t\t// await wxRewardPage.waitForSelector('[data-transfer=\"true\"]:not([weui=\"true\"])', { state: 'detached', timeout: 30000 });\n\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new Error(\"二维码已过期,请重试绑定。\");\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\twxRewardPage.reload(),\n\t\t\t\t\t\twxRewardPage.waitForLoadState('domcontentloaded')\n\t\t\t\t\t]);\n\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait wxRewardPage.waitForSelector(`.author_card_bd.weui-desktop-vm_primary:has-text(\"${params.settingInfo.wxRewardTarget?.author}\")`, { timeout: 1000 });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} catch (error) {}\n\n\t\t\t\t\tif (i === scanRetryMaxCount - 1) throw new Error(\"未确认绑定账户,请在手机端确认绑定并重试\");\n\t\t\t\t}\n\n\t\t\t} catch (error) {\n\t\t\t\tlet errorMessage = \"发生未知错误\";\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else if (typeof error === \"string\") {\n\t\t\t\t\terrorMessage = error;\n\t\t\t\t}\n\t\t\t\tawait wxRewardPage.close();\n\t\t\t\treturn { code: 200, message: errorMessage , data: \"\" };\n\t\t\t}\n\t\t}\n\n\t\tif(params.settingInfo.wxRewardText){\n\t\t\tawait wxRewardPage.locator('[href=\"/merchant/reward?action=getautoreply\"]').click()\n\t\t\tawait wxRewardPage.waitForLoadState('networkidle');\n\n\t\t\tconst isAddWord = reward_page.locator(\".auto-reply__list.edit .auto-reply__hd .auto-reply__text\").filter({hasText: new RegExp(`^${params.settingInfo.wxRewardText}$`) }).count()\n\n\t\t\tif(await isAddWord == 0){\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").fill(params.settingInfo.wxRewardText)\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").click()\n\t\t\t\tawait reward_page.locator(\".editor_toolbar .weui-desktop-btn.weui-desktop-btn_primary\").click()\n\t\t\t}\n\t\t}\n\t\tawait wxRewardPage.close();\n\n\t}\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?${Object.entries(urlParams)\n\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t.join(\"&\")}`,\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".weui-desktop-head\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\"#editor_pannel\", { state: \"visible\" });\n\n\t//新功能更新监听\n\tPopupListener(page,'[v-transfer-dom=\"#vue_app\"] .weui-desktop-dialog',\"更新\", '[v-transfer-dom=\"#vue_app\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t//小店功能开通监听\n\tPopupListener(page,'[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-dialog',\"小店\", '[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: true\n\t})\n\n\t// 2. 填写标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 填写作者\n\tif (params.settingInfo.wxAuthor) {\n\t\tconst titleInstance = page.locator(\"#js_author_area input#author\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAuthor);\n\t}\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".js_editor_area .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 将设置区域滚动到可见区域\n\tawait page.locator(\"#article_setting_area\").evaluate((node) => node.scrollIntoView());\n\n\t// 5. 填写摘要\n\tif (params.settingInfo.wxAbstract) {\n\t\tconst titleInstance = page.locator(\"#article_setting_area #js_description_area textarea\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAbstract);\n\t}\n\n\t// 6. 设置封面\n\tif (params.settingInfo.wxCover) {\n\t\tlet fileName = getFilenameFromUrl(params.settingInfo.wxCover);\n let ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\tconst cover = await downloadImage(params.settingInfo.wxCover, path.join(tmpCachePath, fileName));\n\n\t\t// 从图片库选择\n\t\tawait page.locator(\"#article_setting_area #js_cover_area .select-cover__btn\").hover();\n\t\tawait page\n\t\t\t.locator(\"#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"从图片库选择\" })\n\t\t\t.click();\n\n\t\t// 在弹窗内选择「我的图片」- 「上传文件」\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\"#vue_app .weui-desktop-dialog\", { state: \"visible\" });\n\t\tconst dialog = page.locator(\"#vue_app .weui-desktop-dialog\");\n\t\t// 点击「我的图片」\n\t\tawait dialog.locator(\".weui-desktop-menu .weui-desktop-menu__item\").filter({ hasText: \"我的图片\" }).click();\n\t\tawait page.waitForTimeout(300);\n\t\t// 点击「上传文件」\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait dialog.locator(\".weui-desktop-img-picker__list__area .js_upload_btn_container\").click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([cover]);\n\n\t\t// 等待图片上传完成\n\t\tawait page.waitForSelector(\".weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected\", {\n\t\t\tstate: \"visible\",\n\t\t});\n\t\tawait page.waitForSelector('.weui-desktop-upload__file__progress', { state: 'detached' });\n\n\t\tconst pic_msg = page.locator('.weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected .weui-desktop-upload__file__msg')\n\t\tif(await pic_msg.count() > 0) return {code: 200, message: \"图片上传错误:\"+(await pic_msg.textContent()||\"未知错误,请重试!\"), data: \"\"}\n\n\t\t// 选择下一步\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn:not(.weui-desktop-btn_disabled)\")\n\t\t\t.filter({ hasText: \"下一步\" })\n\t\t\t.click();\n\t\t// 等待第二步的确认按钮出来\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.waitFor({ state: \"visible\" });\n\t\tawait dialog.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\").filter({ hasText: \"确认\" }).click();\n\t}\n\n\t// 7. 原创与赞赏设置\n\tif(params.settingInfo.wxCopyright){\n\t\tawait page.locator('#js_original').click()\n\n\t\tconst ori_dialog = page.locator('.claim__original-dialog.original_dialog')\n\t\tconst ori_dialog_bd = ori_dialog.locator('.weui-desktop-dialog__bd')\n\t\tconst ori_dialog_ft = ori_dialog.locator('.weui-desktop-dialog__ft')\n\n\t\tawait ori_dialog_bd.locator('.weui-desktop-form__check-content').filter({hasText: \"文字原创\"}).click()\n\n\t\tif(params.settingInfo?.wxWhitelist){\n\n\t\t\tfor (var _target of params.settingInfo.wxWhitelist){\n\n\t\t\t\tawait ori_dialog_bd.locator('#js_article_whitelist_search').fill(_target)\n\t\t\t\tawait ori_dialog_bd.locator('.js_search').click()\n\t\t\t\tconst search_res = ori_dialog_bd.locator('#js_article_whitelist_search_result > div')\n\n\t\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\t\tif( await search_res.getAttribute('class') !== 'search-result-title search-result-empty'){\n\n\t\t\t\t\tconst search_res_name = await search_res.locator('.search-result-name-left').textContent() || undefined\n\t\t\t\t\tawait search_res.click()\n\t\t\t\t\tconst whrite_list = ori_dialog_bd.locator('#js_article_whitelist_added tbody')\n\t\t\t\t\tconst white_td_isadd = await whrite_list.locator('.table-td-name').filter({hasText: search_res_name}).count()\n\n\t\t\t\t\tif (!white_td_isadd) {\n\t\t\t\t\t\treturn {code: 200 , message:'白名单添加失败,请重试!', data: ''}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 200, message: `白名单用户:${_target} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\n\t\tif(params.settingInfo?.wxQuickReprint){\n\t\t\tconst btn_isChecked = await ori_dialog_bd.locator('//span[@class=\"frm_tips\"]').filter({ hasText: '已开启' }).count() == 1 ? true : false;\n\t\t\tif(!btn_isChecked) await ori_dialog_bd.locator('.weui-desktop-switch_loading .weui-desktop-switch__box').click()\n\t\t}\n\n\t\tconst checkbox = ori_dialog_ft.locator('.weui-desktop-icon-checkbox')\n\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\tawait ori_dialog_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\tif (params.settingInfo?.wxRewardTarget){\n\n\t\t\tawait page.locator('#js_reward_setting_area').click()\n\n\t\t\tconst reward_setting = page.locator('.reward-setting-dialog')\n\t\t\tconst reward_setting_bd = reward_setting.locator('.weui-desktop-dialog__bd')\n\t\t\tconst reward_setting_ft = reward_setting.locator('.weui-desktop-dialog__ft')\n\n\t\t\t//遍历绑定信息\n\t\t\tfor (var _type in params.settingInfo.wxRewardTarget){\n\t\t\t\tif (_type === \"author\"){\n\t\t\t\t\tlet userName = params.settingInfo.wxRewardTarget[_type]\n\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__check-label', { hasText: '赞赏作者' }).click()\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__input').fill(userName)\n\n\n\t\t\t\t\tif(params.settingInfo.wxRewardText) {\n\t\t\t\t\t\tconst reward_setting_replay = page.locator('.reward-reply-setting')\n\t\t\t\t\t\tconst switchAuto = reward_setting_replay.locator('.weui-desktop-switch__box')\n\n\t\t\t\t\t\tconst maxAttempts = 5;\n\t\t\t\t\t\tconst delayMs = 500;\n\t\t\t\t\t\tlet nowCheckTime = 0\n\n\t\t\t\t\t\tfor (let attempt = 0; attempt < maxAttempts; attempt++) {\n\t\t\t\t\t\t\tconst isDisabled = await switchAuto.isDisabled();\n\t\t\t\t\t\t\tif (!isDisabled){\n\t\t\t\t\t\t\t\tawait switchAuto.isChecked() ? nowCheckTime++ : null\n\t\t\t\t\t\t\t\tif (nowCheckTime == 2) break\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (attempt === maxAttempts - 1) throw new Error('Checkbox did not become enabled within the timeout.');\n\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, delayMs));\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tconst isOneReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').textContent() == \"添加新的回复\"\n\t\t\t\t\t\tconst isCurrentReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__display .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).count() == 1\n\n\t\t\t\t\t\tif (!isOneReplay && !isCurrentReplay) {\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').click()\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__display.can-select .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tawait reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__input').isChecked() ? reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__box').uncheck(): 0\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse if (_type === \"project\"){}\n\t\t\t}\n\n\t\t\tconst checkbox = reward_setting_ft.locator('.weui-desktop-icon-checkbox')\n\t\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\t\tawait reward_setting_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\t}\n\n\t}\n\n\t// 8. 互动设置\n\tif(params.settingInfo?.wxInteraction){\n\t\tawait page.locator('.appmsg-editor__setting-group.js_interaction_cell').click()\n\t\tconst wxInteraction_setting = page.locator('.interaction-dialog')\n\t\tconst wxInteraction_bd = wxInteraction_setting.locator('.weui-desktop-dialog__bd')\n\t\tconst wxInteraction_ft = wxInteraction_setting.locator('.weui-desktop-dialog__ft')\n\n\t\tif(params.settingInfo.wxInteraction.Type == \"public\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(开启|留言)$/ }).click();\n\n\t\t\tconst comment_area = wxInteraction_bd.locator('.comment-options-block.pt0')\n\t\t\tconst reply_area = wxInteraction_bd.locator('.comment-options-block.bb0.pb0')\n\t\t\tconst commont_rply_opt = page.locator('.weui-desktop-popper.options-popover[x-placement=\"bottom\"]')\n\n\t\t\tawait comment_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.Comment }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_comment) {\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__input').isChecked() ? comment_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\n\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\tawait reply_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.reply }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_reply) {\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__input').isChecked() ? reply_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\t\t}else if(params.settingInfo.wxInteraction.Type == \"private\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(快捷私信|不开启)$/ }).click();\n\t\t}\n\n\t\tawait wxInteraction_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\t}\n\n\t// 9. 原文链接\n\tif (params.settingInfo.wxOriginalText) {\n\t\tawait page.locator(\"#js_article_url_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tconst poperInput = poperInstance.locator(\"input.weui-desktop-form__input.js_url\");\n\t\tawait poperInput.fill(params.settingInfo.wxOriginalText);\n\t\tawait poperInstance.locator(\".popover_bar .btn_primary\").click();\n\t}\n\n\t// 10. 创作来源\n\tif (params.settingInfo.wxCreationSource && params.settingInfo.wxCreationSource.length > 0) {\n\t\tconst source = params.settingInfo.wxCreationSource[0];\n\t\tawait page.locator(\"#js_claim_source_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator(`.frm_radio_item label[for=\"${source}\"]`).click();\n\t}\n\n\t// 11. 关闭平台推荐\n\tif (params.settingInfo.wxNotAllowRecommend === true) {\n\t\tawait page.locator(\"#js_not_recommend_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator('.frm_radio_item label[for=\"not_recomment_0\"]').click();\n\t}\n\n\tawait page.waitForTimeout(1000);\n task._timerRecord['PrePublish']= Date.now();\n\n\t// 12. 发布\n\tconst articleId = await new Promise<string>(async (resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tconst url = response.url();\n\t\t\tconst query = parseUrlQueryString(url);\n\t\t\tif (url.includes(\"/cgi-bin/operate_appmsg\") && query?.t === \"ajax-response\") {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse?.appMsgId);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n\t\t// 点击发表\n\t\tpage.locator(\"#editor_pannel #bottom_main #js_button_area #js_send button\").click();\n\t\tawait page.waitForTimeout(200);\n\n\t\tif (params.settingInfo.timer) {\n\t\t\tawait page.locator(\".mass-send .mass-send__td-setting\", {hasText: \"定时发表\"}).locator(\".weui-desktop-switch__box\").check();\n\t\t\tlet dateD = Number(TimeFormatter.format(params.settingInfo.timer, \"d\"));\n\t\t\tlet nowD = Number(TimeFormatter.format(Date.now(), \"d\"));\n\n\t\t\tawait page.locator(\".mass-send__timer .weui-desktop-form__dropdown__dt\").click();\n\t\t\tconst dropMenu = page.locator(\".mass-send__timer .weui-desktop-dropdown-menu\").locator(\".weui-desktop-dropdown__list-ele\")\n\t\t\tawait dropMenu.filter({hasText: dateD == nowD ? \"今天\" : dateD == nowD + 1 ? \"明天\" : TimeFormatter.format(params.settingInfo.timer, \"M月d日\")}).click();\n\n\t\t\tconst timeDropMenu = page.locator(\".mass-send__timer .weui-desktop-picker__time:visible\")\n\t\t\tawait timeDropMenu.locator(\".weui-desktop-form__input\").fill(TimeFormatter.format(params.settingInfo.timer, \"hh:mm\"));\n\t\t\tawait timeDropMenu.locator(\"i.weui-desktop-icon__time\").click();\n\n\t\t}\n\t});\n\tawait page.waitForTimeout(200);\n\n\tif(params.masssend){\n\t\tconst times = Number(await page.locator(\".mass-send .multi-sent__notice_time\").locator('div[style=\"display: none;\"] div:not([style*=\"display: none\"]) span').textContent())\n\t\tif( times==0 ) return { code: 200, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").check();\n\t}else{\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").uncheck();\n\t}\n\n\tawait page.waitForTimeout(200);\n\n\t// 再次点击发表\n\tawait page.waitForSelector('.new_mass_send_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\"});\n\tawait page.locator(\".new_mass_send_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\t// 点击继续发表\n\tawait page.waitForSelector('.double_check_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\",});\n\tawait page.locator(\".double_check_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\tawait page.waitForTimeout(2000);\n\n\t// 原创校验弹窗\n\tconst originalCheckDialog = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"] .weui-desktop-dialog__title')\n\tif((await originalCheckDialog.count() > 0) ){\n\t\tif (await originalCheckDialog.textContent() === \"原创校验\"){\n\t\t\tconst popMassend = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"]')\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"下一步\"}).click();\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"继续\"}).click();\n\t\t}\n\t}\n\n\n\ttry {\n\t\tconst startTime = Date.now();\n\n\t\t// biome-ignore lint/suspicious/noAsyncPromiseExecutor: <explanation>\n\t\tawait new Promise<void>(async (resolve, reject) => {\n\t\t\t// 定义响应处理函数\n\t\t\tconst handleResponse = async (response: Response) => {\n\t\t\t\tif (response.url().includes(\"/safe/safeuuid\")) {\n\t\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\t\tif (jsonResponse.errcode === 405) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t} else if (Date.now() - startTime > waitQrcodeResultMaxTime) {\n\t\t\t\t\t\treject();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// 开始监听响应事件\n\t\t\tpage.on(\"response\", handleResponse);\n\n\t\t\t// 获取微信验证二维码\n\t\t\tawait page.waitForSelector(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\", {\n\t\t\t\tstate: \"visible\",\n\t\t\t});\n\t\t\tconst qrcodeSrc = await page\n\t\t\t\t.locator(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\")\n\t\t\t\t.first()\n\t\t\t\t.getAttribute(\"src\");\n\t\t\tif (qrcodeSrc) {\n\t\t\t\tconst imgUrl = new URL(qrcodeSrc, page.url()).href; // 处理相对路径\n\t\t\t\tconst response = await axios({\n\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\turl: imgUrl,\n\t\t\t\t\tresponseType: \"arraybuffer\", // 确保接收二进制数据\n\t\t\t\t});\n\t\t\t\t// 保存文件\n\t\t\t\tconst qrcodeFilePath = path.join(tmpCachePath, \"weixin_qrcode.jpg\");\n\t\t\t\tfs.writeFileSync(qrcodeFilePath, response.data);\n\t\t\t\tparams.safeQrcodeCallback?.(qrcodeFilePath);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"qrcodeSrc is empty\");\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tawait page.close();\n\t\treturn { code: 500, message: \"群发二维码已过期,请重试发布。\", data: \"\" };\n\t}\n\n\tawait page.waitForTimeout(3000);\n\tawait page.close();\n\n\treturn success(articleId);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { defaultParams, executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\nexport interface WxInteraction {\n\tType: \"public\" | \"private\" | \"off\"; // public:评论留言, priviate: 快捷私信, off: 不开启\n\tOption?: { // public下相关设置\n\t Comment: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 评论设置\n\t reply: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 回复设置\n\t elect_comment: boolean; // 是否开启精选评论\n\t elect_reply: boolean; // 是否开启精选回复\n\t};\n }\n\nexport interface WeixinPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\tmasssend?: boolean; // 是否群发(默认开启群发)\n\ttoken: string | number;\n\ttitle: string; // 标题\n\tcontent: string; // 正文内容\n\tuuid?: string;\n\tappMsgId?: string;\n\toperation_seq?: string;\n\tsettingInfo: {\n\t\twxCover: string; // 封面\n\t\twxAuthor?: string; // 作者\n\t\twxAbstract?: string; // 摘要\n\t\twxOriginalText?: string; // 原文链接\n\t\twxCopyright?: boolean, // 版权声明\n\t\twxWhitelist?: string[]; // 转载白马名单\n\t\twxRewardTarget?: Record<string, string>; // 赞赏目标与ID\n\t\twxRewardText?: string; // 赞赏文案\n\t\twxQuickReprint?: boolean; // 快捷转载\n\t\twxNotAllowRecommend?: boolean; // 不允许被平台推荐\n\t\twxCreationSource?: string[]; // 创作来源\n\t\twxInteraction?: WxInteraction // 互动设置\n\t\ttimer?: number; // 定时发文时间\n\t};\n\tsafeQrcodeCallback?: (qrcodePath: string) => void; // 二维码验证回调\n}\n\nexport interface WxWhitelistUserInfo {\n\tnickname: string;\n\topenid: string; // 微信常用字段命名可能是 open_id\n\tusername: string;\n\twx_name: string;\n\tpic_url: string;\n}\n\nexport type PublishAction = CommonAction<WeixinPublishParams, string>;\n\nexport const weixinPublish: PublishAction = async (task, _params) => {\n\tconst params = defaultParams(_params, { masssend: true });\n\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction, WeixinmpPublishParams } from \".\";\nimport type { Weixin } from \"../../types\";\nimport type { AspectRatio } from \"../../utils\";\nimport { calculateCropCoordinates, getFileState } from \"../../utils\";\nimport { Http } from \"../../utils/http\"\n\ntype ColorResponse = {\n\twidth: number;\n\theight: number;\n\ttheme_color: { r: number; g: number; b: number };\n};\ntype ShareInamgeInfo = {\n\tcdn_url: string;\n\tdisable_live: 0;\n\tdisable_theme: 1;\n\tfile_id: number;\n\twidth: number;\n\theight: number;\n\ttheme_color: string;\n\turl: string;\n};\n\nconst saveDraft = (\n\thttp: Http,\n\tparams: WeixinmpPublishParams,\n\tdata: Record<string, unknown>,\n) => {\n\tconst formData = new FormData();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, value);\n\t}\n\n\treturn http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"update\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: formData,\n\t});\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.weixin.qq.com\",\n\t\t\treferer: `https://mp.weixin.qq.com/cgi-bin/appmsg?token=${params.token}&lang=zh_CN`,\n\t\t},\n\t});\n\n\t// 1. 上传图片\n\tconst shareImageInfos: ShareInamgeInfo[] = [];\n\tconst cropResult: Record<string, string> = {};\n\n\tif (params.banners && params.banners.length > 0) {\n\t\t// 下载图片到本地\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = images[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<{ cdn_url: string; content: string }>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t});\n\n\t\t\t// 获取图片的主题色\n\t\t\tconst colorResponseData = await http.api<ColorResponse>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/filepage\",\n\t\t\t\tparams: {\n\t\t\t\t\taction: \"getimgext\",\n\t\t\t\t\tfileid: response.content,\n\t\t\t\t\ttoken: params.token,\n\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\tf: \"json\",\n\t\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst themeColor = colorResponseData.theme_color;\n\n\t\t\tshareImageInfos.push({\n\t\t\t\tcdn_url: response.cdn_url,\n\t\t\t\tdisable_live: 0,\n\t\t\t\tdisable_theme: 1,\n\t\t\t\tfile_id: Number(response.content),\n\t\t\t\twidth: colorResponseData.width,\n\t\t\t\theight: colorResponseData.height,\n\t\t\t\ttheme_color: `rgb(${themeColor.r},${themeColor.g},${themeColor.b})`,\n\t\t\t\turl: response.cdn_url,\n\t\t\t});\n\n\t\t\t// 第一张图片还需要添加头图裁切\n\t\t\tif (index === 0) {\n\t\t\t\tconst cropFormData = new FormData();\n\t\t\t\tcropFormData.append(\"imgurl\", response.cdn_url);\n\n\t\t\t\t// 需要裁切 16:9,3:4,1:1 三种尺寸的图片\n\t\t\t\tconst cropRatios: AspectRatio[] = [\n\t\t\t\t\t[16, 9],\n\t\t\t\t\t[1, 1],\n\t\t\t\t\t[3, 4],\n\t\t\t\t];\n\t\t\t\tcropFormData.append(\"size_count\", cropRatios.length);\n\t\t\t\tconst cropCoordinates = cropRatios.map((r, idx) => {\n\t\t\t\t\tconst cropCoordinate = calculateCropCoordinates(\n\t\t\t\t\t\tcolorResponseData.width,\n\t\t\t\t\t\tcolorResponseData.height,\n\t\t\t\t\t\tr,\n\t\t\t\t\t);\n\t\t\t\t\tcropFormData.append(`size${idx}_x1`, cropCoordinate.x1);\n\t\t\t\t\tcropFormData.append(`size${idx}_y1`, cropCoordinate.y1);\n\t\t\t\t\tcropFormData.append(`size${idx}_x2`, cropCoordinate.x2);\n\t\t\t\t\tcropFormData.append(`size${idx}_y2`, cropCoordinate.y2);\n\n\t\t\t\t\treturn { ratio: `${r[0]}_${r[1]}`, ...cropCoordinate };\n\t\t\t\t});\n\n\t\t\t\tcropFormData.append(\"token\", params.token);\n\t\t\t\tcropFormData.append(\"lang\", \"zh_CN\");\n\t\t\t\tcropFormData.append(\"f\", \"json\");\n\t\t\t\tcropFormData.append(\"ajax\", 1);\n\n\t\t\t\tconst cropResponse = await http.api<{ result: Weixin.WeiXinCropResult[] }>({\n method: \"post\",\n url: \"https://mp.weixin.qq.com/cgi-bin/cropimage?action=crop_multi\",\n data: cropFormData\n });\n\n\t\t\t\tcropResult.cdn_url_back0 = response.cdn_url; // 原图\n\t\t\t\tcropResult.cdn_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_235_1_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_16_9_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_1_1_url0 = cropResponse.result[1].cdnurl; // 1:1\n\t\t\t\tcropResult.cdn_3_4_url0 = cropResponse.result[2].cdnurl; // 3:4\n\t\t\t\tcropResult.crop_list0 = JSON.stringify({\n\t\t\t\t\tcrop_list: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t\tratio: it.ratio,\n\t\t\t\t\t\tx1: 0,\n\t\t\t\t\t\tx2: 0,\n\t\t\t\t\t\ty1: 0,\n\t\t\t\t\t\ty2: 0,\n\t\t\t\t\t})),\n\t\t\t\t\tcrop_list_percent: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\t...it,\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// 保存\n\tconst res = await saveDraft(http, params, {\n\t\t...cropResult,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\toperate_from: \"Chrome\",\n\t\ttitle0: params.title,\n\t\tcontent0: params.content,\n\t\tshare_imageinfo0: JSON.stringify(shareImageInfos),\n\t});\n\n return success(res)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction, Source } from \"./index\";\n\nconst sourceText: Record<Source, string> = {\n\tai: \"内容由AI生成\",\n\tofficial: \"素材来源官方媒体/网络新闻\",\n\tfictional: \"内容剧情演绎,仅供娱乐\",\n\tpersonal: \"个人观点,仅供参考\",\n};\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=8&token=${params.token}&lang=zh_CN`,\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\"#editor_pannel\");\n\t} catch (error) {\n\t\treturn { code: 500, message: \"登录失效\", data: page.url() };\n\t}\n\n\tconst container = page.locator(\"#editor_pannel\");\n\n\t// 1. 添加图片\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\t// 选择文件\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait container.locator(\".image-selector__add\").hover();\n\t\tawait container\n\t\t\t.locator(\".image-selector__add .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"本地上传\" })\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\t}\n\n\t// 2. 标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 正文\n\tconst descInstance = page.locator(\"#guide_words_main .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 4. 来源\n\tif (params.source) {\n\t\tawait container.locator(\"#js_claim_source_area .js_claim_source_desc\").click();\n\t\tawait page\n\t\t\t.locator(\".popover_article_claim_source .frm_radio_item label\")\n\t\t\t.filter({ hasText: sourceText[params.source] })\n\t\t\t.click();\n\t}\n\n\t// 5. 等待所有图片上传完成\n\tif (params.banners && params.banners.length > 0) {\n\t\tawait page.waitForSelector(\"#editor_pannel .image-selector .image-selector__preview\");\n\t}\n\n\t// 6. 保存\n\tif (params.draft) {\n\t\tawait container.locator(\"#bottom_main #js_submit button\").click();\n\t} else {\n\t\tawait container.locator(\"#bottom_main #js_send button\").click();\n\t}\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\nexport type Source = \"ai\" | \"official\" | \"fictional\" | \"personal\";\n\nexport interface WeixinmpPublishParams extends ActiomCommonParams {\n\ttoken: string | number;\n\tbanners?: string[];\n\ttitle: string; // 标题\n\tcontent: string; // 正文\n\t/**\n\t * 内容由AI生成 - ai\n\t * 素材来源官方媒体/网络新闻 - official\n\t * 内容剧情演绎,仅供娱乐 - fictional\n\t * 个人观点,仅供参考 - personal\n\t */\n\tsource?: Source; // 来源\n\tdraft?: boolean; // 是否为草稿\n}\n\nexport type PublishAction = CommonAction<WeixinmpPublishParams>;\n\nexport const weixinmpPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\n\nimport path from \"node:path\";\nimport {downloadImage, getFilenameFromUrl, success} from \"@iflyrpa/share\";\nimport {type PublishAction} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {XsEncrypt} from \"../../utils/xhsXsEncrypt\";\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\ninterface CommonResponse<T = unknown> {\n data: T;\n code: number;\n success: boolean;\n}\n\ninterface UploadTempPermit<T = string[]> {\n bucket: string;\n uploadAddr: string;\n fileIds: T;\n token: string;\n}\n\nconst errnoMap: Record<number, string> = {\n 915: \"所属C端账号手机号被修改,请重新登录\",\n 914: \"所属C端账号密码被修改,请重新登录\",\n 903: \"账户已登出,需重新登陆重试!\",\n 902: \"登录已过期,请重新登录!\",\n 906: \"账号存在风险,请重新登录\"\n};\n\n// 小红书参数加密器\nconst xsEncrypt = new XsEncrypt();\n\nexport const mockAction: PublishAction = async (task, params) => {\n const tmpCachePath = task.getTmpPath();\n\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\"};\n }\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://creator.xiaohongshu.com\",\n referer: \"https://creator.xiaohongshu.com/\",\n \"user-agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36\",\n },\n });\n\n // 添加响应拦截器\n http.addResponseInterceptor<CommonResponse>((response) => {\n const responseData = response.data;\n\n // 检查响应中的 errno 字段\n if (responseData?.code && responseData.code !== 0) {\n const errmsg = errnoMap[responseData.code] || response.config.defaultErrorMsg || \"文章发布异常,请稍后重试。\";\n\n return {\n code: errnoMap[responseData.code] ? 200 : 500,\n message: errmsg,\n data: responseData\n };\n }\n });\n\n // 0. 获取上传 token\n const fetchCoverUrl = `/api/media/v1/upload/creator/permit?biz_name=spectrum&scene=image&file_count=${params.banners.length}&version=1&source=web`;\n const xt = Date.now().toString();\n const xs = await xsEncrypt.encryptXs(fetchCoverUrl, a1Cookie, xt);\n const coverIdInfo = await http.api<CommonResponse<{ uploadTempPermits: UploadTempPermit[] }>>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: fetchCoverUrl,\n defaultErrorMsg: \"获取小红书用户信息失败,请稍后重试发布。\",\n headers: {\"x-s\": xs, \"x-t\": xt},\n });\n\n let uploadInfos: UploadTempPermit<string>[] = [];\n coverIdInfo.data.uploadTempPermits.forEach((item: UploadTempPermit<string[]>) => {\n item.fileIds.forEach(fileId => {\n uploadInfos.push({\n bucket: item.bucket || \"\",\n uploadAddr: item.uploadAddr || \"\",\n fileIds: fileId,\n token: item.token || \"\"\n });\n });\n });\n\n\n if (uploadInfos.length < params.banners.length) return {code: 200, message: \"可用 OSS bucket 数量不足,无法上传所有图片!\", data: \"\"};\n\n if (uploadInfos.length === 0) return {code: 200, message: \"图片上传失败,请稍后重试!\", data: \"\"};\n\n const availableBuckets = Array.from({length: uploadInfos.length}, (_, i) => i);\n\n const uploadFile = async (url: string, index: number): Promise<{\n ossFileId: string;\n ossToken: string;\n }> => {\n const fileName = getFilenameFromUrl(url);\n const localUrl = await downloadImage(url, path.join(tmpCachePath, fileName));\n const fileBuffer = fs.readFileSync(localUrl);\n\n const MAX_RETRIES = uploadInfos.length;\n let attempt = 0;\n\n while (attempt < MAX_RETRIES) {\n // 分配 bucket\n const ossBucketIndex = availableBuckets.shift(); // 移除并获取第一个可用 bucket\n\n if (ossBucketIndex === undefined) {\n return {ossFileId: \"\", ossToken: \"\"}; // 没有可用 bucket\n }\n\n const currentInfo = uploadInfos[ossBucketIndex];\n const ossFileId = currentInfo.fileIds;\n const ossToken = currentInfo.token;\n const ossDomain = currentInfo.uploadAddr;\n\n try {\n await http.api({\n method: \"put\",\n url: `https://${ossDomain}/${ossFileId}`,\n data: fileBuffer,\n headers: {\n \"x-cos-security-token\": ossToken,\n },\n defaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n });\n return {ossFileId, ossToken};\n } catch (error) {\n attempt++;\n }\n }\n return {ossFileId: \"\", ossToken: \"\"}; // 所有尝试失败\n };\n\n const coverInfos = await Promise.all(params.banners.map((it, idx) => uploadFile(it, idx)));\n const invalidUpload = coverInfos.find((it) => it.ossToken === \"\" || it.ossFileId == \"\")\n if (invalidUpload) return {code: 200, message: \"图片上传异常,请稍后重试发布。\", data: \"\"}\n\n if (params.topic && params.topic.length > 0) {\n await Promise.all(params.topic.map(async (topic) => {\n if (!topic[\"id\"]) {\n const topicData = {topic_names: topic[\"name\"]}\n const topicDataStr = xsEncrypt.dumps(topicData);\n const publishXt = Date.now().toString();\n const publishXs = await xsEncrypt.encryptXs(`/web_api/sns/capa/postgw/topic/batch_customized${topicDataStr}`, a1Cookie, publishXt);\n let createTopic = await http.api({\n method: \"POST\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/capa/postgw/topic/batch_customized\",\n headers: {\n \"x-s\": publishXs,\n \"x-t\": publishXt,\n },\n data: topicData,\n defaultErrorMsg: \"话题创建异常,请稍后重试。\",\n })\n Object.assign(topic, createTopic.data.topic_infos[0])\n }\n }))\n }\n ;\n\n const publishData = {\n common: {\n ats: [],\n biz_relations: [],\n desc: params?.content,\n goods_info: {},\n hash_tag: params.topic || [],\n note_id: \"\",\n source: JSON.stringify({\n type: \"web\",\n ids: \"\",\n extraInfo: '{\"systemId\":\"web\"}',\n }),\n title: params?.title,\n type: \"normal\",\n privacy_info: {\n op_type: 1,\n type: params.visibleRange === \"public\" ? 0 : 1,\n },\n post_loc: params.address\n ? {\n name: params.address?.name,\n poi_id: params.address?.poi_id,\n poi_type: params.address?.poi_type,\n subname: params.address?.full_address,\n }\n : null,\n business_binds: \"\",\n },\n image_info: {\n images: coverInfos.map((it) => ({\n extra_info_json: '{\"mimeType\":\"image/png\"}',\n file_id: it.ossFileId,\n metadata: {source: -1},\n stickers: {floating: [], version: 2},\n })),\n },\n video_info: null,\n };\n\n // 自主声明\n const userDeclarationBind = {\n origin: 2,\n photoInfo: {},\n repostInfo: {},\n };\n\n if (params.selfDeclaration?.type === \"fictional-rendition\") {\n // 虚拟演绎,仅供娱乐\n userDeclarationBind.origin = 1;\n } else if (params.selfDeclaration?.type === \"ai-generated\") {\n // 笔记含AI合成内容\n userDeclarationBind.origin = 2;\n } else if (params.selfDeclaration?.type === \"source-statement\") {\n // 内容来源声明\n if (params.selfDeclaration.childType === \"self-labeling\") {\n // 已自主标注\n userDeclarationBind.origin = 3;\n } else if (params.selfDeclaration.childType === \"self-shooting\") {\n // 自主拍摄\n userDeclarationBind.origin = 4;\n const photoInfo: { photoPlace?: unknown; photoTime?: string } = {};\n\n if (params.selfDeclaration.shootingLocation) {\n // 拍摄地点\n photoInfo.photoPlace = {\n name: params.selfDeclaration.shootingLocation.name,\n poiId: params.selfDeclaration.shootingLocation.poi_id,\n poiType: params.selfDeclaration.shootingLocation.poi_type,\n subname: params.selfDeclaration.shootingLocation.full_address,\n };\n }\n\n if (params.selfDeclaration.shootingDate) {\n // 拍摄日期\n photoInfo.photoTime = params.selfDeclaration.shootingDate;\n }\n\n userDeclarationBind.photoInfo = photoInfo;\n } else if (params.selfDeclaration.childType === \"transshipment\") {\n // 来源转载\n userDeclarationBind.origin = 5;\n\n if (params.selfDeclaration.sourceMedia) {\n // 来源媒体\n userDeclarationBind.repostInfo = {\n source: params.selfDeclaration.sourceMedia,\n };\n }\n }\n }\n \n task._timerRecord['PrePublish']= Date.now();\n\n const business_binds = {\n version: 1,\n bizType: \"\",\n noteId: \"\",\n noteOrderBind: {},\n // 发布时间 - 立即发布/定时发布\n notePostTiming: params.isImmediatelyPublish ? {} : {postTime: params.scheduledPublish},\n noteCollectionBind: {id: \"\"},\n ...(params.selfDeclaration ? {userDeclarationBind} : {}),\n };\n\n publishData.common.business_binds = JSON.stringify(business_binds);\n\n const publishDataStr = xsEncrypt.dumps(publishData);\n const publishXt = Date.now().toString();\n const publishXs = await xsEncrypt.encryptXs(`/web_api/sns/v2/note${publishDataStr}`, a1Cookie, publishXt);\n const xscommon = GenXSCommon(a1Cookie, publishXt, publishXs)\n // 发布\n const publishResult = await http.api<CommonResponse<{ id: string }>>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v2/note\",\n data: publishData,\n headers: {\n \"x-s\": publishXs,\n \"x-t\": publishXt,\n \"x-s-common\": xscommon\n },\n defaultErrorMsg: \"文章发布异常,请稍后重试。\",\n });\n\n return success(publishResult.data?.id);\n};\n","import path from \"node:path\";\nimport type { CookieMap, Locator, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport { XsEncrypt } from \"../../utils/xhsXsEncrypt\";\nimport type { PublishAction } from \"./index\";\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\n// 小红书参数加密器\nconst xsEncrypt = new XsEncrypt();\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsameSite: \"lax\",\n\t\tsecure: false,\n\t\tdomain: \"xiaohongshu.com\",\n\t\turl: \"https://creator.xiaohongshu.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://creator.xiaohongshu.com/publish/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst interceptUrls = [\n\t\t'/api/media/v1/upload/creator/permit',\n\t\t'/api/galaxy/v2/creator/activity_center/list',\n\t\t'/web_api/sns/v5/creator/topic/template/list',\n\t\t'/web_api/sns/v5/creator/file/encryption',\n\t\t'/web_api/sns/capa/postgw/topic/batch_customized',\n\t\t'/web_api/sns/v2/note'\n\t];\n\n\tawait page.route('**', async (route, request) => {\n\t\tconst url = request.url();\n\t\tif (interceptUrls.some(pattern => url.includes(pattern))) {\n\t\t\tconst urlObj = new URL(url);\n\t\t\tconst fetchCoverUrl = urlObj.pathname + urlObj.search;\n\t\t\tconst xt = Date.now().toString();\n\n\t\t\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\t\t\tif (!a1Cookie) {\n\t\t\t\tawait route.fulfill({\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\tcontentType: 'application/json',\n\t\t\t\t\tbody: JSON.stringify({ code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\" })\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isNoteRequest = urlObj.pathname.includes(interceptUrls[5]);\n\n\t\t\tconst xs = await (isNoteRequest\n\t\t\t\t? (async () => {\n\t\t\t\t\tconst publishData = JSON.parse(request.postData() || \"\")\n\t\t\t\t\tconst publishDataStr = xsEncrypt.dumps(publishData);\n\t\t\t\t\treturn xsEncrypt.encryptXs(interceptUrls[5]+publishDataStr, a1Cookie, xt);\n\t\t\t\t })(): xsEncrypt.encryptXs(fetchCoverUrl, a1Cookie, xt))\n\n const xscommon = GenXSCommon(a1Cookie, xt, xs)\n\n\t\t\tconst newHeaders = {\n\t\t\t\t...request.headers(),\n\t\t\t\t'x-s': xs,\n 'x-s-common':xscommon\n\t\t\t};\n\n\t\t\tawait route.continue({ headers: newHeaders });\n\t\t}else {\n\t\t\tawait route.continue();\n\t\t}\n\t});\n\n\n\t// 通用的选择地点\n\tconst selectAddress = async (selector: Locator, address: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.locator(\"input\").fill(address);\n\t\tconst poperInstance = page.locator('.d-popover:not([style*=\"display: none\"]) .d-options .d-grid-item');\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t};\n\n\t// 通用的选择日期\n\tconst selectDate = async (selector: string | Locator, date: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.fill(date);\n\t\tawait instance.blur();\n\t};\n\n\t// 查找显示的 popover 弹窗\n\tconst getPoperInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(500);\n\t\tconst elements = page.locator(\".d-popover\");\n\t\tconst count = await elements.count();\n\t\tconst visibleElements: (typeof elements)[] = [];\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst element = elements.nth(i);\n\t\t\tconst style = await element.getAttribute(\"style\");\n\t\t\tif (style && !style.includes(\"display: none\")) {\n\t\t\t\tvisibleElements.push(element);\n\t\t\t}\n\t\t}\n\n\t\tif (visibleElements.length > 0) {\n\t\t\treturn visibleElements[visibleElements.length - 1];\n\t\t}\n\n\t\tthrow new Error(\"未找到 popover 弹窗\");\n\t};\n\n\t// 查找显示的 dialog 弹窗\n\tconst getDialogInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(1000);\n\t\tconst elements = page.locator(\".el-dialog\");\n\t\treturn elements.last();\n\t};\n\n\t// 自动化脚本\n\t// ----------------------------------------------------------------------------------\n\n\t// 等待登录成功\n\ttry {\n\t\tawait page.waitForSelector(\"#CreatorPlatform\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 跳转到发布页面\n\tawait page.locator(\"#content-area .menu-container .publish-video .btn\").click();\n\n\t// 点击上传图文\n\tawait page\n\t\t.locator('.creator-container .header .creator-tab:not([style*=\"-9999px\"]) .title')\n\t\t.filter({ hasText: /^上传图文$/ })\n\t\t.click();\n\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tparams.banners.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n\t// 选择文件\n\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\tawait page.getByRole(\"textbox\").click();\n\tconst fileChooser = await fileChooserPromise;\n\tawait fileChooser.setFiles(images);\n\n\t// 填写标题\n\tconst titleInstance = page.locator(\".input.titleInput input\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 填写正文\n\tconst descInstance = page.locator(\".editor-container #quillEditor .ql-editor\");\n\tawait descInstance.click();\n\tawait descInstance.pressSequentially(params.content.replace(/#.*?\\[.*?]\\#/g,\"\"));\n\n\t// 填写话题\n\tif(params.topic && params.topic.length > 0){\n\t\tfor (const it of params.topic) {\n\t\t\tawait descInstance.pressSequentially(`#${it[\"name\"]}`);\n\t\t\tawait page.locator('.ql-mention-loading').waitFor({ state: 'detached' });\n\t\t\tawait page.waitForTimeout(1000);\n\t\t\tawait page.locator('#quill-mention-item-0 .item-view-num').click();\n\t\t};\n\t}\n\n\t// 滚动到底部\n\tconst container = page.locator(\".creator-container .content .scroll-content\");\n\tawait container.focus();\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\tif (params.address) {\n\t\t// 填写地点\n\t\tawait selectAddress(\n\t\t\tpage.locator(\".media-extension .address-input\").filter({ hasText: \"添加地点\" }),\n\t\t\tparams.address.name,\n\t\t);\n\t}\n\n\tif (params.selfDeclaration) {\n\t\t// 自主声明\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"内容类型声明\" }).locator(\".d-select-placeholder\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tconst selfDeclarationInstance = poperInstance.locator(\".d-options .d-option\");\n\t\tif (params.selfDeclaration.type === \"fictional-rendition\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"虚构演绎,仅供娱乐\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"ai-generated\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"笔记含AI合成内容\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"source-statement\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: /内容来源声明/ }).click();\n\t\t\t// 内容来源声明二级菜单\n\t\t\tconst selfDeclarationSecondaryMenuInstance = (await getPoperInstance()).locator(\".d-options .d-option\");\n\t\t\t// 等待元素出现\n\t\t\tawait selfDeclarationSecondaryMenuInstance.first().waitFor();\n\t\t\tif (params.selfDeclaration.childType === \"self-labeling\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"已在正文中自主标注\" }).click();\n\t\t\t} else if (params.selfDeclaration.childType === \"self-shooting\") {\n\t\t\t\tconst { shootingDate, shootingLocation } = params.selfDeclaration;\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"自主拍摄\" }).click();\n\t\t\t\t// 自主拍摄弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\t\t\t\tconst hasCustomContent = shootingDate || shootingLocation;\n\n\t\t\t\t// 选择拍摄地点\n\t\t\t\tif (shootingLocation) {\n\t\t\t\t\tawait selectAddress(selfShootingPopup.locator(\".address-input\"), shootingLocation.name);\n\t\t\t\t}\n\t\t\t\t// 选择拍摄日期\n\t\t\t\tif (shootingDate) {\n\t\t\t\t\tawait selectDate(selfShootingPopup.locator(\".date-picker input\"), shootingDate);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: hasCustomContent ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t} else if (params.selfDeclaration.childType === \"transshipment\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"来源转载\" }).click();\n\t\t\t\t// 来源媒体弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\n\t\t\t\tconst sourceMedia = params.selfDeclaration.sourceMedia;\n\t\t\t\tif (sourceMedia) {\n\t\t\t\t\tawait selfShootingPopup.locator(\".el-input input\").fill(sourceMedia);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: sourceMedia ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 可见范围 - 仅自己可见\n\tif (params.visibleRange === \"private\") {\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"可见范围\" }).locator(\".d-select-wrapper\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tawait poperInstance.locator(\".d-options .custom-option\").filter({ hasText: \"仅自己可见\" }).click();\n\t}\n \n task._timerRecord['PrePublish']= Date.now();\n \n\tconst releaseTimeInstance = page\n\t\t.locator(\"label\")\n\t\t.filter({ hasText: params.isImmediatelyPublish ? \"立即发布\" : \"定时发布\" });\n\tawait releaseTimeInstance.click();\n\n\tif (params.scheduledPublish) {\n\t\t// 自定义发布时间\n\t\tawait selectDate(\".date-picker input\", params.scheduledPublish);\n\t}\n\n\tconst response = await new Promise<string>((resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tif (response.url().includes(\"/web_api/sns/v2/note\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse?.data?.id);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n\t\tpage.locator(\".submit .publishBtn\").click();\n\t});\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(response);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams, Xiaohongshu } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ninterface FictionalRendition {\n\ttype: \"fictional-rendition\"; // 虚拟演绎,仅供娱乐\n}\n\ninterface AIGenerated {\n\ttype: \"ai-generated\"; // 笔记含AI合成内容\n}\n\ninterface SourceStatement {\n\ttype: \"source-statement\"; // 内容来源声明\n\tchildType: \"self-labeling\" | \"self-shooting\" | \"transshipment\"; // 已自主标注 / 自助拍摄 / 转载\n\tshootingLocation?: Xiaohongshu.Location; // 拍摄地点\n\tshootingDate?: string; // 拍摄日期\n\tsourceMedia?: string; // 来源媒体\n}\n\ntype SelfDeclaration = FictionalRendition | AIGenerated | SourceStatement;\n\nexport interface XiaohongshuPublishParams extends ActiomCommonParams {\n\tbanners: string[]; // 图片\n\ttitle: string; // 标题\n\tcontent: string; // 正文\n\taddress?: Xiaohongshu.Location; // 地点\n\tselfDeclaration?: SelfDeclaration; // 自主声明\n\ttopic?: Xiaohongshu.Topic[]; //话题\n\tvisibleRange: \"public\" | \"private\"; // 可见范围\n\tisImmediatelyPublish?: boolean; // 是否立即发布\n\tscheduledPublish?: string; // 定时发布时间\n}\n\nexport type PublishAction = CommonAction<XiaohongshuPublishParams, string>;\n\nexport const xiaohongshuPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import type { AutomateTask, CommonAction, ResponseData } from \"@iflyrpa/share\";\nimport { type BaijiahaoPublishParams, baijiahaoPublish } from \"./actions/baijiahaoPublish\";\nimport { type GetBaijiahaoActivityParams, getBaijiahaoActivity } from \"./actions/getBaijiahaoActivity\";\nimport { type GetToutiaoConfigParams, getToutiaoConfig } from \"./actions/getToutiaoConfig\";\nimport { type GetBaijiahaoConfigParams, getBaijiahaoConfig } from \"./actions/getBaijiaohaoConfig\";\nimport { type SearchToutiaoTopicListParams, searchToutiaoTopicList } from \"./actions/searchToutiaoTopicList\";\nimport { type SearchToutiaoLocationParams, searchToutiaoLocation } from \"./actions/searchToutiaoLocation\";\nimport { type SearchToutiaoUserIDParams, searchToutiaoUserInfo } from \"./actions/searchToutiaoUserID\";\nimport { type searchXiaohongshuLocationParams, searchXiaohongshuLocation } from \"./actions/searchXiaohongshuLocation\";\nimport { type SearchXiaohongshuTopicListParams, searchXiaohongshuTopicList } from \"./actions/searchXiaohongshuTopicList\";\nimport { type ToutiaoPublishParams, toutiaoPublish } from \"./actions/toutiaoPublish\";\nimport { TTFansExport } from \"./actions/common/FansTool\";\nimport { BjhFansExport } from \"./actions/common/FansTool\";\nimport { XhsFansExport } from \"./actions/common/FansTool\";\nimport { type GetWxFansSearchParams, WxFansExport } from \"./actions/common/FansTool\";\n\nimport { TTSessionCheck } from \"./actions/common/sessionCheck\";\nimport { BjhSessionCheck } from \"./actions/common/sessionCheck\";\nimport { XhsSessionCheck } from \"./actions/common/sessionCheck\";\nimport { type wxSessionParams, WxSessionCheck } from \"./actions/common/sessionCheck\";\n\nimport { type SearchAccountInfoParams, SearchAccountInfo} from \"./actions/searchAccountInfo\";\nimport { type FetchArticlesParams, FetchArticles } from \"./actions/searchPublishInfo\"\nimport { type GetWeixinConfigParams, getWeixinConfig } from \"./actions/getWeixinConfig\";\nimport { type WeitoutiaoPublishParams, weitoutiaoPublish } from \"./actions/weitoutiaoPublish\";\nimport { type WeixinPublishParams, weixinPublish } from \"./actions/weixinPublish\";\nimport { type WeixinmpPublishParams, weixinmpPublish } from \"./actions/weixinmpPublish\";\nimport { type XiaohongshuPublishParams, xiaohongshuPublish } from \"./actions/xiaohongshuPublish\";\n\nimport type { ActiomCommonParams } from \"./types\";\nimport { stringifyError } from \"./utils\";\nimport { Http } from \"./utils/http\";\n\nexport const BetaFlag = \"HuiwenCanary\"; // 用于标记是否为测试版本\n\nexport class Action {\n\tconstructor(private task: AutomateTask) {}\n\n\t// 绑定 task, 并处理异常\n\tprivate async bindTask<T extends ActiomCommonParams, R>(func: CommonAction<T, R>, params: T) {\n\t\tlet responseData: ResponseData<R>;\n \n // 检查是否为测试版本\n this.task.isBeta = this.task.isFeatOn( BetaFlag );\n \n // 记录时间消耗\n this.task._timerRecord = { ActionStart: Date.now() };\n\n \n\t\tif (this.task.setArticleId) {\n\t\t\t// 给所有的日志添加 articleId 标签\n\t\t\tthis.task.setArticleId(params.articleId ?? \"\");\n\t\t}\n \n if (this.task.setSaveType) {\n // 给所有的日志添加 saveType 标签\n this.task.setSaveType(params.saveType ?? \"\");\n }\n \n if (this.task.isInitializedGB !== undefined) {\n this.task.setGbInitType(this.task.isInitializedGB)\n }\n \n\t\tif (typeof params === \"object\") {\n\t\t\t// 默认设置 cookies\n\t\t\tparams.cookies = params?.cookies ?? [];\n\t\t}\n\n\t\ttry {\n\t\t\tresponseData = await func(this.task, params);\n\t\t} catch (error) {\n\t\t\tresponseData = Http.handleApiError(error);\n\t\t} finally {\n this.task._timerRecord['ActionEnd']= Date.now();\n }\n \n if(this.task.isBeta && this.task.setTimeConsuming){\n // 收集各时间节点\n this.task.setTimeConsuming(this.task._timerRecord);\n }\n\n\t\tif (responseData.code === 200) {\n\t\t\t// 表示是由于脚本输入信息错误导致的失败,不是脚本问题\n\t\t\tthis.task.logger.info(`${func.name} action params error`, responseData);\n\t\t} else if (responseData.code !== 0) {\n\t\t\tthis.task.logger.error(\n\t\t\t\tresponseData.message || `${func.name} 执行失败`,\n\t\t\t\tstringifyError(responseData.data),\n\t\t\t\tresponseData.extra,\n\t\t\t);\n\t\t\tthis.task.logger.info(`${func.name} action failed`);\n\t\t} else {\n\t\t\tthis.task.logger.info(`${func.name} action success`);\n\t\t}\n\n\t\treturn responseData;\n\t}\n\t// 获取指定平台的文章数据\n\tFetchArticles(params: FetchArticlesParams){\n\t\treturn this.bindTask(FetchArticles, params)\n\t}\n\t\n\t// 获取指定平台的分析数据\n\tSearchAccountInfo(params: SearchAccountInfoParams){\n\t\treturn this.bindTask(SearchAccountInfo, params)\n\t}\n\n\t// 头条Session有效性检测\n\tTTSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(TTSessionCheck, params);\n\t}\n\n\t// 微信Session有效性检测\n\tWxSessionCheck(params: wxSessionParams){\n\t\treturn this.bindTask(WxSessionCheck, params);\n\t}\n\n\t// 小红书Session有效性检测\n\tXhsSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(XhsSessionCheck, params);\n\t}\n\n\t// 百家号Session有效性检测\n\tBjhSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(BjhSessionCheck, params);\n\t}\n\t\n\t// 搜索头条话题列表\n\tsearchToutiaoTopicList(params: SearchToutiaoTopicListParams) {\n\t\treturn this.bindTask(searchToutiaoTopicList, params);\n\t}\n\n\t// 搜索头条粉丝\n\tTTFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(TTFansExport, params);\n\t}\n\n\t// 搜索小红书粉丝\n\tXhsFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(XhsFansExport, params);\n\t}\n\n\t// 搜索微信粉丝\n\tWxFansExport(params: GetWxFansSearchParams) {\n\t\treturn this.bindTask(WxFansExport, params);\n\t}\n\t\n\t// 搜索百家号粉丝\n\tBjhFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(BjhFansExport, params);\n\t}\n\n\t// 搜索头条用户ID\n\tsearchToutiaoUserID(params: SearchToutiaoUserIDParams) {\n\t\treturn this.bindTask(searchToutiaoUserInfo, params);\n\t}\n\n\t// 搜索头条Location\n\tsearchToutiaoLocation(params: SearchToutiaoLocationParams) {\n\t\treturn this.bindTask(searchToutiaoLocation, params);\n\t}\n\n\t// 获取头条配置\n\tgetToutiaoConfig(params: GetToutiaoConfigParams) {\n\t\treturn this.bindTask(getToutiaoConfig, params);\n\t}\n\n\t// 获取微信配额\n\tgetWeixinConfig(params: GetWeixinConfigParams) {\n\t\treturn this.bindTask(getWeixinConfig, params);\n\t}\n\n\t// 获取百家号配置\n\tgetBaijiahaoConfig(params: GetBaijiahaoConfigParams) {\n\t\treturn this.bindTask(getBaijiahaoConfig, params);\n\t}\n\n\t// 百家号发布\n\tbaijiahaoPublish(params: BaijiahaoPublishParams) {\n\t\treturn this.bindTask(baijiahaoPublish, params);\n\t}\n\n\t// 查询百家号活动投稿\n\tgetBaijiahaoActivity(params: GetBaijiahaoActivityParams) {\n\t\treturn this.bindTask(getBaijiahaoActivity, params);\n\t}\n\n\t// 小红书发布\n\txiaohongshuPublish(params: XiaohongshuPublishParams) {\n\t\treturn this.bindTask(xiaohongshuPublish, params);\n\t}\n\n\t// 搜索小红书话题\n\tsearchXiaohongshuTopicList(params: SearchXiaohongshuTopicListParams) {\n\t\treturn this.bindTask(searchXiaohongshuTopicList, params);\n\t}\n\t// 搜索小红书地址\n\tsearchXiaohongshuLocation(params: searchXiaohongshuLocationParams) {\n\t\treturn this.bindTask(searchXiaohongshuLocation, params);\n\t}\n\n\t// 小绿书发布\n\tweixinmpPublish(params: WeixinmpPublishParams) {\n\t\treturn this.bindTask(weixinmpPublish, params);\n\t}\n\n\t// 微头条发布\n\tweitoutiaoPublish(params: WeitoutiaoPublishParams) {\n\t\treturn this.bindTask(weitoutiaoPublish, params);\n\t}\n\n\t// 头条发布\n\ttoutiaoPublish(params: ToutiaoPublishParams) {\n\t\treturn this.bindTask(toutiaoPublish, params);\n\t}\n\n\t// 微信发布\n\tweixinPublish(params: WeixinPublishParams) {\n\t\treturn this.bindTask(weixinPublish, params);\n\t}\n}\n\ntype ActionInstance = InstanceType<typeof Action>;\n\n// 提取方法的参数类型\ntype MethodParams<T> = {\n\t// biome-ignore lint/suspicious/noExplicitAny: 有使用 any\n\t[K in keyof T]: T[K] extends (...args: any[]) => unknown ? Parameters<T[K]>[0] : never;\n};\n\n// 应用于 Action 类的实例\nexport type ActionMethodParams = MethodParams<ActionInstance>;\n\nexport { version } from \"../package.json\";\n"],"names":["encrypt_lookup","esm_typeof","t","encrypt_b64Encode","e","r","n","o","i","a","u","s","c","l","f","p","h","d","v","g","m","y","w","b","_","E","x","k","T","S","A","L","I","R","O","C","N","P","B","M","j","F","D","q","U","G","H","V","W","a0_0x10f4ac","X","z","Y","K","J","$","Q","Z","tt","encrypt_encodeChunk","encrypt_encodeUtf8","encodeURIComponent","parseInt","sign_common","JSON","encrypt_tripletToBase64","a0_0x3693","encrypt_mcr","GenXSCommon","a1cookie","x_t","x_s","b1","module","a0_0x45db08","a0_0x4b0d","_0x2bd218","_0x316d6","_0x165410","a0_0x1654","_0x4b0d73","_0x5794db","_0x1859e3","_0x1b2596","_0x16c0e0","_0x1227f1","_0x46fb59","_0x383dd4","_0x4fc071","Random","Math","Ts","Date","Sm3DoneTs","xhrParaDoneTs","xhrReqDoneTs","_0x46e031","SM3Hasher","_0x468533","Array","_0x11e792","_0x22d1ef","_0x182388","_0x2ded18","_0x5e491d","_0x12d911","_0x5795ab","_0x22d98b","_0x5659da","_0x357908","String","_0x5c0d1c","_0x2e8583","_0x28f42f","_0x4b2a85","_0xffe4ea","_0x34ff8d","_0xecf9f6","_0x3ddb20","_0x28ac8a","_0x117621","_0x335539","_0x450e58","_0x5b1ad8","_0x46ad66","_0xa844a0","_0x15bc36","_0x4a32f3","_0x36cc0b","_0xd7dcfe","_0x1e530c","_0x3c50af","_0x3da582","_0x14b06e","_0x4ec82e","_0x489962","_0x5dd43e","_0x744660","console","_0x197f71","_0x5e22dd","_0xfc800b","_0x1300f1","_0xed8891","_0x3414cb","_0x2f42fb","_0x326645","_0x2c63af","_0x558c0d","_0x4a902b","_0x493bba","_0x23a9bd","_0x7114f5","_0x49cf1f","_0x698c70","_0xe5328","_0x2b58f2","_0x17c086","_0x3621a2","_0x5959b9","_0x3b42ff","_0x50d411","_0x910e21","_0x459622","EnvData2CharCode","_0x58cd97","_0x23e1e0","_0x3ca6b2","_0x56cb93","_0x2d49d4","_0x3f2013","_0x4b8ded","_0x5bb315","_0x42b4c4","_0x1cdc95","_0x58aa5d","_0x26ee7a","_0xe2d586","_0x571095","_0x4dabdb","_0x4139e6","_0x339170","_0x56e1cd","_0x24b6d5","_0x196cf7","_0x2eb1f3","_0x2171ba","_0x925e58","_0x540dbd","_0x2fbb10","_0x41ebdd","_0x42a240","_0x49ec53","_0x3d9ba0","_0xeaa831","_0x477e24","_0x3bd924","_0xa7bf19","_0x23c273","_0x4d13ab","Base2Data","_0x348aa6","_0x2bc7c7","_0x874207","_0x224d00","_0x31697c","_0x235e4f","_0x29dde1","_0x4a74f1","_0xef36c2","_0x4120e4","_0x39cb62","_0x5cbaf6","_0x29a672","_0x96c5ae","_0x46c34b","_0x5d4cb4","_0x506f4f","Data2A_B","_0x19ca6d","_0x5d8d72","_0x225e7d","_0x4f0a28","_0x251d62","_0x2b8eea","_0x3fca04","_0xb85a46","_0x4e702d","_0x4382e1","_0x225aa0","_0x5607b9","Number","_0x3fb7b7","_0x425784","GenAB","_0x315138","_0x1c32b3","_0x206982","_0x56536b","Http","error","config","axios","findError","response","Promise","Object","errorResponse","serverError","getRandomInRange","min","max","getFileState","filePath","filename","path","fileType","mime","stats","fs","fileSize","lastModifiedDate","calculateCropCoordinates","width","height","aspectRatio","targetRatio","cropWidth","cropHeight","x1","y1","x2","y2","extractImgTag","html","srcList","parser","Parser","name","attributes","TimeFormatter","timestamp","formatStr","date","map","key","replaceImgSrc","callback","lastedHtml","isImageTag","node","traverseDom","DomUtils","child","handler","DomHandler","dom","domSerializer","stringifyError","Error","executeAction","actions","task","params","result","index","action","copyHtmlToClipboard","page","options","htmlContent","format","blob","Blob","navigator","ClipboardItem","div","document","range","selection","window","PopupListener","popupSelector","popKey","buttonSelector","checkInterval","stopAfterClick","popup","button","intervalId","setInterval","clearInterval","err","parseUrlQueryString","url","queryStringObject","queryString","queryWithoutHash","queryStringArray","item","equalIndex","value","decodeURIComponent","defaultParams","defaults","errnoMap","mockAction","baijiahaoSingleCover","baijiahaoMultCover","baijiahaoCoverType","tmpCachePath","http","it","msgType","errmsg","appIdInfo","appId","uploadImages","_images","images","fileName","getFilenameFromUrl","image","downloadImage","formData","FormData","res","originContentImages","targetContentImages","content","idx","horizontalCoverUrl","horizontalCoverRes","cover_images","_cover_images_map","isAi","activityList","cover_layout","activity_list","publishData","isDraft","saveUrl","success","rpaAction","commonCookies","titleInstance","coverFormItem","isSingleCover","coverSelector","coverCount","fileChooserPromise","fileChooser","abstractFormItem","settingFormItem","_settingFormItem","enent2NewsBtn","activity","activityFormItem","findActivity","articleId","message","resolve","handleResponse","jsonResponse","operatorContainer","scrollHourInfo","hourInner","hourElementHeight","hourMapsElem","hourMap","fistHourElem","fistHourElemH","lastHourElem","lastHourElemH","targetTimeH","scrollMinuteInfo","fistMinuteElem","fistMinuteElemH","lastMinuteElem","lastMinuteElemH","targetTimeM","baijiahaoPublish","getBaijiahaoActivity","_task","cookies","getToutiaoConfig","getSuggestWords","getCityDistrict","getUserRights","suggestWords","cityDistrict","userRights","getBaijiahaoConfig","data","_item","searchToutiaoTopicList","searchToutiaoLocation","searchToutiaoUserInfo","searchXiaohongshuLocation","XsEncrypt","crypto","text","textEncoded","Buffer","cipher","Uint8Array","ciphertext","encodedData","decodedData","payload","platform","hexPayload","obj","jsonString","a1","ts","rest","replacer","space","word","xsEncrypt","searchXiaohongshuTopicList","a1Cookie","xt","topicData","topicDataStr","fatchTopic","xs","require","generatorFormData","encodedKey","encodedValue","get3101DetailError","errorList","saveType","toutiaoSingleCover","toutiaoMultCover","toutiaoCoverType","toutiaoOriginal","toutiaoExclusive","toutiaoClaim","coverUrl","coverRes","location","topics","topicContent","topic","sourceData","extraData","COVER_TYPE","getAddTypeValue","msToken","publishOption","postHeaders","postData","a_bogus","publishResult","interceptUrls","route","request","URL","pattern","headers","coverTypeValue","coverContainer","coverUrls","coverUploadEle","coverUploadCount","ele","drawerContainer","confirmBtn","locationContainer","poperInstance","adContainer","isAdOptionVisible","exclusiveContainer","claim","toutiaoAd","toutiaoPublish","TTFansExport","XhsFansExport","WxFansExport","htmlStr","match","BjhFansExport","TTSessionCheck","WxSessionCheck","fingerprint","XhsSessionCheck","BjhSessionCheck","code","getBaijiahaoData","token","yesterday","fansData","readData","incomeData","yesterdayData","bjhData","getToutiaoData","totalData","contentDataYesterday","isReday","undefined","ttData","getWeixinData","userInfo","userInfoHtml","originalMatch","totalUsersMatch","increaseMatch","sign","readMatch","shareMatch","subscribeMatch","wxData","getXiaohongshuData","sevenDataUrl","overAllData","sevenData","xhsData","SearchAccountInfo","handleToutiaoData","pageNum","pageSize","showOriginalData","onlySuccess","visitedUid","articleInfo","articleCell","api_base_info_json","handleWeixinData","cursor","lastPage","ParsePublishPage","body","parsedData","decodeEntities","str","decode","encodeMap","decodeMap","RegExp","finalData","decoded","parsedInfo","fetchArticles","begin","size","rawArticlesInfo","articlesInfo","totalFetched","nextPage","remaining","currentPageSize","_rawArticlesInfo","parsed","filteredList","cursorIndex","nextRawArticlesInfo","nextArticlesInfo","newFiltered","lastMsgId","handleBaijiahaoData","filtered","totalPage","currentPage","usedPages","Set","validItems","final","handleXiaohongshuData","serveUrl","hasNextpage","FetchArticles","getWeixinConfig","userInfoRes","imageList","extra","syncData","descInstance","addressFormItem","declarationFormItem","weitoutiaoPublish","scanRetryMaxCount","QuotaType","GET_QRCODE_DEFAULT_ERROR","ignoreErrno","userTypeMap","URLSearchParams","checkCopyrightStat","resData","client_time_diff","responseData","cloudImages","localImages","ext","fileState","oriWhitelist","_oriWhitelist","white_list","white_list_user","_user","userInfo_res","userInfo_resJson","writerid","reply_id","getWriterList","getRewardText","_type","rewardbind","rewardBuffer","rewardFilePath","task_id","sleep","checkScanResult","_writer","_writer_item","rewardList","matchdID","reward","_reply_item","wxInteractionInfo","_wxInteraction","type","_opt","commentType","replyType","draftData","appMsgId","masssendpage","massSendRes","operation_seq","quota_detail_list","quotaDetail","copyrightStatData","lastData","checkCopyrightStatRes","getTicketResult","getUuidResult","uuid","qrcodeResult","qrcodeBuffer","qrcodeFilePath","randomString","waitQrcodeResultMaxTime","urlParams","urlRewardParams","wxRewardPage","reward_page","isAddRewarder","qrcodeSrc","errorMessage","isAddWord","cover","dialog","pic_msg","ori_dialog","ori_dialog_bd","ori_dialog_ft","_target","search_res","search_res_name","whrite_list","white_td_isadd","btn_isChecked","checkbox","reward_setting","reward_setting_bd","reward_setting_ft","userName","reward_setting_replay","switchAuto","maxAttempts","delayMs","nowCheckTime","attempt","isDisabled","setTimeout","isOneReplay","isCurrentReplay","wxInteraction_setting","wxInteraction_bd","wxInteraction_ft","comment_area","reply_area","commont_rply_opt","poperInput","source","query","dateD","nowD","dropMenu","timeDropMenu","times","originalCheckDialog","popMassend","startTime","reject","imgUrl","weixinPublish","_params","saveDraft","shareImageInfos","cropResult","colorResponseData","themeColor","cropFormData","cropRatios","cropCoordinates","cropCoordinate","cropResponse","sourceText","container","weixinmpPublish","fetchCoverUrl","coverIdInfo","uploadInfos","fileId","availableBuckets","uploadFile","localUrl","fileBuffer","MAX_RETRIES","ossBucketIndex","currentInfo","ossFileId","ossToken","ossDomain","coverInfos","invalidUpload","publishXt","publishXs","createTopic","userDeclarationBind","photoInfo","business_binds","publishDataStr","xscommon","urlObj","isNoteRequest","newHeaders","selectAddress","selector","address","instance","selectDate","getPoperInstance","elements","count","visibleElements","element","style","getDialogInstance","selfDeclarationInstance","selfDeclarationSecondaryMenuInstance","shootingDate","shootingLocation","selfShootingPopup","hasCustomContent","sourceMedia","releaseTimeInstance","xiaohongshuPublish","BetaFlag","Action","func"],"mappings":";;QACA,IAAIA,iBAAiB;YACnB;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QAED,IAAIC,aAAa,CAAC;QAClBA,WAAW,CAAC,GAAG,SAAUC,CAAC;YACxB,OAAO,OAAOA;QAChB;QAEA,SAASC,kBAAkBD,CAAC;YAC1B,IAAIE,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI;gBACJ,OAAO,SAAU7C,CAAC,EAAEE,CAAC;oBACnB,OAAOF,IAAIE;gBACb;gBACA,OAAO,SAAUF,CAAC,EAAEE,CAAC;oBACnB,OAAOF,MAAME;gBACf;gBACA,OAAO,SAAUF,CAAC,EAAEE,CAAC;oBACnB,OAAOF,IAAIE;gBACb;gBACA,OAAO,SAAUF,CAAC,EAAEE,CAAC;oBACnB,OAAOF,IAAIE;gBACb;gBACA,OAAO,SAAUF,CAAC,EAAEE,CA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AACb,GAAG,MAAM,CAACW,CAAC,CAACE,EAAEZ,GAAG,CAACC,GAAG,CAACV,CAAC,CAACsB,IAAI,EAAE,EAAE,IAAI,SAASH,CAAC,CAACE,EAAE,CAACV,GAAG,MAAM,CAACX,CAAC,CAACmB,CAAC,CAACE,EAAE,MAAM,CAACT,GAAG,CAACU,GAAG,GAAG,EAAE,MACjJF,CAAC,CAACC,EAAER,GAAG,IAAI,CAACM,CAAC,CAACE,EAAEP,GAAGC,GAAG,CAACgD,yBAAyB3D;YACpD,OAAOgB,CAAC,CAACC,EAAE,CAACL,GAAG,CAACC,GAAG,CAAC;QACtB;QAEA,SAAS+C,UAAUhE,CAAC,EAAEE,CAAC;YACrB,IAAIC,IAAI;gBACN;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBA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gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAS;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAQ;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["webpack://@iflyrpa/actions/./src/utils/XhsXsCommonEnc.js","webpack://@iflyrpa/actions/./src/utils/ttABEncrypt.js","webpack://@iflyrpa/actions/./src/utils/http.ts","webpack://@iflyrpa/actions/./src/utils/index.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/baijiahaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiahaoActivity/index.ts","webpack://@iflyrpa/actions/./src/actions/getToutiaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/getBaijiaohaoConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoLocation/index.ts","webpack://@iflyrpa/actions/./src/actions/searchToutiaoUserID/index.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuLocation/index.ts","webpack://@iflyrpa/actions/./src/utils/xhsXsEncrypt.ts","webpack://@iflyrpa/actions/./src/actions/searchXiaohongshuTopicList/index.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/toutiaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/common/FansTool/index.ts","webpack://@iflyrpa/actions/./src/actions/common/sessionCheck/index.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getBjhInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getTTInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getWxInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/getXhsInfo.ts","webpack://@iflyrpa/actions/./src/actions/searchAccountInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/types.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleTTData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleWXData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleBjhData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/handleXhsData.ts","webpack://@iflyrpa/actions/./src/actions/searchPublishInfo/index.ts","webpack://@iflyrpa/actions/./src/actions/getWeixinConfig/index.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weitoutiaoPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/utils.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/weixinmpPublish/index.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/mock.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/rpa.ts","webpack://@iflyrpa/actions/./src/actions/xiaohongshuPublish/index.ts","webpack://@iflyrpa/actions/./src/index.ts"],"sourcesContent":["\nvar encrypt_lookup = [\n \"Z\",\n \"m\",\n \"s\",\n \"e\",\n \"r\",\n \"b\",\n \"B\",\n \"o\",\n \"H\",\n \"Q\",\n \"t\",\n \"N\",\n \"P\",\n \"+\",\n \"w\",\n \"O\",\n \"c\",\n \"z\",\n \"a\",\n \"/\",\n \"L\",\n \"p\",\n \"n\",\n \"g\",\n \"G\",\n \"8\",\n \"y\",\n \"J\",\n \"q\",\n \"4\",\n \"2\",\n \"K\",\n \"W\",\n \"Y\",\n \"j\",\n \"0\",\n \"D\",\n \"S\",\n \"f\",\n \"d\",\n \"i\",\n \"k\",\n \"x\",\n \"3\",\n \"V\",\n \"T\",\n \"1\",\n \"6\",\n \"I\",\n \"l\",\n \"U\",\n \"A\",\n \"F\",\n \"M\",\n \"9\",\n \"7\",\n \"h\",\n \"E\",\n \"C\",\n \"v\",\n \"u\",\n \"R\",\n \"X\",\n \"5\"\n];\n\nlet esm_typeof = {}\nesm_typeof.A = function (t) {\n return typeof t\n}\n\nfunction encrypt_b64Encode(t) {\n var e = 664\n , r = 634\n , n = 448\n , o = 599\n , i = 315\n , a = 416\n , u = 512\n , s = 361\n , c = 406\n , l = 487\n , f = 496\n , p = 333\n , h = 630\n , d = 639\n , v = 548\n , g = 582\n , m = 447\n , y = 468\n , w = 375\n , b = 331\n , _ = 149\n , E = 382\n , x = 265\n , k = 625\n , T = 570\n , S = 551\n , A = 582\n , L = 581\n , I = 638\n , R = 618\n , O = 606\n , C = 429\n , N = 651\n , P = 667\n , B = 817\n , M = 333\n , j = 567\n , F = 747\n , D = 561\n , q = 570\n , U = 676\n , G = 840\n , H = 240\n , V = {\n udFrB: function (t, e) {\n return t % e\n },\n cCZFe: function (t, e) {\n return t === e\n },\n jevwl: function (t, e) {\n return t - e\n },\n aqlTy: function (t, e) {\n return t + e\n },\n rceYY: function (t, e) {\n return t >> e\n },\n OwjMq: function (t, e) {\n return t & e\n },\n kSGXO: function (t, e) {\n return t << e\n },\n veNiI: function (t, e) {\n return t === e\n },\n QLthP: function (t, e) {\n return t + e\n },\n wDtJz: function (t, e) {\n return t + e\n },\n nYqUQ: function (t, e) {\n return t & e\n },\n TCArD: function (t, e) {\n return t << e\n },\n RHteb: function (t, e) {\n return t - e\n },\n mZPJZ: function (t, e) {\n return t < e\n },\n zDETq: function (t, e, r, n) {\n return t(e, r, n)\n },\n YlZGp: function (t, e) {\n return t > e\n }\n };\n function W(t, e) {\n return a0_0x10f4ac(e, t - -H)\n }\n for (var X = (W(-413, -442) + W(-e, -r) + \"7\")[W(-n, -o)](\"|\"), z = 0; ;) {\n switch (X[z++]) {\n case \"0\":\n var Y;\n continue;\n case \"1\":\n var K = [];\n continue;\n case \"2\":\n var J = V[W(-i, -a)]($, 3);\n continue;\n case \"3\":\n var $ = t[W(-350, -u)];\n continue;\n case \"4\":\n V[W(-s, -c)](J, 1) ? (Y = t[V[W(-l, -f)]($, 1)],\n K[W(-p, -346)](V[W(-h, -d)](encrypt_lookup[V[W(-503, -v)](Y, 2)] + encrypt_lookup[V[W(-g, -741)](V[W(-331, -m)](Y, 4), 63)], \"==\"))) : V[W(-y, -w)](J, 2) && (Y = V[W(-b, -_)](t[$ - 2], 8) + t[V[W(-l, -E)]($, 1)],\n K[W(-333, -x)](V[W(-k, -505)](V[W(-T, -S)](encrypt_lookup[Y >> 10], encrypt_lookup[V[W(-A, -L)](Y >> 4, 63)]) + encrypt_lookup[V[W(-I, -R)](V[W(-O, -C)](Y, 2), 63)], \"=\")));\n continue;\n case \"5\":\n var Q = 16383;\n continue;\n case \"6\":\n for (var Z = 0, tt = V[W(-509, -N)]($, J); V[W(-P, -B)](Z, tt); Z += Q)\n K[W(-M, -153)](V[W(-j, -F)](encrypt_encodeChunk, t, Z, V[W(-D, -413)](Z + Q, tt) ? tt : V[W(-q, -501)](Z, Q)));\n continue;\n case \"7\":\n return K[W(-U, -G)](\"\")\n }\n break\n }\n}\n\nfunction encrypt_encodeUtf8(t) {\n var e = 185\n , r = 410\n , n = 480\n , o = 222\n , i = 194\n , a = 165\n , u = 147\n , s = 290\n , c = 460\n , l = 472\n , f = 497\n , p = 462\n , h = 286\n , d = 209\n , v = 223\n , g = 590\n , m = {\n bIGxm: function (t, e) {\n return t(e)\n },\n MahgM: function (t, e) {\n return t < e\n },\n czxKn: function (t, e) {\n return t === e\n },\n clYIu: function (t, e) {\n return t + e\n }\n }\n , y = m[b(477, 488)](encodeURIComponent, t)\n , w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - g)\n }\n for (var _ = 0; m[b(333, e)](_, y[b(r, n)]); _++) {\n var E = y[b(o, 290)](_);\n if (m[b(i, a)](E, \"%\")) {\n var x = y[b(u, s)](m[b(574, 472)](_, 1)) + y[b(c, 290)](m[b(605, l)](_, 2))\n , k = parseInt(x, 16);\n w[b(592, f)](k),\n _ += 2\n } else\n w[b(p, f)](E[b(217, h) + b(d, v)](0))\n }\n return w\n}\n\nfunction sign_common(h) {\n return encrypt_b64Encode(encrypt_encodeUtf8(JSON.stringify(h)))\n}\nfunction encrypt_tripletToBase64(t) {\n var e = 11\n , r = 15\n , n = 199\n , o = 34\n , i = 4\n , a = 102\n , u = 276\n , s = 205\n , c = 218\n , l = 11\n , f = 115\n , p = 34\n , h = 161\n , d = 123\n , v = 335\n , g = {};\n function m(t, e) {\n return a0_0x10f4ac(e, t - v)\n }\n g[m(205, 328)] = function (t, e) {\n return t + e\n }\n ,\n g[m(e, 53)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(r, n)] = function (t, e) {\n return t & e\n }\n ,\n g[m(o, i)] = function (t, e) {\n return t >> e\n }\n ,\n g[m(-a, -u)] = function (t, e) {\n return t & e\n }\n ;\n var y = g;\n return y[m(s, c)](encrypt_lookup[63 & y[m(l, -75)](t, 18)], encrypt_lookup[y[m(r, f)](y[m(p, h)](t, 12), 63)]) + encrypt_lookup[t >> 6 & 63] + encrypt_lookup[y[m(-a, -d)](t, 63)]\n}\nfunction encrypt_encodeChunk(t, e, r) {\n var n, o = 165, i = 246, a = 205, u = 353, s = 162, c = 17, l = 351, f = 191, p = 139, h = 79, d = 86, v = 233, g = 270, m = 166, y = {\n hwomB: function (t, e) {\n return t < e\n },\n iHUeL: function (t, e) {\n return t & e\n },\n ELxEv: function (t, e) {\n return t << e\n },\n lBuRH: function (t, e) {\n return t << e\n },\n SkIJl: function (t, e) {\n return t & e\n },\n JYxWY: function (t, e) {\n return t + e\n },\n CxjtF: function (t, e) {\n return t(e)\n }\n }, w = [];\n function b(t, e) {\n return a0_0x10f4ac(t, e - m)\n }\n for (var _ = e; y[b(-63, -o)](_, r); _ += 3)\n n = y[b(-i, -a)](y[b(-166, -124)](t[_], 16), 16711680) + y[b(-u, -205)](y[b(s, -c)](t[_ + 1], 8), 65280) + y[b(-l, -208)](t[y[b(-350, -f)](_, 2)], 255),\n w[b(p, 73)](y[b(h, d)](encrypt_tripletToBase64, n));\n return w[b(-v, -g)](\"\")\n}\n\nfunction a0_0x3693(t, e) {\n var r = [\n \"xUKNL\",\n \"jUrZI\",\n \"rviFu\",\n \"join\",\n \"get\",\n \"LjDtD\",\n \"ZJHyP\",\n \"wOmGY\",\n \"enumera\",\n \"aONWR\",\n \"string\",\n \"kQpMi\",\n \"mZPJZ\",\n \"Ysiay\",\n \"czxKn\",\n \"|5|6|4|\",\n \"prototy\",\n \"jklmnop\",\n \"MuYbw\",\n \"diDwk\",\n \"TRFtx\",\n \"drDHI\",\n \"WLARA\",\n \"xyz0123\",\n \"asBytes\",\n \"|6|0|1|\",\n \"JOtEi\",\n \"Oialn\",\n \"OQrEi\",\n \"uPnXq\",\n \"VWXYZab\",\n \"cIbFa\",\n \"qYuta\",\n \"QDOZZ\",\n \"MahgM\",\n \"iRXZq\",\n \"22098XlFGYn\",\n \"mmLKn\",\n \"jMcIE\",\n \"stringi\",\n \"[object\",\n \"nYqUQ\",\n \"jSgjk\",\n \"ucyEo\",\n \"iewJI\",\n \"vgTwl\",\n \"DnNGR\",\n \"oBytes\",\n \"Xtwzk\",\n \"aqlTy\",\n \"JWnPK\",\n \"1|0|2|4\",\n \"qrstuvw\",\n \"_gg\",\n \"QLthP\",\n \"FJIWy\",\n \"yRnhISG\",\n \"pjUsr\",\n \"KAwuh\",\n \"Thhoa\",\n \"jarkJ\",\n \"WjRNN\",\n \"asStrin\",\n \"x3VT16I\",\n \"357835LaQWjW\",\n \"SkIJl\",\n \"size\",\n \"iyorr\",\n \"iHUeL\",\n \"tTanW\",\n \"tNusJ\",\n \"NiSrP\",\n \"eAt\",\n \"TCArD\",\n \"a2r1ZQo\",\n \"iamspam\",\n \"bOnfu\",\n \"UNSKg\",\n \"HIJKLMN\",\n \"ZfMKC\",\n \"bJhXU\",\n \"zwAAc\",\n \"JYxWY\",\n \"lUAFM97\",\n \"mwaRe\",\n \"EzYWD\",\n \"replace\",\n \"uOtUJ\",\n \"__esMod\",\n \"ViQWI\",\n \"aCMFL\",\n \"EAKSd\",\n \"ule\",\n \"pqnFP\",\n \"qYDsL\",\n \"270726pnaYfG\",\n \"glBZG\",\n \"OwjMq\",\n \"YGrjc\",\n \"ZhAcd\",\n \"JDqFL\",\n \"456789+\",\n \"kEjQs\",\n \"lWhbD\",\n \"OaLTI\",\n \"dXlgm\",\n \"cVte9UJ\",\n \"ctor\",\n \"hwomB\",\n \"wDtJz\",\n \"constru\",\n \"ABHuC\",\n \"zDETq\",\n \"SYNeA\",\n \"BGbij\",\n \"ionFq\",\n \"QzaNS\",\n \"7|3|5|4\",\n \"YlZGp\",\n \"Bjniw\",\n \"ZITuN\",\n \"KPTzH\",\n \"HrBeq\",\n \"xobsT\",\n \"kXJkC\",\n \"QSrEZ\",\n \"ENXtO\",\n \"FYbRJ\",\n \"wOcza/L\",\n \"_hh\",\n \"dVXMb\",\n \"ppkua\",\n \"WgamZ\",\n \"HuwCW\",\n \"362424fnLCuh\",\n \"charCod\",\n \"HhPqg\",\n \"ODunI\",\n \"eJzqq\",\n \"charAt\",\n \"JGAgI\",\n \"ZmserbB\",\n \"TURcG\",\n \"WyrqF\",\n \"iYJzH\",\n \"VIwfH\",\n \"tzzOB\",\n \"YgiCH\",\n \"byyMQ\",\n \"ELxEv\",\n \"0DSfdik\",\n \"HRihr\",\n \"_ii\",\n \"aDsrp\",\n \"ble\",\n \"jTGtW\",\n \"configu\",\n \"cXiYW\",\n \"56kSpAsC\",\n \"158KIldlA\",\n \"oHQtNP+\",\n \"BHavO\",\n \"PCIlh\",\n \"QatIf\",\n \"IKyqh\",\n \"Words\",\n \"Qwnrg\",\n \"44lQAgNu\",\n \"cdefghi\",\n \"nTwxD\",\n \"RHteb\",\n \"coqPr\",\n \"rJwmI\",\n \"aBoeK\",\n \"default\",\n \"exports\",\n \"rceYY\",\n \"isArray\",\n \"mdKKO\",\n \"kzxWE\",\n \"DeBtm\",\n \"tjjUn\",\n \"vJEcD\",\n \"LpfE8xz\",\n \"bin\",\n \"HKazo\",\n \"rable\",\n \"call\",\n \"wordsTo\",\n \"zBiyt\",\n \"GrsGL\",\n \"fqulF\",\n \"jevwl\",\n \"mxfLj\",\n \"xlUnt\",\n \"q42KWYj\",\n \"endian\",\n \"eEqDc\",\n \"oyGAZ\",\n \"bytesTo\",\n \"OzjuJ\",\n \"IfwWq\",\n \"ize\",\n \"6648810piiNEz\",\n \"lTHdy\",\n \"vDLZJ\",\n \"stringT\",\n \"A4NjFqY\",\n \"GkjTz\",\n \"eooJA\",\n \"substr\",\n \"veNiI\",\n \"LYfDp\",\n \"ljKsP\",\n \"jJYWG\",\n \"bcYAf\",\n \"srikB\",\n \"utf8\",\n \"qTbeY\",\n \"yqRzd\",\n \"|3|5\",\n \"bjbAy\",\n \" Array]\",\n \"rMbXP\",\n \"u5wPHsO\",\n \"test\",\n \"gMIMC\",\n \"Deyqv\",\n \" argume\",\n \"ABCDEFG\",\n \"undefin\",\n \"split\",\n \"QTlsj\",\n \"_isBuff\",\n \"OPQRSTU\",\n \"Illegal\",\n \"loSen\",\n \"navigat\",\n \"ObwNo\",\n \"qPbcq\",\n \"7182692QogvXX\",\n \"tvqSn\",\n \"DGptJ\",\n \"HhTfW\",\n \"avIYx\",\n \"defineP\",\n \"PFQbW\",\n \"CjFyM\",\n \"toStrin\",\n \"yMWXS\",\n \"yMyOy\",\n \"0XTdDgM\",\n \"eXkru\",\n \"_blocks\",\n \"indexOf\",\n \"mbBQr\",\n \"lBuRH\",\n \"HzGjH\",\n \"HNErV\",\n \"mEokX\",\n \"userAge\",\n \"UpmtD\",\n \"sgomx\",\n \"KDfKS\",\n \"OTbSq\",\n \"lxMGW\",\n \"0|3|2|1\",\n \"dfWyB\",\n \"lWzAd\",\n \"eyXTL\",\n \"5624qreyZK\",\n \"pow\",\n \"IJstz\",\n \"LMlMB\",\n \"INlwI\",\n \"lRulU\",\n \"TCgZh\",\n \"_digest\",\n \"UBhIl\",\n \"fLtZZ\",\n \"FYSKq\",\n \"2|8|0\",\n \"IoCeZ\",\n \" Object\",\n \"UuTvI\",\n \"lNKLD\",\n \"String\",\n \"Bytes\",\n \"rBVvW\",\n \"KblCWi+\",\n \"pRaIH\",\n \"roperty\",\n \"vTINI\",\n \"atLE\",\n \"functio\",\n \"Udqoy\",\n \"nt \",\n \"htSWx\",\n \"hEwRK\",\n \"encodin\",\n \"sCSVK\",\n \"VuAZF\",\n \"xeIIy\",\n \"RBjMb\",\n \"taTrq\",\n \"vDLFJ\",\n \"bPkya\",\n \"HzimH\",\n \"nCffO\",\n \"BWbtU\",\n \"2|8\",\n \"slice\",\n \"lxMGQ\",\n \"tTiwe\",\n \"JDhJB\",\n \"rCode\",\n \"gNDzY\",\n \"wJkyu\",\n \"cCZFe\",\n \"RNGSl\",\n \"floor\",\n \"clYIu\",\n \"vLiwz\",\n \"BiNSE\",\n \"MtYWB\",\n \"fromCha\",\n \"StNOc\",\n \"|7|5|3|\",\n \"9|1|4|6\",\n \"length\",\n \"UNYAE\",\n \"pngG8yJ\",\n \"hasOwnP\",\n \"pYeWu\",\n \"wTjkk\",\n \"Bvk6/7=\",\n \"KTmgk\",\n \"bIGxm\",\n \"readFlo\",\n \"LFZch\",\n \"_ff\",\n \"1|3|4|2\",\n \"binary\",\n \"LLdJZ\",\n \"ZofOU\",\n \"6399uFPxTQ\",\n \"push\",\n \"YntPT\",\n \"kSGXO\",\n \"random\",\n \"HfpCU\",\n \"hECvuRX\",\n \"getTime\",\n \"iwSyV\",\n \"alert\",\n \"LKMcb\",\n \"DJVdg\",\n \"Hex\",\n \"URzKO\",\n \"CxjtF\",\n \"ZVOCs\",\n \"isBuffe\",\n \"vGpbT\",\n \"rotl\",\n \"udFrB\",\n \"CnbsH\",\n \"crLST\"\n ]\n return r[t -= 131]\n}\nfunction a0_0x10f4ac(t, e) {\n return a0_0x3693(e - -570, t)\n}\n\nvar encrypt_mcr = function (t) {\n var e = 67\n , r = 15\n , n = 164\n , o = 126\n , i = 137\n , a = 39\n , u = 176\n , s = 72\n , c = 56\n , l = 21\n , f = 35\n , p = 34\n , h = 35\n , d = 18\n , v = 25\n , g = 185\n , m = 1149\n , y = 744\n , w = 1295\n , b = 1248\n , _ = 1310\n , E = 1096\n , x = 1166\n , k = 1095\n , T = 1196\n , S = 1180\n , A = 1039\n , L = 976\n , R = 1347\n , I = 1117\n , O = 1168\n , C = 1233\n , N = 1157\n , P = 1006\n , B = 1122\n , M = 1277\n , j = 1288\n , F = 1271\n , D = 986\n , q = 162\n , U = {};\n function H(t, e) {\n return a0_0x10f4ac(e, t - q)\n }\n U[H(-73, -66)] = function (t, e) {\n return t === e\n }\n ,\n U[H(e, 186)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-r, -n)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(r, -o)] = function (t, e) {\n return t & e\n }\n ,\n U[H(-i, -a)] = function (t, e) {\n return t < e\n }\n ,\n U[H(-175, -u)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-59, s)] = function (t, e) {\n return t ^ e\n }\n ,\n U[H(-c, -l)] = function (t, e) {\n return t >>> e\n }\n ,\n U[H(f, p)] = function (t, e) {\n return t >>> e\n }\n ;\n for (var G, V, W = U, z = 3988292384, X = 256, Y = []; X--; Y[X] = W[H(h, -66)](G, 0))\n for (V = 8,\n G = X; V--;)\n G = W[H(r, d)](G, 1) ? W[H(35, v)](G, 1) ^ z : W[H(h, g)](G, 1);\n return function (t) {\n function e(t, e) {\n return H(e - 1181, t)\n }\n if (W[e(m, 1108)]((0,\n esm_typeof.A)(t), e(y, 914))) {\n for (var r = 0, n = -1; W[e(w, b)](r, t[e(_, 1233)]); ++r)\n n = W[e(E, x)](Y[W[e(k, T)](n, 255) ^ t[e(S, A) + e(1022, L)](r)], n >>> 8);\n return W[e(R, 1166)](n, -1) ^ z\n }\n for (r = 0,\n n = -1; W[e(I, 1044)](r, t[e(O, C)]); ++r)\n n = W[e(N, P)](Y[W[e(1229, B)](W[e(M, T)](n, 255), t[r])], W[e(j, 1125)](n, 8));\n return W[e(F, B)](W[e(D, 1122)](n, -1), z)\n }\n}();\n\nfunction GenXSCommon(a1cookie, x_t, x_s) {\n let b1 = 'I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJeSnMDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnoeSfqYHqwl2qt5B0DoIvMzOZQqZVw7IxOeTqwr4qtiIkrOIi/skccxICLdI3Oe0utl2ADZsLveDSKsSPw5IEvsiutJOqw8BVwfPpdeTDWOIx4VIiu6ZPwbPut5IvlaLbgs3qtxIxes1VwHIkumIkIyejgsY/WTge7sjutKrZgedWI9gfKeYWZGI36eWPwyIEJefut0ocVAPBLLI3Aeiqt3cZ7sVom4IESyIhEqQd4AICY24F4gIiifpVwAICZVJo3sWWJs1qwiIvdef97e0ekKIi/e1piS8qwUIE7s1fds6WAeiVwqed5sdut3IxILbd6sdqtDbgKs0PwgIv8aI3z5rqwGBVtwzfTsKD7sdBdskut+Iioed/As1SiiIkKs0F6s3nVuIkge1Pt0IkVkwPwwNVtMI3/e1qtdIkKs1VwVIEesdutA+qwKsuw7IvrRIxDgJfIj2IJexVtVIhiKIi6eDVw/bz4zLadsYjmfIkWo4VtPmVw5IvAe3qtk+LJeTl5sTSEyIEJekdgs3PtsnPwqI35sSPt0Ih/sV04TIk0ejjNsfqw7Iv3sVut04B8qIkWyIvKsxFOekzNsdAKsYPtKIiMFI3MurVtKIvzjIh6s6lFut//sWqtaI3IYbuwl'\n let h = {\n \"s0\": 3,\n \"s1\": \"\",\n \"x0\": \"1\",\n \"x1\": \"3.6.8\",\n \"x2\": \"Mac OS\",\n \"x3\": \"xhs-pc-web\",\n \"x4\": \"4.20.1\",\n \"x5\": a1cookie, // a1 cookie\n \"x6\": x_t,\n \"x7\": x_s,\n \"x8\": b1,\n \"x9\": encrypt_mcr(x_t + x_s + b1),\n \"x10\": 1,\n }\n\n return sign_common(h)\n}\n\nmodule.exports = GenXSCommon\n\n\n// let a1 = '195b24e679dmxgripk2o89yld9kdnoklz0h04octb40000365251';\n// let x_t = 1754108104611;\n// const x_s = 'XYS_2UQhPsHCH0c1PjhFHjIj2erjwjQM89PjNsQhPjHCHDlkJdphHjIj2ePjwjQTJdPIP/ZlgAmGy0Yt4Lh3cFq34DE84F+ewBrM/9IUwebz8F+3J9Qi+SQD8dzN4e8EPeYS2eb7c0mTc9Yrc7z14nI3nLkQcDSenLkG4sR68FVM+nSF2e+NJ9zca0mkzrTj4DV3GMqMpoS3yeWEznbM+L40wn4Lpbb9zr+7/SW6PMYYzeQ1aFTI8gm8J/YL/FzTc0D6zgSyPjTy+0Ys+7c38g8NLSQD8AWjNsQh+sHCHfRjyfp04sQR'\n\n// console.log(GenXSCommon(a1, x_t, x_s));\n","const a0_0x45db08=a0_0x4b0d;function a0_0x4b0d(_0x2bd218,_0x316d6){const _0x165410=a0_0x1654();return a0_0x4b0d=function(_0x4b0d73,_0x5794db){_0x4b0d73=_0x4b0d73-0x84;let _0x1859e3=_0x165410[_0x4b0d73];return _0x1859e3;},a0_0x4b0d(_0x2bd218,_0x316d6);}(function(_0x1b2596,_0x16c0e0){const _0x1227f1=a0_0x4b0d,_0x46fb59=_0x1b2596();while(!![]){try{const _0x383dd4=parseInt(_0x1227f1(0x85))/0x1+-parseInt(_0x1227f1(0xb0))/0x2*(-parseInt(_0x1227f1(0x9b))/0x3)+parseInt(_0x1227f1(0xaa))/0x4+-parseInt(_0x1227f1(0xa0))/0x5*(parseInt(_0x1227f1(0x9d))/0x6)+parseInt(_0x1227f1(0x86))/0x7+-parseInt(_0x1227f1(0xab))/0x8*(parseInt(_0x1227f1(0x8d))/0x9)+parseInt(_0x1227f1(0x91))/0xa;if(_0x383dd4===_0x16c0e0)break;else _0x46fb59['push'](_0x46fb59['shift']());}catch(_0x4fc071){_0x46fb59['push'](_0x46fb59['shift']());}}}(a0_0x1654,0x807f8));const Random=Math['random'](),Ts=Date['now'](),Sm3DoneTs=Ts+0x30,xhrParaDoneTs=Ts+0x109,xhrReqDoneTs=Ts+0x10af0;function a0_0x1654(){const _0x46e031=['floor','dhzx','map','_compress','charCodeAt','min','invalid\\x20j\\x20for\\x20constant\\x20Tj','reset','662|856|1920|977|1920|977|1920|1080|Linux\\x20x86_64','6GqxJwW','error','1578UVUSyW','fromCharCode','replace','17445vhaSjq','isNaN','toString','push','length','write','reduce','charAt','reg','split','2475936ufrFMu','2137592VTpBSF','join','Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe','exports','fmUmtNjj1OfTrR716RULEyQaLPrOG1jpZz0/4Tyzr7/IbcOXs8PxVxHmrAIsIMm6IfTserj+JgCbPHUssUmedGKwCrIziubgSU0FT1MmqPOZXcPDGB3xUyq+vaM7HZyYgJtKyMR=','48064qVwnFy','concat','prototype','167524mhzzJE','5968354Oyyfma','chunk','string','forEach','size','slice','sort','9BjSPrC','sum','repeat','splice','239400JtRPVl'];a0_0x1654=function(){return _0x46e031;};return a0_0x1654();}class SM3Hasher{constructor(){const _0x468533=a0_0x4b0d;this[_0x468533(0xa8)]=new Array(0x8),this[_0x468533(0x87)]=[],this[_0x468533(0x8a)]=0x0,this[_0x468533(0x99)]();}[a0_0x45db08(0x99)](){const _0x11e792=a0_0x45db08;this[_0x11e792(0xa8)][0x0]=0x7380166f,this[_0x11e792(0xa8)][0x1]=0x4914b2b9,this['reg'][0x2]=0x172442d7,this[_0x11e792(0xa8)][0x3]=0xda8a0600,this['reg'][0x4]=0xa96f30bc,this[_0x11e792(0xa8)][0x5]=0x163138aa,this[_0x11e792(0xa8)][0x6]=0xe38dee4d,this[_0x11e792(0xa8)][0x7]=0xb0fb0e4e,this[_0x11e792(0x87)]=[],this[_0x11e792(0x8a)]=0x0;}[a0_0x45db08(0xa5)](_0x22d1ef){const _0x182388=a0_0x45db08;var _0x2ded18=_0x182388(0x88)==typeof _0x22d1ef?function(_0x5e491d){const _0x12d911=_0x182388;var _0x5795ab=encodeURIComponent(_0x5e491d)[_0x12d911(0x9f)](/%([0-9A-F]{2})/g,function(_0x22d98b,_0x5659da){const _0x357908=_0x12d911;return String[_0x357908(0x9e)]('0x'+_0x5659da);}),_0x5c0d1c=new Array(_0x5795ab['length']);return Array[_0x12d911(0x84)][_0x12d911(0x89)]['call'](_0x5795ab,function(_0x2e8583,_0x28f42f){const _0x4b2a85=_0x12d911;_0x5c0d1c[_0x28f42f]=_0x2e8583[_0x4b2a85(0x96)](0x0);}),_0x5c0d1c;}(_0x22d1ef):_0x22d1ef;this['size']+=_0x2ded18['length'];var _0xffe4ea=0x40-this[_0x182388(0x87)][_0x182388(0xa4)];if(_0x2ded18[_0x182388(0xa4)]<_0xffe4ea)this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18);else{for(this['chunk']=this[_0x182388(0x87)][_0x182388(0xb1)](_0x2ded18[_0x182388(0x8b)](0x0,_0xffe4ea));this[_0x182388(0x87)]['length']>=0x40;)this['_compress'](this[_0x182388(0x87)]),_0xffe4ea<_0x2ded18[_0x182388(0xa4)]?this['chunk']=_0x2ded18[_0x182388(0x8b)](_0xffe4ea,Math[_0x182388(0x97)](_0xffe4ea+0x40,_0x2ded18['length'])):this[_0x182388(0x87)]=[],_0xffe4ea+=0x40;}}[a0_0x45db08(0x8e)](_0x34ff8d,_0xecf9f6){const _0x3ddb20=a0_0x45db08;_0x34ff8d&&(this[_0x3ddb20(0x99)](),this[_0x3ddb20(0xa5)](_0x34ff8d)),this['_fill']();for(var _0x28ac8a=0x0;_0x28ac8a<this[_0x3ddb20(0x87)][_0x3ddb20(0xa4)];_0x28ac8a+=0x40)this[_0x3ddb20(0x95)](this[_0x3ddb20(0x87)]['slice'](_0x28ac8a,_0x28ac8a+0x40));var _0x117621,_0x335539,_0x450e58,_0x5b1ad8=null;if('hex'==_0xecf9f6){_0x5b1ad8='';for(_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++)_0x5b1ad8+=(_0x117621=this[_0x3ddb20(0xa8)][_0x28ac8a][_0x3ddb20(0xa2)](0x10),_0x335539=0x8,_0x450e58='0',_0x117621[_0x3ddb20(0xa4)]>=_0x335539?_0x117621:_0x450e58[_0x3ddb20(0x8f)](_0x335539-_0x117621[_0x3ddb20(0xa4)])+_0x117621);}else for(_0x5b1ad8=new Array(0x20),_0x28ac8a=0x0;_0x28ac8a<0x8;_0x28ac8a++){var _0x46ad66=this[_0x3ddb20(0xa8)][_0x28ac8a];_0x5b1ad8[0x4*_0x28ac8a+0x3]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x2]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a+0x1]=(0xff&_0x46ad66)>>>0x0,_0x46ad66>>>=0x8,_0x5b1ad8[0x4*_0x28ac8a]=(0xff&_0x46ad66)>>>0x0;}return this[_0x3ddb20(0x99)](),_0x5b1ad8;}['_fill'](){const _0xa844a0=a0_0x45db08;var _0x15bc36=0x8*this[_0xa844a0(0x8a)],_0x4a32f3=this['chunk'][_0xa844a0(0xa3)](0x80)%0x40;for(0x40-_0x4a32f3<0x8&&(_0x4a32f3-=0x40);_0x4a32f3<0x38;_0x4a32f3++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](0x0);for(var _0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++){var _0xd7dcfe=Math[_0xa844a0(0x92)](_0x15bc36/0x100000000);this['chunk'][_0xa844a0(0xa3)](_0xd7dcfe>>>0x8*(0x3-_0x36cc0b)&0xff);}for(_0x36cc0b=0x0;_0x36cc0b<0x4;_0x36cc0b++)this[_0xa844a0(0x87)][_0xa844a0(0xa3)](_0x15bc36>>>0x8*(0x3-_0x36cc0b)&0xff);}[a0_0x45db08(0x95)](_0x1e530c){const _0x3c50af=a0_0x45db08;function _0x3da582(_0x14b06e,_0x4ec82e){return(_0x14b06e<<(_0x4ec82e%=0x20)|_0x14b06e>>>0x20-_0x4ec82e)>>>0x0;}function _0x489962(_0x5dd43e){const _0x744660=a0_0x4b0d;return 0x0<=_0x5dd43e&&_0x5dd43e<0x10?0x79cc4519:0x10<=_0x5dd43e&&_0x5dd43e<0x40?0x7a879d8a:void console[_0x744660(0x9c)](_0x744660(0x98));}function _0x197f71(_0x5e22dd,_0xfc800b,_0x1300f1,_0xed8891){const _0x3414cb=a0_0x4b0d;return 0x0<=_0x5e22dd&&_0x5e22dd<0x10?(_0xfc800b^_0x1300f1^_0xed8891)>>>0x0:0x10<=_0x5e22dd&&_0x5e22dd<0x40?(_0xfc800b&_0x1300f1|_0xfc800b&_0xed8891|_0x1300f1&_0xed8891)>>>0x0:(console[_0x3414cb(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20FF'),0x0);}function _0x2f42fb(_0x326645,_0x2c63af,_0x558c0d,_0x4a902b){const _0x493bba=a0_0x4b0d;return 0x0<=_0x326645&&_0x326645<0x10?(_0x2c63af^_0x558c0d^_0x4a902b)>>>0x0:0x10<=_0x326645&&_0x326645<0x40?(_0x2c63af&_0x558c0d|~_0x2c63af&_0x4a902b)>>>0x0:(console[_0x493bba(0x9c)]('invalid\\x20j\\x20for\\x20bool\\x20function\\x20GG'),0x0);}if(_0x1e530c[_0x3c50af(0xa4)]<0x40){console[_0x3c50af(0x9c)]('compress\\x20error:\\x20not\\x20enough\\x20data');return;}else{for(var _0x23a9bd=function(_0x7114f5){for(var _0x49cf1f=new Array(0x84),_0x698c70=0x0;_0x698c70<0x10;_0x698c70++)_0x49cf1f[_0x698c70]=_0x7114f5[0x4*_0x698c70]<<0x18,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x1]<<0x10,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x2]<<0x8,_0x49cf1f[_0x698c70]|=_0x7114f5[0x4*_0x698c70+0x3],_0x49cf1f[_0x698c70]>>>=0x0;for(var _0xe5328=0x10;_0xe5328<0x44;_0xe5328++){var _0x2b58f2=_0x49cf1f[_0xe5328-0x10]^_0x49cf1f[_0xe5328-0x9]^_0x3da582(_0x49cf1f[_0xe5328-0x3],0xf);_0x2b58f2=_0x2b58f2^_0x3da582(_0x2b58f2,0xf)^_0x3da582(_0x2b58f2,0x17),_0x49cf1f[_0xe5328]=(_0x2b58f2^_0x3da582(_0x49cf1f[_0xe5328-0xd],0x7)^_0x49cf1f[_0xe5328-0x6])>>>0x0;}for(_0xe5328=0x0;_0xe5328<0x40;_0xe5328++)_0x49cf1f[_0xe5328+0x44]=(_0x49cf1f[_0xe5328]^_0x49cf1f[_0xe5328+0x4])>>>0x0;return _0x49cf1f;}(_0x1e530c),_0x17c086=this[_0x3c50af(0xa8)][_0x3c50af(0x8b)](0x0),_0x3621a2=0x0;_0x3621a2<0x40;_0x3621a2++){var _0x5959b9=_0x3da582(_0x17c086[0x0],0xc)+_0x17c086[0x4]+_0x3da582(_0x489962(_0x3621a2),_0x3621a2),_0x3b42ff=((_0x5959b9=_0x3da582(_0x5959b9=(0xffffffff&_0x5959b9)>>>0x0,0x7))^_0x3da582(_0x17c086[0x0],0xc))>>>0x0,_0x50d411=_0x197f71(_0x3621a2,_0x17c086[0x0],_0x17c086[0x1],_0x17c086[0x2]);_0x50d411=(0xffffffff&(_0x50d411=_0x50d411+_0x17c086[0x3]+_0x3b42ff+_0x23a9bd[_0x3621a2+0x44]))>>>0x0;var _0x910e21=_0x2f42fb(_0x3621a2,_0x17c086[0x4],_0x17c086[0x5],_0x17c086[0x6]);_0x910e21=(0xffffffff&(_0x910e21=_0x910e21+_0x17c086[0x7]+_0x5959b9+_0x23a9bd[_0x3621a2]))>>>0x0,_0x17c086[0x3]=_0x17c086[0x2],_0x17c086[0x2]=_0x3da582(_0x17c086[0x1],0x9),_0x17c086[0x1]=_0x17c086[0x0],_0x17c086[0x0]=_0x50d411,_0x17c086[0x7]=_0x17c086[0x6],_0x17c086[0x6]=_0x3da582(_0x17c086[0x5],0x13),_0x17c086[0x5]=_0x17c086[0x4],_0x17c086[0x4]=(_0x910e21^_0x3da582(_0x910e21,0x9)^_0x3da582(_0x910e21,0x11))>>>0x0;}for(var _0x459622=0x0;_0x459622<0x8;_0x459622++)this['reg'][_0x459622]=(this[_0x3c50af(0xa8)][_0x459622]^_0x17c086[_0x459622])>>>0x0;}}}function EnvData2CharCode(_0x58cd97,_0x23e1e0,_0x3ca6b2){const _0x56cb93=a0_0x45db08;let _0x2d49d4=Random*0xf0>>0x0>0x6d?(Random*0xf0>>0x0)+0x2:Random*0xf0>>0x0,_0x3f2013=Random*0xff>>0x0&0x4d|0x2|0x10|0x20|0x80,_0x4b8ded=[Random*0xffff&0xff&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0x55,Random*0xffff&0xff&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x0]&0xaa,Random*0xffff>>0x8&0xaa|[0x1,0x0,0x1,0xf]['slice'](0x0,0x2)[0x1]&0x55,Random*0xffff>>0x8&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x0,0x2)[0x1]&0xaa,_0x2d49d4&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0x55,_0x2d49d4&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x0]&0xaa,_0x3f2013&0xaa|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0x55,_0x3f2013&0x55|[0x1,0x0,0x1,0xf][_0x56cb93(0x8b)](0x2,0x4)[0x1]&0xaa],_0x5bb315=_0x56cb93(0x9a)['split']('')[_0x56cb93(0x94)](_0x42b4c4=>_0x42b4c4[_0x56cb93(0x96)](0x0)),_0x1cdc95=((String(xhrParaDoneTs+0x3)&0xff)+',')[_0x56cb93(0xa9)]('')[_0x56cb93(0x94)](_0x58aa5d=>_0x58aa5d[_0x56cb93(0x96)](0x0));const _0x26ee7a=new SM3Hasher(),_0xe2d586=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a['sum'](_0x58cd97+_0x56cb93(0x93))),_0x571095=_0x26ee7a[_0x56cb93(0x8e)](_0x26ee7a[_0x56cb93(0x8e)](_0x23e1e0+'dhzx')),_0x4dabdb=_0x26ee7a[_0x56cb93(0x8e)](_0x3ca6b2);let _0x4139e6=[0x29,(xhrReqDoneTs-0x190e5788800)/0x3e8/0x3c/0x3c/0x18/0xe>>0x0,0x6,xhrParaDoneTs-Ts+0x3&0xff,xhrParaDoneTs&0xff,xhrParaDoneTs>>0x8&0xff,xhrParaDoneTs>>0x10&0xff,xhrParaDoneTs>>0x18&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff,xhrParaDoneTs/0x100/0x100/0x100/0x100/0x100&0xff%0x100&0xff/0x100&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]&0xff,[0xa,0x4,0x4,0x0,0x1][0x4]>>0x8&0xff,[0xa,0x4,0x4,0x0,0x1][0x0],[0xa,0x4,0x4,0x0,0x1][0x1],[0xa,0x4,0x4,0x0,0x1][0x2],[0xa,0x4,0x4,0x0,0x1][0x3],0x8&0xff,0x8>>0x8&0xff,0x8>>0x10&0xff,0x8>>0x18&0xff,_0xe2d586[0x9],_0xe2d586[0x12],0x3,_0xe2d586[0x3],_0x571095[0xa],_0x571095[0x13],0x4,_0x571095[0x4],_0x4dabdb[0xb],_0x4dabdb[0x15],0x5,_0x4dabdb[0x5],Sm3DoneTs&0xff,Sm3DoneTs>>0x8&0xff,Sm3DoneTs>>0x10&0xff,Sm3DoneTs>>0x18&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100&0xff,Sm3DoneTs/0x100/0x100/0x100/0x100/0x100&0xff,0x3,0x6529&0xff,0x6529>>0x8&0xff,0x6529>>0x10&0xff,0x6529>>0x18&0xff,0x4cf&0xff,0x4cf>>0x8&0xff,0x4cf>>0x10&0xff,0x4cf>>0x18&0xff,_0x5bb315['length'],_0x5bb315['length'],0x0,_0x1cdc95[_0x56cb93(0xa4)],_0x1cdc95[_0x56cb93(0xa4)],0x0],_0x339170=[_0x4139e6[0x9],_0x4139e6[0x12],_0x4139e6[0x1e],_0x4139e6[0x23],_0x4139e6[0x2f],_0x4139e6[0x4],_0x4139e6[0x2c],_0x4139e6[0x13],_0x4139e6[0xa],_0x4139e6[0x17],_0x4139e6[0xc],_0x4139e6[0x28],_0x4139e6[0x19],_0x4139e6[0x2a],_0x4139e6[0x3],_0x4139e6[0x16],_0x4139e6[0x26],_0x4139e6[0x15],_0x4139e6[0x5],_0x4139e6[0x2d],_0x4139e6[0x1],_0x4139e6[0x1d],_0x4139e6[0x6],_0x4139e6[0x2b],_0x4139e6[0x21],_0x4139e6[0xe],_0x4139e6[0x24],_0x4139e6[0x25],_0x4139e6[0x2],_0x4139e6[0x2e],_0x4139e6[0xf],_0x4139e6[0x30],_0x4139e6[0x1f],_0x4139e6[0x1a],_0x4139e6[0x10],_0x4139e6[0xd],_0x4139e6[0x8],_0x4139e6[0x29],_0x4139e6[0x1b],_0x4139e6[0x11],_0x4139e6[0x27],_0x4139e6[0x14],_0x4139e6[0xb],_0x4139e6[0x0],_0x4139e6[0x22],_0x4139e6[0x7],_0x4139e6[0x32],_0x4139e6[0x33],_0x4139e6[0x35],_0x4139e6[0x36]];function _0x56e1cd(_0x24b6d5,_0x196cf7){const _0x2eb1f3=_0x56cb93;return _0x196cf7[_0x2eb1f3(0x8c)]((_0x2171ba,_0x925e58)=>_0x925e58-_0x2171ba)[_0x2eb1f3(0x89)](_0x540dbd=>{const _0x2fbb10=_0x2eb1f3;_0x540dbd>=0x0&&_0x540dbd<_0x24b6d5[_0x2fbb10(0xa4)]&&_0x24b6d5[_0x2fbb10(0x90)](_0x540dbd,0x1);}),_0x24b6d5;}let _0x41ebdd=_0x4b8ded[_0x56cb93(0xb1)](_0x56e1cd(_0x4139e6,[0x18,0x1c,0x20,0x31,0x34])),_0x42a240=_0x41ebdd[_0x56cb93(0xa6)]((_0x49ec53,_0x3d9ba0)=>_0x49ec53^_0x3d9ba0),_0xeaa831=_0x339170['concat'](_0x5bb315,_0x1cdc95,_0x42a240),_0x477e24=[],_0x3bd924=0x0;for(let _0xa7bf19=0x0;_0xa7bf19+0x2<_0xeaa831[_0x56cb93(0xa4)];){_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x91|_0xeaa831[_0xa7bf19++]&0x6e),_0x477e24['push'](Random*0x3e8&0xff&0x42|_0xeaa831[_0xa7bf19++]&0xbd),_0x477e24[_0x56cb93(0xa3)](Random*0x3e8&0xff&0x2c|_0xeaa831[_0xa7bf19++]&0xd3),_0x477e24[_0x56cb93(0xa3)](_0xeaa831[_0xa7bf19-0x3]&0x91|_0xeaa831[_0xa7bf19-0x2]&0x42|_0xeaa831[_0xa7bf19-0x1]&0x2c),_0x3bd924+=0x3;}let _0x23c273=_0x4b8ded[_0x56cb93(0xb1)](_0x477e24,_0xeaa831[_0x56cb93(0x8b)](_0x3bd924,_0xeaa831[_0x56cb93(0xa4)]));return _0x23c273[_0x56cb93(0x94)](_0x4d13ab=>String['fromCharCode'](_0x4d13ab))[_0x56cb93(0xac)]('');}function Base2Data(_0x348aa6){const _0x2bc7c7=a0_0x45db08;let _0x874207=[Random*0xffff&0xff&0xaa|[0x3,0x52][0x0]&0x55,Random*0xffff&0xff&0x55|[0x3,0x52][0x0]&0xaa,Random*0x28>>0x0&0xaa|[0x3,0x52][0x1]&0x55,Random*0x28>>0x0&0x55|[0x3,0x52][0x1]&0xaa][_0x2bc7c7(0x94)](_0x224d00=>{const _0x31697c=_0x2bc7c7;return String[_0x31697c(0x9e)](_0x224d00);})[_0x2bc7c7(0xac)](''),_0x235e4f=[0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8,0xe7,0xe6,0xe5,0xe4,0xe3,0xe2,0xe1,0xe0,0xdf,0xde,0xdd,0xdc,0xdb,0xda,0xd9,0xd8,0xd7,0xd6,0xd5,0xd4,0xd3,0xd2,0xd1,0xd0,0xcf,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8,0xc7,0xc6,0xc5,0xc4,0xc3,0xc2,0xc1,0xc0,0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0,0xaf,0xae,0xad,0xac,0xab,0xaa,0xa9,0xa8,0xa7,0xa6,0xa5,0xa4,0xa3,0xa2,0xa1,0xa0,0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,0x8f,0x8e,0x8d,0x8c,0x8b,0x8a,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6f,0x6e,0x6d,0x6c,0x6b,0x6a,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,0x4f,0x4e,0x4d,0x4c,0x4b,0x4a,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x2f,0x2e,0x2d,0x2c,0x2b,0x2a,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0];const _0x29dde1='Ó'[_0x2bc7c7(0x96)](0x0);let _0x4a74f1=0x0;for(let _0xef36c2=0x0;_0xef36c2<_0x235e4f[_0x2bc7c7(0xa4)];_0xef36c2++){let _0x4120e4=_0x235e4f[_0xef36c2];_0x4a74f1=(_0x4a74f1*_0x4120e4+_0x4a74f1+_0x29dde1)%0x100,[_0x235e4f[_0xef36c2],_0x235e4f[_0x4a74f1]]=[_0x235e4f[_0x4a74f1],_0x235e4f[_0xef36c2]];}let _0x39cb62=0x0,_0x5cbaf6='';for(let _0x29a672=0x0;_0x29a672<_0x348aa6[_0x2bc7c7(0xa4)];_0x29a672++){let _0x96c5ae=_0x348aa6[_0x2bc7c7(0x96)](_0x29a672),_0x46c34b=_0x29a672+0x1,_0x5d4cb4=_0x235e4f[_0x46c34b];[_0x235e4f[_0x46c34b],_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100]]=[_0x235e4f[(_0x39cb62+_0x5d4cb4)%0x100],_0x235e4f[_0x46c34b]];let _0x506f4f=_0x235e4f[(_0x235e4f[_0x46c34b]+_0x5d4cb4)%0x100];_0x39cb62=(_0x39cb62+_0x5d4cb4)%0x100,_0x5cbaf6+=String['fromCharCode'](_0x96c5ae^_0x506f4f);}return _0x874207+_0x5cbaf6;}function Data2A_B(_0x19ca6d){const _0x5d8d72=a0_0x45db08;let _0x225e7d=_0x5d8d72(0xad),_0x4f0a28='',_0x251d62=[0x3e,0x12a,0x10,0x0,0x4,0x9,0x10,0x0,0x5,0x36,0x0,0x5,0x3e,0x12b,0x1a,0x12c,0x36,0x0,0x5,0x3e,0x12d,0x1a,0x12e,0x36,0x0,0x5,0x3e,0x12f,0x1a,0x130,0x36,0x0,0x5,0x3e,0x131,0x1a,0x10c,0x36,0x0,0x5,0x3e,0x132,0x1a,0x128,0x36,0x0,0x5,0x36,0x0,0x3,0x4c,0x10,0x0,0x6,0x3e,0x24,0x10,0x0,0x7,0x17,0x0,0x10,0x0,0x9,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x17,0x3,0x31,0x43,0xe,0x9f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x20,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f,0x32,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x12,-0xad,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x0,0x17,0x0,0x13,0xe,0xa0,0x36,0x0,0x2,0x16,0x4,0xf7,0x22,0x0,0x9,0x3c,0xc,0x1,0x17,0xff,0x32,0x17,0x10,0x1f,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x2,0x16,0x4,0xf7,0x36,0x0,0x9,0xc,0x1,0x17,0xff,0x32,0x17,0x8,0x1f,0x12,0x2,0x17,0x0,0x20,0x10,0x0,0x8,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0000,0x32,0x17,0x12,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0x3f000,0x32,0x17,0xc,0x33,0xc,0x1,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x2,0x4,0x19,0x36,0x0,0x9,0x13,0xe,0x13,0x36,0x0,0x6,0x16,0x4,0x67,0x36,0x0,0x8,0x17,0xfc0,0x32,0x17,0x6,0x33,0xc,0x1,0x12,0x3,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x36,0x0,0x4,0x31,0x22,0x0,0x7,0x48,0x2b,0x36,0x0,0x7,0x41];for(let _0x2b8eea=0x0;_0x2b8eea<_0x19ca6d['length'];_0x2b8eea+=0x3){const _0x3fca04=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea),_0xb85a46=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x1),_0x4e702d=_0x19ca6d[_0x5d8d72(0x96)](_0x2b8eea+0x2),_0x4382e1=_0x3fca04<<_0x251d62[0x5e]|_0xb85a46<<_0x251d62[0x70]|_0x4e702d,_0x225aa0=(_0x4382e1&_0x251d62[0x93])>>_0x251d62[0x96];_0x4f0a28+=_0x225e7d[_0x5d8d72(0xa7)](_0x225aa0);const _0x5607b9=(_0x4382e1&_0x251d62[0xad])>>_0x251d62[0xb0];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x3fca04)?_0x225e7d[_0x5d8d72(0xa7)](_0x5607b9):'=';const _0x3fb7b7=(_0x4382e1&_0x251d62[0xc7])>>_0x251d62[0xca];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0xb85a46)?_0x225e7d[_0x5d8d72(0xa7)](_0x3fb7b7):'=';const _0x425784=_0x4382e1&_0x251d62[0xe1];_0x4f0a28+=!Number[_0x5d8d72(0xa1)](_0x4e702d)?_0x225e7d[_0x5d8d72(0xa7)](_0x425784):'=';}return _0x4f0a28;}function GenAB(_0x315138,_0x1c32b3){const _0x206982=a0_0x45db08,_0x56536b=_0x206982(0xaf);return Data2A_B(Base2Data(EnvData2CharCode(_0x315138,_0x1c32b3,_0x56536b)));}module[a0_0x45db08(0xae)]=GenAB;","import type { ResponseData } from \"@iflyrpa/share\";\nimport axios, {\n\ttype AxiosError,\n\ttype AxiosInstance,\n\ttype AxiosResponse,\n\ttype CreateAxiosDefaults,\n\ttype AxiosRequestConfig,\n} from \"axios\";\n\nexport class Http {\n\tprivate apiClient: AxiosInstance;\n\n\tstatic handleApiError(error: unknown): ResponseData {\n\t\t// 如果错误已经是 ResponseData 格式,直接抛出\n\t\tif (error && typeof error === \"object\" && \"code\" in error && \"message\" in error) {\n\t\t\treturn error as ResponseData;\n\t\t}\n\n\t\t// 处理其他类型的错误\n\t\treturn {\n\t\t\tcode: 500,\n\t\t\tmessage: \"\",\n\t\t\tdata: error,\n\t\t};\n\t}\n\tconstructor(config?: CreateAxiosDefaults) {\n\t\tthis.apiClient = axios.create({\n\t\t\t...config,\n \n\t\t\t// proxy: {\n\t\t\t// \thost: \"192.168.137.1\", // 根据你的代理服务设置\n\t\t\t// \tport: 9000,\n\t\t\t// \tprotocol: \"http\" // 可选\n\t\t\t// },\n\t\t});\n\t}\n\n\t// 添加响应拦截器\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\tpublic addResponseInterceptor<T = any>(findError: (response: AxiosResponse<T>) => ResponseData | undefined) {\n\t\tthis.apiClient.interceptors.response.use(\n\t\t\t(response) => {\n\t\t\t\t// 检查响应中的 errno 字段\n\t\t\t\tconst error = findError(response);\n\n\t\t\t\tif (error) {\n\t\t\t\t\treturn Promise.reject(\n\t\t\t\t\t\tObject.assign(error, {\n\t\t\t\t\t\t\textra: {\n\t\t\t\t\t\t\t\tmethod: response.config.method,\n\t\t\t\t\t\t\t\turl: response.config.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\t(error: AxiosError) => {\n\t\t\t\t// 创建标准错误响应格式\n\t\t\t\tconst errorResponse: ResponseData = {\n\t\t\t\t\tcode: error.response?.status || 500,\n\t\t\t\t\tmessage: error.message || \"\",\n\t\t\t\t\tdata: error.response?.data,\n\t\t\t\t\textra: {\n\t\t\t\t\t\tmethod: error.config?.method,\n\t\t\t\t\t\turl: error.config?.url,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\t// 如果服务端返回了详细错误信息,可以使用服务端的错误信息\n\t\t\t\tif (error.response?.data) {\n\t\t\t\t\tif (typeof error.response.data === \"object\") {\n\t\t\t\t\t\t// 如果服务端返回的是对象,可以尝试提取错误信息\n\t\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\t\t\t\tconst serverError = error.response.data as any;\n\t\t\t\t\t\tif (serverError.message) {\n\t\t\t\t\t\t\terrorResponse.message = serverError.message;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 可以保留原始错误数据\n\t\t\t\t\t\terrorResponse.data = serverError;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// 返回标准化的错误响应\n\t\t\t\treturn Promise.reject(errorResponse);\n\t\t\t},\n\t\t);\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\tpublic async api<T = any>(config: AxiosRequestConfig): Promise<T> {\n\t\ttry {\n\t\t\tconst response = await this.apiClient<T>(config);\n\t\t\treturn response.data;\n\t\t} catch (error) {\n\t\t\treturn Promise.reject(Http.handleApiError(error));\n\t\t}\n\t}\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CommonAction, Page, ResponseData } from \"@iflyrpa/share\";\nimport domSerializer from \"dom-serializer\";\nimport { type ChildNode, DomHandler, type Element } from \"domhandler\";\nimport { DomUtils, Parser } from \"htmlparser2\";\nimport mime from \"mime-types\";\n\nimport { Http } from \"./http\";\n\n/**\n * 生成两数之间的随机整数\n * @param min\n * @param max\n * @returns\n */\nexport function getRandomInRange(min: number, max: number) {\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport const getFileState = (filePath: string) => {\n\t// 获取文件名\n\tconst filename = path.basename(filePath);\n\t// 获取文件类型\n\tconst fileType = mime.lookup(filePath);\n\tconst stats = fs.statSync(filePath);\n\t// 获取文件大小\n\tconst fileSize = stats.size;\n\t// 获取最后修改时间\n\tconst lastModifiedDate = stats.mtime;\n\n\treturn {\n\t\tname: filename,\n\t\ttype: fileType,\n\t\tsize: fileSize,\n\t\tlastModifiedDate: lastModifiedDate.toString(),\n\t};\n};\n\nexport type AspectRatio = [number, number];\nexport type CropCoordinates = {\n\tx1: number;\n\ty1: number;\n\tx2: number;\n\ty2: number;\n};\n\n/**\n * 获取特定的比例切割图片,获取切割的坐标\n * @param width 图片长度\n * @param height 图片高度\n * @param aspectRatio 切割比例:[宽度,高度]\n * @returns\n */\nexport const calculateCropCoordinates = (width: number, height: number, aspectRatio: AspectRatio): CropCoordinates => {\n\tconst targetRatio = aspectRatio[0] / aspectRatio[1];\n\tlet cropWidth: number;\n\tlet cropHeight: number;\n\n\tif (width / height > targetRatio) {\n\t\t// 图片过宽,需要裁切宽度\n\t\tcropHeight = height;\n\t\tcropWidth = height * targetRatio;\n\t} else {\n\t\t// 图片过高,需要裁切高度\n\t\tcropWidth = width;\n\t\tcropHeight = width / targetRatio;\n\t}\n\n\tconst x1 = (width - cropWidth) / 2;\n\tconst y1 = (height - cropHeight) / 2;\n\tconst x2 = x1 + cropWidth;\n\tconst y2 = y1 + cropHeight;\n\n\t// 返回百分比坐标\n\treturn {\n\t\tx1: x1 / width,\n\t\ty1: y1 / height,\n\t\tx2: x2 / width,\n\t\ty2: y2 / height,\n\t};\n};\n\n// 提取 html 中的 img 标签\nexport const extractImgTag = (html: string) => {\n\tconst srcList: string[] = [];\n\n\tconst parser = new Parser({\n\t\tonopentag(name, attributes) {\n\t\t\tif (name === \"img\" && (attributes.src.trim() || attributes.currentSrc.trim())) {\n\t\t\t\tsrcList.push(attributes.src.trim() || attributes.currentSrc.trim());\n\t\t\t}\n\t\t},\n\t});\n\n\tparser.write(html);\n\tparser.end();\n\n\treturn srcList;\n};\n\n/**\n * 时间格式化\n * @param time\n * @param format 默认 yyyy-MM-dd HH:mm\n * @returns 时间字符串\n */\nexport class TimeFormatter {\n\tstatic format(timestamp: number, formatStr: String = 'yyyy-MM-dd hh:mm') {\n\t // 自动判断:如果是10位(秒),就转为毫秒\n\t if (typeof timestamp === 'number' && timestamp.toString().length === 10) {\n\t\ttimestamp *= 1000;\n\t }\n \n\t const date = new Date(timestamp);\n \n\t const map: Record<string, string> = {\n\t\t\"yyyy\": String(date.getFullYear()),\n\t\t\"yy\": String(date.getFullYear()).slice(-2),\n\t\t\"MM\": String(date.getMonth() + 1).padStart(2, '0'),\n\t\t\"dd\": String(date.getDate()).padStart(2, '0'),\n\t\t\"hh\": String(date.getHours()).padStart(2, '0'),\n\t\t\"mm\": String(date.getMinutes()).padStart(2, '0'),\n\t\t\"ss\": String(date.getSeconds()).padStart(2, '0'),\n\t\t\"M\": String(date.getMonth() + 1), // 月不带前导零\n \t\t\"d\": String(date.getDate()), // 日不带前导零\n\t\t\"h\": String(date.getHours()), // 不带前导零\n\t\t\"m\": String(date.getMinutes()), // 不带前导零\n\t\t\"s\": String(date.getSeconds()) // 不带前导零\n\t };\n \n\t return formatStr.replace(/yyyy|yy|MM|dd|hh|mm|ss|M|d|h|m|s/g, key => map[key]);\n\t}\n }\nexport const replaceImgSrc = (html: string, callback: (dom: Element) => Element) => {\n\tlet lastedHtml = html;\n\n\tconst isImageTag = (node: ChildNode): node is Element => node.type === \"tag\" && node.name === \"img\";\n\n\tconst traverseDom = (node: ChildNode) => {\n\t\tif (DomUtils.hasChildren(node)) {\n\t\t\tfor (const child of node.children) {\n\t\t\t\tif (isImageTag(child)) {\n\t\t\t\t\tcallback(child);\n\t\t\t\t}\n\t\t\t\ttraverseDom(child);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handler = new DomHandler((error, dom) => {\n\t\tif (error) {\n\t\t\tconsole.log(error);\n\t\t} else {\n\t\t\t// 处理 DOM 节点的函数\n\t\t\tdom.forEach(traverseDom);\n\t\t}\n\n\t\tlastedHtml = domSerializer(dom, { decodeEntities: false });\n\t});\n\n\tconst parser = new Parser(handler, { decodeEntities: false });\n\tparser.write(html);\n\tparser.end();\n\n\treturn lastedHtml;\n};\n\nexport const stringifyError = (error: unknown) => {\n\tif (error instanceof Error) {\n\t\treturn error.toString();\n\t}\n\n\tif (typeof error === \"object\") {\n\t\treturn JSON.stringify(error);\n\t}\n\n\treturn error;\n};\n\n/**\n * 创建一个函数,该函数会依次执行传入的函数列表,直到有一个函数成功或所有函数都失败。\n *\n * @template P - 函数的参数类型,为一个任意长度的数组。\n * @template T - 函数的返回类型,为一个 Promise 的解析值类型。\n * @param {CommonAction<P, T>[]} actions - 一个函数列表,每个函数的类型为 `(...p: P) => Promise<T>`。\n * @returns {CommonAction<P, T>} - 返回一个新的函数,其类型与传入的函数列表中的函数类型相同。\n * 当调用该函数时,会依次执行 `actions` 中的函数,直到有一个函数成功(即返回一个解析的 Promise),\n * 或者所有函数都失败(即抛出异常)。如果所有函数都失败,则抛出最后一个错误。\n *\n * @example\n * const action1 = async (num) => {\n * if (num > 0) return \"Action 1 succeeded\";\n * throw new Error(\"Action 1 failed\");\n * };\n *\n * const action2 = async (num) => {\n * if (num > 1) return \"Action 2 succeeded\";\n * throw new Error(\"Action 2 failed\");\n * };\n *\n * const combinedAction = executeAction(action1, action2);\n *\n * (async () => {\n * try {\n * const result = await combinedAction(1);\n * console.log(result); // 输出: \"Action 2 succeeded\"\n * } catch (error) {\n * console.error(error.message);\n * }\n * })();\n */\nexport const executeAction = <P, T>(...actions: CommonAction<P, T>[]): CommonAction<P, T> => {\n\treturn async (task, params) => {\n\t\tlet result: ResponseData<T> = {\n\t\t\tcode: 500,\n\t\t\tmessage: \"\",\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\tdata: null as any,\n\t\t};\n\n\t\tfor (let index = 0; index < actions.length; index++) {\n\t\t\tconst action = actions[index];\n\n\t\t\ttry {\n\t\t\t\tresult = await action(task, params);\n\t\t\t} catch (error) {\n\t\t\t\tresult = Http.handleApiError(error);\n\t\t\t}\n\n\t\t\t// code === 0 表示成功, code === 200 虽然表示失败,但是不需要继续执行后续的 action\n\t\t\tif (result.code === 0 || result.code === 200) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// 不是最后一个 action,上报错误信息\n\t\t\tif (index !== actions.length - 1) {\n\t\t\t\ttask.logger.error(result.message, stringifyError(result.data), result.extra);\n\t\t\t}\n\t\t}\n\n\t\t// 所有 action 都执行完毕但都失败了,返回最后一个失败结果\n\t\treturn result;\n\t};\n};\n\n/**\n * 将 HTML 内容复制到剪贴板\n * @param page - 页面对象\n * @param html - HTML 内容\n * @param options - 选项,包括格式和回退\n * @returns 无返回值\n */\nexport async function copyHtmlToClipboard(page: Page, html: string, options = { format: \"text/html\", fallback: true }) {\n\ttry {\n\t\t// 尝试使用原生 API\n\t\tawait page.evaluate(\n\t\t\tasync ({ htmlContent, format }) => {\n\t\t\t\tconst blob = new Blob([htmlContent], { type: format });\n\t\t\t\tawait navigator.clipboard.write([new ClipboardItem({ [format]: blob })]);\n\t\t\t},\n\t\t\t{ htmlContent: html, format: options.format },\n\t\t);\n\t} catch (error) {\n\t\tif (options.fallback) {\n\t\t\t// 回退到 DOM 操作\n\t\t\tawait page.evaluate((htmlContent) => {\n\t\t\t\tconst div = document.createElement(\"div\");\n\t\t\t\tdiv.contentEditable = \"true\";\n\t\t\t\tdiv.style.cssText = `\n position: fixed;\n left: -9999px;\n opacity: 0;\n pointer-events: none;\n `;\n\n\t\t\t\tdiv.innerHTML = htmlContent;\n\t\t\t\tdocument.body.appendChild(div);\n\n\t\t\t\tconst range = document.createRange();\n\t\t\t\trange.selectNodeContents(div);\n\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <忽略错误>\n\t\t\t\tconst selection = window.getSelection()!;\n\t\t\t\tselection.removeAllRanges();\n\t\t\t\tselection.addRange(range);\n\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\tdocument.body.removeChild(div);\n\t\t\t\tselection.removeAllRanges();\n\t\t\t}, html);\n\t\t}\n\t}\n}\n\n/**\n * 通用弹窗监听处理器\n * @param page - Playwright 页面对象\n * @param popupSelector - 弹窗的选择器(字符串或 Locator)\n * @param popKey - 弹窗中的唯一键(字符串)\n * @param buttonSelector - 弹窗中需要点击的按钮选择器\n * @param options - 可选配置项\n */\nexport function PopupListener(\n\tpage: Page, \n\tpopupSelector: string, \n\tpopKey: string, \n\tbuttonSelector: string, \n\toptions:{\n\t\tcheckInterval?: number;\n\t\tstopAfterClick?: boolean;\n\t} = {}) {\n\tconst {\n\t\tcheckInterval = 1000,\n\t\tstopAfterClick = false\n\t} = options;\n\n\tconst popup = page.locator(popupSelector);\n\tconst button = page.locator(buttonSelector);\n\n\tconst intervalId = setInterval(async () => {\n\t\ttry {\n\t\t\tif (await popup.count() > 0 && await popup.isVisible() && (await popup.textContent()||\"\").includes(popKey)) {\n\t\t\t\tawait button.click({ force: true });\n\n\t\t\t\tif (stopAfterClick) {\n\t\t\t\t\tclearInterval(intervalId);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) { }\n\t}, checkInterval);\n\n\treturn () => {\n\t\tclearInterval(intervalId);\n\t};\n}\n\n// 将 url 的 queryString 解析成对象\nexport const parseUrlQueryString = (url: string) => {\n\tconst queryStringObject: Record<string, string> = {};\n\n\t// 检查 URL 是否包含查询参数\n\tif (!url || !url.includes(\"?\")) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 提取查询字符串部分\n\tconst queryString = url.split(\"?\")[1];\n\n\t// 检查查询字符串是否为空\n\tif (!queryString) {\n\t\treturn queryStringObject;\n\t}\n\n\t// 处理 hash 部分\n\tconst queryWithoutHash = queryString.split(\"#\")[0];\n\n\t// 分割查询参数\n\tconst queryStringArray = queryWithoutHash.split(\"&\");\n\n\tfor (const item of queryStringArray) {\n\t\t// 跳过空参数\n\t\tif (!item) continue;\n\n\t\tconst equalIndex = item.indexOf(\"=\");\n\n\t\t// 处理没有值的参数 (如 ?param)\n\t\tif (equalIndex === -1) {\n\t\t\tqueryStringObject[item] = \"\";\n\t\t} else {\n\t\t\tconst key = item.slice(0, equalIndex);\n\t\t\tconst value = item.slice(equalIndex + 1);\n\n\t\t\t// 尝试解码,如果解码失败则使用原始值\n\t\t\ttry {\n\t\t\t\tqueryStringObject[key] = decodeURIComponent(value);\n\t\t\t} catch (e) {\n\t\t\t\tqueryStringObject[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn queryStringObject;\n};\n\n/**\n * 合并默认参数\n * @param params\n * @param defaults\n * @returns\n */\nexport const defaultParams = <P = Record<string, unknown>>(params: P, defaults: Partial<P>): P => {\n\treturn Object.assign({}, defaults, params);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction } from \".\";\nimport { extractImgTag, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n\terrmsg: string;\n\terrno: number;\n}\n\ninterface ImageRetResponse {\n\tbos_url: string;\n\thttps_url: string;\n\tno_waterlog_bos_url: string;\n\torg_url: string;\n}\n\nconst errnoMap: Record<number, string> = {\n\t20040706: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20040084: \"正文图片和封面图片推荐jpg、png格式。\",\n\t20050004: \"今日百家号发布次数已达上限,请明天再试。\",\n\t10000015: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20050000: \"操作太频繁,请稍后再试\",\n\t20040027: \"你的账号状态异常,请到百家号平台检查账号状态。\",\n\t10000017: \"账号存在异常,需前往百家号平台完成发文验证后可激活使用。\",\n\t20040033: \"封面图片推荐 jpg、png格式,宽高在372×284-5000×5000 范围内。\",\n\t2004005714: \"网络环境异常,请检查网络后重试发布。\",\n\t401100032: \"异常,请检查图片(如:格式、版权、合规性等)。\",\n\t20040034: \"封面图片推荐jpg、png格式,不支持gif格式。\",\n\t20040124: \"服务器异常,请稍后重试!\",\n\t20040001: \"当前用户未登录,请登陆后重试!\",\n 401100025: \"该应用不支持此媒资类型\",\n 401100033: \"图片宽高不满足要求\"\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { baijiahaoSingleCover, baijiahaoMultCover, baijiahaoCoverType } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n\n\t\t// 检查响应中的 errno 字段\n\t\tif (response.data.errno !== 0) {\n\t\t\tlet errmsg = response.config.defaultErrorMsg || `文章${msgType}异常,请稍后重试。`;\n\n\t\t\tif (response.data.errno === 20050000) {\n\t\t\t\terrmsg = msgType + errnoMap[response.data.errno];\n\t\t\t}\n\t\t\tif (response.data.errno === 401100032) {\n\t\t\t\terrmsg = `图片${msgType}${errnoMap[response.data.errno]}`;\n\t\t\t} else if (errnoMap[response.data.errno]) {\n\t\t\t\terrmsg = errnoMap[response.data.errno];\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.errno] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/home/index\",\n\t\tdefaultErrorMsg: `百家号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\t// 1. 获取用户 appId\n\tconst appIdInfo = await http.api<CommonResponse<{ user: { app_id: number } }>>({\n\t\tmethod: \"post\",\n\t\turl: \"https://baijiahao.baidu.com/builder/app/appinfo\",\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试。\",\n\t});\n\n\tconst appId = appIdInfo.data.user.app_id;\n\n\tconst uploadImages = async (_images: string[]) => {\n\t\t// 过滤掉空字符串\n\t\tconst images = _images.filter((url) => !!url && url.trim() !== \"\");\n\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"org_file_name\", fileName);\n\t\t\t\tformData.append(\"type\", \"image\");\n\t\t\t\tformData.append(\"app_id\", appId);\n\t\t\t\tformData.append(\"is_waterlog\", \"1\");\n\t\t\t\tformData.append(\"save_material\", \"1\");\n\t\t\t\tformData.append(\"no_compress\", \"0\");\n\t\t\t\tformData.append(\"article_type\", \"news\");\n\t\t\t\tformData.append(\"media\", fs.createReadStream(image));\n\n\t\t\t\tconst res = await http.api<{ ret: ImageRetResponse }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://baijiahao.baidu.com/materialui/picture/uploadProxy\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t});\n\n\t\t\t\treturn res.ret;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 2. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].bos_url;\n\t\t\tdom.attribs[\"data-bjh-origin-src\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-params\"] = targetContentImages[idx].org_url;\n\t\t\tdom.attribs[\"data-bjh-type\"] = \"IMG\";\n\t\t}\n\n\t\treturn dom;\n\t});\n\n\t// 3. 上传竖版封面\n\t// let vertical_cover = params.settingInfo.baijiahaoVerticalCover;\n\t// if (vertical_cover) {\n\t// \tvertical_cover = (await uploadImages([vertical_cover]))[0].bos_url;\n\t// }\n\n\t// 4. 上传横版封面\n\tconst horizontalCoverUrl = baijiahaoCoverType === \"single\" ? [baijiahaoSingleCover] : baijiahaoMultCover;\n\tconst horizontalCoverRes = await uploadImages(horizontalCoverUrl);\n\tconst cover_images = horizontalCoverRes.map((item) => ({\n\t\tsrc: item.bos_url,\n\t\tmachine_chooseimg: 0,\n\t\tisLegal: 0,\n\t}));\n\tconst _cover_images_map = horizontalCoverRes.map((item) => ({\n\t\tsrc: item?.bos_url,\n\t\torigin_src: item?.org_url,\n\t}));\n\n\t// 5. 构造发布数据\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst activityList = params.settingInfo.baijiahaoSelectActivityCache;\n\tconst cover_layout = baijiahaoCoverType === \"single\" ? \"one\" : \"three\";\n\n\tconst activity_list = [\n\t\t...(activityList.length > 0 ? [{ id: `task_${activityList[0]}`, is_checked: 1 }] : []),\n\t\t...(params.settingInfo.baijiahaoPublishConf?.map( item => ({ id : item.confName, is_checked : item.isChecked? 1 : 0 })) || [])\n\t];\n\n\tif(isAi && !activity_list.some(item => 'aigc_bjh_status' in item)){ activity_list.push({ id : 'aigc_bjh_status', is_checked : 1 })} // 兼容旧版配置\n\n\tconst publishData: Record<string, any> = {\n\t\ttitle: params.settingInfo.baijiahaoTitle,\n\t\tcontent,\n\t\t// vertical_cover,\n\t\tabstract: params.settingInfo.baijiahaoAbstract,\n\t\tcover_layout,\n\t\tcover_images: JSON.stringify(cover_images),\n\t\t_cover_images_map: JSON.stringify(_cover_images_map),\n\t\ttype: \"news\",\n\t\tsource_reprinted_allow: 0,\n\t\tabstract_from: 1,\n\t\tisBeautify: \"false\",\n\t\tusingImgFilter: \"false\",\n\t\tsource: \"upload\",\n\t\tcover_source: \"upload\",\n\t\tevent2news: params.settingInfo?.baijiahaoEvent2News ? 2 : 0,\n\t\tactivity_list,\n\t\t...(params.settingInfo.timer ? { timer_time: params.settingInfo.timer } : {}),\n\t};\n\n\tconst isDraft = params.saveType === \"draft\";\n\n\tconst saveUrl = isDraft\n\t\t? \"https://baijiahao.baidu.com/pcui/article/save?callback=bjhdraft\"\n\t\t: \"https://baijiahao.baidu.com/pcui/article/publish?callback=bjhpublish\";\n\n task._timerRecord['PrePublish']= Date.now();\n \n\tconst res = await http.api<{ ret: { article_id: string } }>({\n\t\tmethod: \"post\",\n\t\turl: saveUrl,\n\t\tdata: publishData,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\torigin: \"https://baijiahao.baidu.com\",\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/edit?type=news\",\n\t\t},\n\t\tdefaultErrorMsg: isDraft ? \"文章同步出现异常,请稍后重试。\" : \"文章发布出现异常,请稍后重试。\",\n\t});\n\n\treturn success(res.ret.article_id, \"百家号发布完成。\");\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, TimeFormatter} from \"../../utils\";\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"baijiahao.baidu.com\",\n\t\turl: \"https://baijiahao.baidu.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://baijiahao.baidu.com/builder/rc/edit?type=news&is_from_cms=1\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".bjh-edit-header\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\".edui-editor-toolbarbox\", { state: \"visible\" });\n\n\t// 2. 关闭纯文本粘贴\n\t// 有个默认开启纯文本粘贴的提示,先关闭\n\tif (await page.locator(\"#_onceTip-news_pasteplain_tip\").isVisible()) {\n\t\tawait page.locator(\"#_onceTip-news_pasteplain_tip .confirm\").click();\n\t}\n\t// 判断是否开启纯文本粘贴,如果开启,点击关闭\n\tif (await page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").isVisible()) {\n\t\tawait page.locator(\".edui-editor-toolbarbox .edui-button.edui-for-pasteplain .edui-state-checked\").click();\n\t}\n\n\t// 3. 填写标题\n\tconst titleInstance = page.locator(\"#ueditor #bjhNewsTitle .input-box textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\"#ueditor .edui-editor-iframeholder iframe\");\n\t// 模拟Ctrl+A全选\n\tawait page.keyboard.press(\"Control+A\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 等待 1 秒钟(让正文中的图片上传上去)\n\tawait page.waitForTimeout(1000);\n\n\t// 5. 设置封面\n\tconst coverFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(0);\n\tconst isSingleCover = params.settingInfo.baijiahaoCoverType === \"single\";\n\tif (isSingleCover) {\n\t\t// 单图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"单图\" })\n\t\t\t.click();\n\t} else {\n\t\t// 多图\n\t\tawait coverFormItem\n\t\t\t.locator(\".cheetah-form-item-control label.cheetah-radio-wrapper\")\n\t\t\t.filter({ hasText: \"三图\" })\n\t\t\t.click();\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\t(isSingleCover ? [params.settingInfo.baijiahaoSingleCover] : params.settingInfo.baijiahaoMultCover).map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\tconst coverSelector = page.locator(\n\t\t\".cheetah-form-item-control .edit-cover-container .cover-list .DraggableTags-tag-drag .coverUploaderView\",\n\t);\n\tconst coverCount = await coverSelector.count();\n\n\tfor (let i = 0; i < coverCount; i++) {\n\t\tconst item = coverSelector.nth(i);\n\t\tconst image = images[i];\n\n\t\t// 滚动到可视区域\n\t\tawait item.evaluate((node) => node.scrollIntoView());\n\n\t\t// 如果已经存在图片,选择更换\n\t\tif (await item.locator(\".actions-wrap\").isVisible()) {\n\t\t\tawait item.locator(\".actions-wrap .action\").filter({ hasText: \"更换\" }).click();\n\t\t} else {\n\t\t\tawait item.click();\n\t\t}\n\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\".cheetah-modal-root .cheetah-ui-pro-image-modal\", { state: \"visible\" });\n\t\t// 选择本地图片 tab\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-nav-list .cheetah-tabs-tab\")\n\t\t\t.filter({ hasText: \"本地图片\" })\n\t\t\t.click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-tabs-tabpane-active .cheetah-upload-wrapper\")\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([image]);\n\t\t// 等待上传完成(可以用去编辑是否可点击来判断)\n\t\t// 等待 button 元素上面的 disabled 属性消失\n\t\tawait page.waitForSelector(\n\t\t\t\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button#imageModalEditBtn[disabled]\",\n\t\t\t{ state: \"detached\" },\n\t\t);\n\t\t// 点击确认关闭弹窗\n\t\tawait page\n\t\t\t.locator(\".cheetah-modal-root .cheetah-ui-pro-image-modal .cheetah-modal-footer button\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.click();\n\t\t// 等待 2 秒\n\t\tawait page.waitForTimeout(1000);\n\t}\n\n\t// 6. 摘要\n\tconst abstractFormItem = page\n\t\t.locator(\".bjh-edit-wrap-set .cheetah-form-item\")\n\t\t.nth(1)\n\t\t.locator(\"textarea.cheetah-input\");\n\tawait abstractFormItem.click();\n\tawait abstractFormItem.fill(params.settingInfo.baijiahaoAbstract);\n\n\t// 7. 设置\n\tconst isAi = params.settingInfo.baijiahaoIsAi.includes(\"isAi\");\n\tconst settingFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(5);\n\tif (isAi) {\n\t\tawait settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").filter({ hasText: \"AI创作声明\" }).click();\n\t}\n\tif(params.settingInfo.baijiahaoPublishConf){\n\t\tfor (const item of params.settingInfo.baijiahaoPublishConf) {\n\t\t\tconst _settingFormItem = settingFormItem.locator(\"label.cheetah-checkbox-wrapper\").locator(`span.${item.confName}`)\n\t\t\tif((await _settingFormItem.isChecked()) !== item.isChecked ) await _settingFormItem.click();\n\t\t\tawait page.waitForTimeout(200);\n\t\t};\n\t}\n\n\tconst enent2NewsBtn = page.locator(\"input#event2news\")\n\tif((await enent2NewsBtn.isVisible()) && params.settingInfo.baijiahaoEvent2News) await enent2NewsBtn.click()\n\n\t// 8. 活动投稿\n\tif (params.settingInfo.baijiahaoActivity.length > 0 && params.settingInfo.baijiahaoSelectActivityCache.length > 0) {\n\t\tconst activity = params.settingInfo.baijiahaoActivity.filter((it) =>\n\t\t\tparams.settingInfo.baijiahaoSelectActivityCache.includes(it.id),\n\t\t);\n\t\tif (activity.length > 0) {\n\t\t\tconst activityFormItem = page.locator(\".bjh-edit-wrap-set .cheetah-form-item\").nth(3);\n\t\t\tconst name = activity[0].task_name;\n\t\t\tconst findActivity = activityFormItem.locator(\".cheetah-form-item-control\").getByText(name, { exact: true });\n\t\t\tif ((await findActivity.count()) > 0) {\n\t\t\t\tawait findActivity.first().locator(\"..\").click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 9. 保存草稿 / 发布\n\tconst {articleId, message}= await new Promise<{articleId: string, message:string}>(async (resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tconst url = response.url();\n\t\t\tif (url.includes(\"/pcui/article/save\") || url.includes(\"/pcui/article/publish\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve({articleId:jsonResponse?.ret?.article_id, message: jsonResponse?.errmsg});\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n task._timerRecord['PrePublish']= Date.now();\n\n\t\tconst operatorContainer = page.locator(\".editor-component-operator\");\n\t\tif (params.saveType === \"draft\") {\n\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"存草稿\" }).locator(\"button\").click();\n\t\t} else {\n\t\t\tif (params.settingInfo.timer) {\n\t\t\t\t// 点击“定时发布”按钮\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: \"定时发布\" }).locator(\"button\").click();\n\n\t\t\t\t// 选择日期\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"日\"}).click();\n\t\t\t\tawait page.locator('#select-date_list + * .cheetah-select-item-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"M月dd日\") }).click();\n\t\t\t\tawait page.waitForTimeout(200);\n\n\t\t\t\t// 选择小时\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"点\"}).click();\n\t\t\t\tawait page.locator('#select-hour_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollHourInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-hour_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-hour_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistHourElem = scrollHourInfo.elementItem[0];\n\t\t\t\tlet fistHourElemH = Number(fistHourElem?.split(\"点\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastHourElem = scrollHourInfo.elementItem[scrollHourInfo.elementItem.length - 1];\n\t\t\t\tlet lastHourElemH = Number(lastHourElem?.split(\"点\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeH = Number(TimeFormatter.format(params.settingInfo.timer, 'h')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeH > lastHourElemH ? (targetTimeH-lastHourElemH)*scrollHourInfo.elementHeight : targetTimeH < fistHourElemH ? -(fistHourElemH - targetTimeH)*scrollHourInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-hour_list + * .cheetah-select-item-option \",{ hasText: targetTimeH + \"点\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\t// 选择分钟\n\t\t\t\tawait page.locator(\".timepublish-wrap-select .select-wrap\",{hasText: \"分\"}).click();\n\t\t\t\tawait page.locator('#select-minute_list +div.rc-virtual-list').hover();\n\n\t\t\t\tconst scrollMinuteInfo = await page.evaluate(() => {\n\t\t\t\t\tconst hourInner = document.querySelector('#select-minute_list + * .rc-virtual-list-holder-inner');\n\t\t\t\t\tconst hourElementHeight = hourInner?.children[0].clientHeight || 36;\n\t\t\t\t\tconst hourMapsElem = Array.from(document.querySelectorAll('#select-minute_list + * .cheetah-select-item-option .cheetah-select-item-option-content'));\n\t\t\t\t\tconst hourMap = hourMapsElem.map(item => item.textContent?.trim());\n\n\t\t\t\t\treturn {elementHeight: hourElementHeight, elementItem : hourMap};\n\t\t\t\t});\n\t\t\t\tconst fistMinuteElem = scrollMinuteInfo.elementItem[0];\n\t\t\t\tlet fistMinuteElemH = Number(fistMinuteElem?.split(\"分\")[0]); // 列表渲染的第一个时间\n\n\t\t\t\tconst lastMinuteElem = scrollMinuteInfo.elementItem[scrollMinuteInfo.elementItem.length - 1];\n\t\t\t\tlet lastMinuteElemH = Number(lastMinuteElem?.split(\"分\")[0]); // 列表渲染的最后一个时间\n\n\t\t\t\tlet targetTimeM = Number(TimeFormatter.format(params.settingInfo.timer, 'm')); // 目标时间\n\t\t\t\tawait page.mouse.wheel(0, targetTimeM > lastMinuteElemH ? (targetTimeM-lastMinuteElemH)*scrollMinuteInfo.elementHeight : targetTimeM < fistMinuteElemH ? -(fistMinuteElemH - targetTimeM)*scrollMinuteInfo.elementHeight : 0 );\n\t\t\t\tawait page.locator(\"#select-minute_list + * .cheetah-select-item-option \",{ hasText: targetTimeM + \"分\"}).click()\n\t\t\t\tawait page.waitForTimeout(200);\n\n\n\t\t\t\tawait page.locator(\".cheetah-modal-confirm-btns button\").filter({ hasText:\"定时发布\" }).click()\n\t\t\t}else{\n\t\t\t\tawait operatorContainer.locator(\".op-btn-outter-content\").filter({ hasText: /^发布/ }).locator(\"button\").click();\n\t\t\t}\n\t\t}\n\t});\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, articleId? \"发布成功\" : message);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ninterface ActivityData {\n\tid: string;\n\ttask_name: string;\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t[key: string]: any;\n}\n\nexport interface BaijiahaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttoken: string;\n\ttitle: string;\n\tcontent: string;\n\tsettingInfo: {\n\t\tbaijiahaoTitle: string; // 标题\n\t\tbaijiahaoCoverType: \"single\" | \"multiple\"; // 封面设置:单图 | 三图\n\t\tbaijiahaoAbstract: string; // 摘要\n\t\tbaijiahaoIsAi: string[]; // 设置-由配置项取代\n\t\tbaijiahaoSingleCover: string; // 单图封面\n\t\tbaijiahaoMultCover: string[]; // 三图封面\n\t\tbaijiahaoVerticalCover?: string; // 竖版封面-下版本删除\n\t\tbaijiahaoActivity: ActivityData[]; // 活动投稿\n\t\tbaijiahaoPublishConf?: {\n\t\t\tconfName: string;\n\t\t\tisChecked: boolean;\n\t\t}[]; // 发布配置项\n\t\tbaijiahaoEvent2News: boolean; // 图文转动态\n\t\tbaijiahaoSelectActivityCache: string[]; // 选中的活动标签\n\t\ttimer?: number;\n\t};\n}\n\nexport type PublishAction = CommonAction<BaijiahaoPublishParams, string>;\n\nexport const baijiahaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoActivityParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ActivityData {\n\tid: string;\n\ttask_name: string;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoActivityParams, ActivityData[]>;\n\nexport const getBaijiahaoActivity: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { list: ActivityData[] } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/author/eco/tasksystem/getSquareMissionList\",\n\t\tparams: {\n\t\t\tpage_no: 1,\n\t\t\tpage_size: 18,\n\t\t\tarticle_type: 1,\n\t\t\ttask_attend: 1,\n\t\t\ttask_origin: \"market\",\n\t\t\ttask_type: -1,\n\t\t},\n\t});\n\n\treturn success(res?.data?.list ?? []);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetToutiaoConfigParams extends ActiomCommonParams {}\n\nexport interface GetToutiaoConfigResult {\n\tsuggestWords: Toutiao.Topic[];\n\tcityDistrict: Toutiao.CityDistrict | null;\n\tuserRights: Toutiao.UserRight[];\n}\n\nexport type PublishAction = CommonAction<GetToutiaoConfigParams, GetToutiaoConfigResult>;\n\nexport const getToutiaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\tconst getSuggestWords = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; hots: Toutiao.Topic[] }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\t\t\tparams: { type: 2, words: \"\" },\n\t\t\t});\n\n\t\t\treturn res.code === 0 ? res.hots : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst getCityDistrict = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ status: number; data: Toutiao.CityDistrict }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/toutiao/normandy/mp/city_district/\",\n\t\t\t});\n\t\t\treturn res.status === 0 ? res.data : null;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tconst getUserRights = async () => {\n\t\ttry {\n\t\t\tconst res = await http.api<{ code: number; data: { benefit_level_info_list: Toutiao.UserRight[] } }>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_project/get_benefit_page_info\",\n\t\t\t});\n\t\t\treturn res.code === 0 ? res.data.benefit_level_info_list : [];\n\t\t} catch (error) {\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst [suggestWords, cityDistrict, userRights] = await Promise.all([\n\t\tgetSuggestWords(),\n\t\tgetCityDistrict(),\n\t\tgetUserRights(),\n\t]);\n\n\treturn success({ suggestWords, cityDistrict, userRights });\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetBaijiahaoConfigParams extends ActiomCommonParams {\n\ttoken: string;\n}\n\nexport interface ConfigData {\n\tid: string;\n\tname: string;\n\tdetail: string;\n\tis_enable: number;\n\tpublish_num_left?: number;\n}\n\nexport type PublishAction = CommonAction<GetBaijiahaoConfigParams, ConfigData[]>;\n\nexport const getBaijiahaoConfig: PublishAction = async (_task, params) => {\n\tconst cookies = params.cookies ?? [];\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\ttoken: params.token,\n\t\t},\n\t});\n\n\tconst res = await http.api<{ data: { article: { activity_list: ConfigData[]}, ability: { publish_num_left: number} } }>({\n\t\tmethod: \"get\",\n\t\turl: \"https://baijiahao.baidu.com/pcui/article/edit\",\n\t\tparams: {\n\t\t\ttype: \"news\"\n\t\t},\n\t});\n\tconst data : ConfigData[] = res?.data?.article.activity_list.map((_item) =>{ \n\t\treturn {\n\t\t\tid: _item.id,\n\t\t\tname: _item.name,\n\t\t\tdetail: _item.detail,\n\t\t\tis_enable: _item.is_enable\n\t\t}\n\t})?? []\n\tdata.push({\n\t\tid: \"bjh_publish_num_left\",\n\t\tname: \"账号剩余发文数\",\n\t\tdetail: \"\",\n\t\tis_enable: 1,\n\t\tpublish_num_left: res.data.ability.publish_num_left\n\t})\n\treturn success(data, \"获取百家号配置项成功!\")\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoTopicListParams extends ActiomCommonParams {\n\tsearchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoTopicListParams, Toutiao.Topic[]>;\n\nexport const searchToutiaoTopicList: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ code: number; recents: Toutiao.Topic[]; hots: Toutiao.Topic[] }>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.toutiao.com/mp/agw/creator_helper/suggest_words\",\n\t\t\tparams: { type: 2, words: params.searchValue },\n\t\t});\n\n\t\tif (res.code === 0) {\n\t\t\treturn success(params.searchValue ? res.recents : res.hots);\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoLocationParams extends ActiomCommonParams {\n\tplaceName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoLocationParams, Toutiao.CityPoi[]>;\n\nexport const searchToutiaoLocation: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n biz: 1231\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ code: number; data: {poi: Array<any>}}>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.toutiao.com/poi/api/searchplace\",\n\t\t\tdata: {\n appid: 1231,\n device: 2,\n keywords: params.placeName,\n language: \"zh-CN\",\n location: \"-1,-1\",\n offset: 20,\n page: 1,\n region: \"CN\",\n scenario: \"TIPS\",\n timestamp: Math.floor(Date.now() / 1000)\n },\n\t\t});\n \n\t\tif (res.code === 200) {\n\t\t\treturn success(res.data.poi.map(item => ({ \n position: item.name,\n city: item.city,\n longitude: item.longitude,\n latitude: item.latitude,\n type_code: item.type_code,\n poi_id: item.id,\n })));\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface SearchToutiaoUserIDParams extends ActiomCommonParams {\n\tUserName: string;\n}\n\nexport type PublishAction = CommonAction<SearchToutiaoUserIDParams, Toutiao.SuggestWords[]>;\n\nexport const searchToutiaoUserInfo: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst res = await http.api<{ err_no: number; data: {suggest: Array<any>}}>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.toutiao.com/ugc/publish/post/v1/suggest/\",\n\t\t\tparams: { \n words: params.UserName,\n language: \"zh\",\n app_name: \"toutiao_mp\"\n },\n\t\t});\n\n\t\tif (res.err_no === 0) {\n\t\t\treturn success(res.data.suggest.map(item => ({ \n user_id: item.user.info.user_id,\n name: item.user.info.name,\n avatar_url: item.user.info.avatar_url,\n followers_count: item.user.relation_count.followers_count\n })), '搜索成功');\n\t\t}\n\n\t\treturn success([]);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Xiaohongshu } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface searchXiaohongshuLocationParams extends ActiomCommonParams {\n\tsearchValue: string;\n\tlatitude?: number;\n\tlongitude?: number;\n\tsize?: number;\n\tpage?: number;\n}\n\nexport type PublishAction = CommonAction<searchXiaohongshuLocationParams, Xiaohongshu.Location[]>;\n\nexport const searchXiaohongshuLocation: PublishAction = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com\",\n\t\t\torigin: \"https://creator.xiaohongshu.com\",\n\t\t},\n\t});\n\n\ttry {\n\t\tconst result = await http.api<{ code: number; data: { poi_list: Xiaohongshu.Location[] } }>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://edith.xiaohongshu.com/web_api/sns/v1/local/poi/creator/search\",\n\t\t\tdata: {\n\t\t\t\tkeyword: params.searchValue,\n\t\t\t\tlatitude: params.latitude ?? 0,\n\t\t\t\tlongitude: params.longitude ?? 0,\n\t\t\t\tpage: params.page ?? 1,\n\t\t\t\tsize: params.size ?? 10,\n\t\t\t\tsource: \"WEB\",\n\t\t\t\ttype: 3,\n\t\t\t},\n\t\t});\n\n\t\treturn success(result.code === 0 ? result.data.poi_list : []);\n\t} catch (error) {\n\t\treturn success([]);\n\t}\n};\n","import { Buffer } from \"node:buffer\";\nimport crypto from \"node:crypto\";\n\n/**\n * 小红书加密参数逆向,代码来自:https://github.com/Cloxl/xhshow\n */\nexport class XsEncrypt {\n\tprivate words = [929260340, 1633971297, 895580464, 925905270];\n\tprivate keyBytes = Buffer.concat(\n\t\tthis.words.map(\n\t\t\t(word) =>\n\t\t\t\tnew Uint8Array(Buffer.from([(word >> 24) & 0xff, (word >> 16) & 0xff, (word >> 8) & 0xff, word & 0xff])),\n\t\t),\n\t);\n\tprivate iv = Buffer.from(\"4uzjr7mbsibcaldp\", \"utf8\");\n\n\t/**\n\t * 根据传入的url生成MD5摘要\n\t *\n\t * @param {string} url - API的url\n\t * @returns {string} MD5摘要\n\t */\n\tasync encryptMD5(url: string): Promise<string> {\n\t\treturn crypto.createHash(\"md5\").update(url, \"utf8\").digest(\"hex\");\n\t}\n\n\t/**\n\t * 根据传入的text生成AES加密后的内容,并将其转为base64编码\n\t *\n\t * @param {string} text - 需要加密的字符串\n\t * @returns {string} 加密后的base64编码字符串\n\t */\n\tasync encryptText(text: string): Promise<string> {\n\t\t// 将文本编码为 Base64\n\t\tconst textEncoded = Buffer.from(text).toString(\"base64\");\n\t\t// 创建 AES 加密器\n\t\tconst cipher = crypto.createCipheriv(\"aes-128-cbc\", new Uint8Array(this.keyBytes), new Uint8Array(this.iv));\n\t\t// 对数据进行填充\n\t\tconst ciphertext = cipher.update(textEncoded, \"utf8\", \"base64\");\n\t\treturn ciphertext + cipher.final(\"base64\");\n\t}\n\n\t/**\n\t * 把加密后的payload转为16进制\n\t *\n\t * @param {string} encodedData - 加密后的payload(Base64编码)\n\t * @returns {string} 十六进制字符串\n\t */\n\tasync base64ToHex(encodedData: string): Promise<string> {\n\t\t// 将 Base64 字符串解码为二进制数据\n\t\tconst decodedData = Buffer.from(encodedData, \"base64\");\n\t\t// 将二进制数据转换为十六进制字符串\n\t\treturn decodedData.toString(\"hex\");\n\t}\n\n\t/**\n\t * 把小红书加密参数payload转16进制 再使用base64编码\n\t *\n\t * @param {string} payload - 要加密处理的payload内容\n\t * @param {string} platform - 登录平台\n\t * @returns {string} 加密后并进行base64编码的字符串\n\t */\n\tasync encryptPayload(payload: string, platform: string): Promise<string> {\n\t\t// 将 payload 转换为十六进制\n\t\tconst hexPayload = await this.base64ToHex(payload);\n\n\t\t// 构造对象\n\t\tconst obj = {\n\t\t\tsignSvn: \"56\",\n\t\t\tsignType: \"x2\",\n\t\t\tappID: platform,\n\t\t\tsignVersion: \"1\",\n\t\t\tpayload: hexPayload,\n\t\t};\n\n\t\t// 将对象转换为 JSON 字符串(紧凑格式)\n\t\tconst jsonString = JSON.stringify(obj, null, 0);\n\n\t\t// 对 JSON 字符串进行 Base64 编码\n\t\treturn Buffer.from(jsonString).toString(\"base64\");\n\t}\n\n\t/**\n\t * 将传入的参数加密为小红书的xs\n\t * Args: url: API请求的URL\n\t * a1: 签名参数a1\n\t * ts: 时间戳\n\t * platform: 登录平台 默认为xhs-pc-web\n\t * Returns:\n\t * 最终的加密签名字符串,前缀为“XYW_”\n\t */\n\tasync encryptXs(url: string, a1: string, ts: string, platform = \"xhs-pc-web\"): Promise<string> {\n\t\tconst text = `x1=${await this.encryptMD5(`url=${url}`)};x2=0|0|0|1|0|0|1|0|0|0|1|0|0|0|0|1|0|0|0;x3=${a1};x4=${ts};`;\n\t\treturn `XYW_${await this.encryptPayload(await this.encryptText(text), platform)}`;\n\t}\n\n\tdumps(...rest: Parameters<typeof JSON.stringify>): string {\n\t\tconst [data, replacer = null, space = 0] = rest;\n\t\treturn JSON.stringify(data, replacer, space)\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/\":\\s+\"/g, '\":\"');\n\t}\n}\n","import {type CommonAction, success} from \"@iflyrpa/share\";\nimport type {ActiomCommonParams, Xiaohongshu} from \"../../types\";\nimport {Http} from \"../../utils/http\";\nimport {XsEncrypt} from \"../../utils/xhsXsEncrypt\";\n\n// 小红书参数加密器\nconst xsEncrypt = new XsEncrypt();\n\nexport interface SearchXiaohongshuTopicListParams extends ActiomCommonParams {\n searchValue: string;\n}\n\nexport type PublishAction = CommonAction<SearchXiaohongshuTopicListParams, Xiaohongshu.Topic[]>;\n\nexport const searchXiaohongshuTopicList: PublishAction = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: []};\n\n try {\n const xt = Date.now().toString();\n const topicData = {\n keyword: params.searchValue,\n suggest_topic_request: {\n title: \"\",\n desc: `#${params.searchValue}`\n },\n page: {\n page_size: 20,\n page: 1\n }\n }\n const topicDataStr = xsEncrypt.dumps(topicData);\n const fatchTopic = `/web_api/sns/v1/search/topic${topicDataStr}`;\n const xs = await xsEncrypt.encryptXs(fatchTopic, a1Cookie, xt);\n const result = await http.api<{ code: number; data: { topic_info_dtos: Xiaohongshu.Topic[] } }>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v1/search/topic\",\n data: topicData,\n headers: {\"x-s\": xs, \"x-t\": xt},\n defaultErrorMsg: \"话题搜索异常,请稍后重试。\",\n });\n\n return success(result.code === 0 ? result.data.topic_info_dtos : [], '获取话题成功');\n } catch (error) {\n return success([]);\n }\n\n}","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { Toutiao } from \"../../types\";\nimport { extractImgTag, replaceImgSrc, TimeFormatter } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\ninterface CommonResponse<T = unknown> {\n\tdata: T;\n\tcode: number;\n\tmessage: string;\n}\n\nconst errnoMap: Record<number, string | string[]> = {\n\t20004020: \"图片上传异常,请重新绑定账号后同步。\",\n\t7115: \"正文图片和封面图片推荐jpg、png格式。\",\n\t100006: \"文章同步异常,请重新绑定账号后重试。\",\n\t3101: [\n\t\t\"今日头条号发布次数已达上限,请明天再试。\",\n\t\t\"头条账号状态异常,需前往头条号完成实名认证。\",\n\t\t\"头条账号状态异常,资料审核未通过,请前往头条号查看。\",\n\t],\n\t2007: \"文章发布失败,声明原创要求正文字数不少于 300 字,请修改后重试。\",\n\t2010: \"无头条广告权限,请修改后重试。\",\n\t3103: \"今日头条号发布次数已达上限,请明天再试。\",\n\t1053: \"正文图片和封面图片推荐jpg、png格式。\",\n\t1050: \"图片上传失败,请重试上传。\",\n\t2005: \"账号无【申明原创】权限,请关闭申明后重试。\",\n\t100004: \"用户未登录或登陆已过期,请重新登陆后重试。\"\n};\nconst generatorFormData = (data: Record<string, unknown>) => {\n\treturn Object.entries(data)\n\t\t.map(([key, value]) => {\n\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t})\n\t\t.join('&');\n};\nconst get3101DetailError = (errorList: string[], message: string, saveType: string) => {\n\tlet error = \"\";\n\tif (message?.includes(\"当日发文\")) {\n\t\terror = errorList[0];\n\t} else if (message?.includes(\"实名认证\")) {\n\t\terror = errorList[1];\n\t} else if (message?.includes(\"资料审核\")) {\n\t\terror = errorList[2];\n\t}\n\treturn error || (saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst { toutiaoSingleCover, toutiaoMultCover, toutiaoCoverType, toutiaoOriginal, toutiaoExclusive, toutiaoClaim } = params.settingInfo;\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.toutiao.com\",\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\t// 检查响应中的 errno 字段\n\t\tif (response.data?.code !== 0) {\n\t\t\tlet errmsg = \"\";\n\n\t\t\tif (Array.isArray(errnoMap[response.data.code])) {\n\t\t\t\terrmsg = get3101DetailError(errnoMap[response.data.code] as string[], response.data.message, params.saveType);\n\t\t\t} else {\n\t\t\t\terrmsg =\n\t\t\t\t\t(errnoMap[response.data.code] as string) ||\n\t\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\t\t(params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\");\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[response.data.code] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: response.data,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n\t\tdefaultErrorMsg: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t});\n\n\tconst uploadImages = async (images: string[]) => {\n\t\t// 下载图片到本地\n\t\treturn await Promise.all(\n\t\t\timages.map(async (url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\tconst image = await downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(image));\n\n\t\t\t\tconst response = await http.api<CommonResponse<Toutiao.ImageData>>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020002&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t\tdefaultErrorMsg:\n\t\t\t\t\t\tparams.saveType === \"draft\" ? \"图片上传异常,请稍后重试同步。\" : \"图片上传异常,请稍后重试发布。\",\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\t};\n\n\t// 1. 提取并上传正文中的图片\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].image_url;\n\t\t\tdom.attribs.web_uri = targetContentImages[idx].image_uri;\n\t\t\tdom.attribs.img_width = targetContentImages[idx].image_width.toString();\n\t\t\tdom.attribs.image_height = targetContentImages[idx].image_height.toString();\n\t\t\tdom.attribs.image_type = targetContentImages[idx].image_type.toString();\n\t\t\tdom.attribs.mime_type = targetContentImages[idx].image_mime_type;\n\t\t}\n\t\treturn dom;\n\t});\n\n\t// 3. 上传横版封面\n\tconst coverUrl =\n\t\ttoutiaoCoverType === \"single\" ? [toutiaoSingleCover] : toutiaoCoverType === \"multiple\" ? toutiaoMultCover : [];\n\tconst coverRes = await uploadImages(coverUrl);\n\n\t// 4. 构造发布数据\n\t// const isSingleTitle = params.settingInfo.toutiaoTitleType === \"single\";\n\tconst location = params.settingInfo.toutiaoLocation;\n\tconst topics = params.settingInfo.toutiaoTopic || [];\n\n\t// const multiTitleData = params.settingInfo.subTitles.map((title) => ({\n\t// \tid: \"0\",\n\t// \tvisibility_level: 0,\n\t// \tsource: \"author\",\n\t// \told_source: \"author\",\n\t// \ttext: title,\n\t// \tversion: \"author\",\n\t// \tai_title: \"\",\n\t// }));\n\n\tconst topicContent = topics\n\t\t.map(\n\t\t\t(topic) =>\n\t\t\t\t`<p><a class=\"tteditor-forum\" data-name=\"${topic.word}\" data-id=\"${topic.id}\" data-concern-id=\"${topic.id}\">#${topic.word}#</a ></p >`,\n\t\t)\n\t\t.join(\"\");\n\n\tlet sourceData : Record<string, any> = {\n\t\tsource_type: toutiaoClaim ? toutiaoClaim.type : 5 // 老用户默认为:个人观点,仅供参考\n\t}\n\tif (toutiaoClaim && toutiaoClaim.type === 1) {\n\t\tif( !toutiaoClaim?.source_author_uid) return { code: 500, message: \"请填写作者ID\", data: \"\" }\n\t\tsourceData = {\n\t\t\t...sourceData,\n\t\t\tsource_author_uid: toutiaoClaim.source_author_uid,\n\t\t\ttime_format: toutiaoClaim.time_format,\n\t\t\tposition: toutiaoClaim.position\n\t\t}\n\t}\n\tconst extraData = {\n\t\tcontent_word_cnt: params.settingInfo.cntWord,\n\t\t// is_multi_title: isSingleTitle ? 0 : 1,\n\t\t// sub_titles: isSingleTitle ? [] : multiTitleData,\n\t\tgd_ext: {\n\t\t\tentrance: \"\",\n\t\t\tfrom_page: \"publisher_mp\",\n\t\t\tenter_from: \"PC\",\n\t\t\tdevice_platform: \"mp\",\n\t\t\tis_message: 0,\n\t\t},\n\t\ttuwen_wtt_trans_flag: \"0\",\n\t\tinfo_source: sourceData,\n\t\t...(location ? { city: location.label, city_code: location.value } : null),\n\t};\n\n\tconst publishData = {\n\t\tarticle_type: 0,\n\t\tsource: 0,\n\t\tsearch_creation_info: '{\"searchTopOne\": 0, \"abstract\": \"\", \"clue_id\": \"\"}',\n\t\ttitle_id: \"\",\n\t\teducluecard: \"\",\n\t\torigin_debut_check_pgc_normal: 1,\n\t\tis_fans_article: 0,\n\t\tgovern_forward: 0,\n\t\tpraise: 0,\n\t\tdisable_praise: 0,\n\t\ttree_plan_article: 0,\n\t\tstar_order_id: \"\",\n\t\tstar_order_name: \"\",\n\t\tcustomer_nick_name: \"\",\n\t\tactivity_tag: 0,\n\t\ttrends_writing_tag: 0,\n\t\tis_refute_rumor: 0,\n\t\tsave: params.saveType === \"publish\" ? 1 : 0,\n\t\ttimer_status: params.settingInfo.timer? 1 : 0,\n\t\ttimer_time: params.settingInfo.timer? TimeFormatter.format(params.settingInfo.timer):\"\",\n\t\ttitle: params.title,\n\t\tcontent: content + topicContent,\n\t\textra: JSON.stringify(extraData),\n\t\tmp_editor_stat: toutiaoCoverType === \"no\" ? \"{}\" : '{\"image\": %d}',\n\t\tdraft_form_data: JSON.stringify({\n\t\t\tcoverType: COVER_TYPE[toutiaoCoverType],\n\t\t}),\n\t\tpgc_feed_covers: JSON.stringify(\n\t\t\tcoverRes.map((item) => ({\n\t\t\t\tid: \"\",\n\t\t\t\turl: item.image_url,\n\t\t\t\turi: item.image_uri,\n\t\t\t\tic_uri: \"\",\n\t\t\t\tthumb_widt: item.image_width,\n\t\t\t\tthumb_heigh: item.image_height,\n\t\t\t\textra: {\n\t\t\t\t\tfrom_content_uri: \"\",\n\t\t\t\t\tfrom_content: \"0\",\n\t\t\t\t},\n\t\t\t})),\n\t\t),\n\t\tarticle_ad_type: getAddTypeValue(params.settingInfo.toutiaoAd),\n\t\t// claim_origin: toutiaoOriginal.includes(\"original\") ? 1 : 0,\n\t\tclaim_exclusive: toutiaoExclusive ? toutiaoExclusive : toutiaoOriginal?.includes(\"exclusive\") ? 1 : 0, // 首发声明兼容老用户字段\n\t};\n \n task._timerRecord['PrePublish']= Date.now();\n\n\tconst msToken = params.cookies.find((it) => it.name === \"msToken\")?.value;\n\tlet publishOption = {}\n\tif (!msToken) {\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.toutiao.com/mp/agw/article/publish?source=mp&type=article&aid=1\",\n\t\t\tdata: publishData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}else{\n\t\tconst postHeaders = generatorFormData({\n\t\t\tsource: \"mp\",\n\t\t\ttype: \"article\",\n\t\t\taid: 1231,\n\t\t\tmp_publish_ab_val: 0,\n\t\t\tmsToken: msToken\n\t\t})\n\t\tconst postData = generatorFormData(publishData)\n\t\tlet a_bogus = GenAB(postHeaders,postData)\n\t\n\t\tpublishOption = {\n\t\t\tmethod: \"post\",\n\t\t\turl: `https://mp.toutiao.com/mp/agw/article/publish?${postHeaders}&a_bogus=${a_bogus}`,\n\t\t\tdata: postData,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/x-www-form-urlencoded\",\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\"\n\t\t\t},\n\t\t\tdefaultErrorMsg: params.saveType === \"draft\" ? \"文章同步异常,请稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t\t};\n\t}\n\tconst publishResult = await http.api<CommonResponse<{ pgc_id: string }>>(publishOption)\n\n\treturn success(publishResult.data.pgc_id);\n};\n","import path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport { copyHtmlToClipboard, getRandomInRange, PopupListener, TimeFormatter } from \"../../utils\";\nimport { COVER_TYPE, type PublishAction, getAddTypeValue } from \"./index\";\nconst GenAB = require(\"../../utils/ttABEncrypt\") as (headers: string, data: string) => string;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \".toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-editor\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn {\n\t\t\tcode: 400,\n\t\t\tmessage: `头条号登录状态失效,请重新绑定账号后${params.saveType === \"draft\" ? \"同步\" : \"发布\"}。`,\n\t\t\tdata: page.url(),\n\t\t};\n\t}\n\n\tconst interceptUrls = [\n\t\t'/mp/agw/article/publish'\n\t];\n\t \n\tawait page.route('**', async (route, request) => {\n\t\tconst url = new URL(request.url()); \n\t\tif (interceptUrls.some(pattern => url.pathname.includes(pattern))) {\n\t\t\tconst headers = {\n\t\t\t\t...request.headers(),\n\t\t\t\t\"user-agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36\" //ua参数固定,不可修改\n\t\t\t};\n\n\t\t\tconst generatorFormData = (data: Record<string, unknown>) => {\n\t\t\t\treturn Object.entries(data)\n\t\t\t\t\t.map(([key, value]) => {\n\t\t\t\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\t\t\t\tconst encodedValue = encodeURIComponent(String(value));\n\t\t\t\t\t\treturn `${encodedKey}=${encodedValue}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join('&');\n\t\t\t};\n\n\t\t\tconst postHeaders = generatorFormData({\n\t\t\t\tsource: \"mp\",\n\t\t\t\ttype: \"article\",\n\t\t\t\taid: 1231,\n\t\t\t\tmp_publish_ab_val: 0,\n\t\t\t\tmsToken: url.searchParams.get('msToken')\n\t\t\t})\n\t\t\tconst postData = request.postData() || \"\";\n\t\t\tlet a_bogus = GenAB(postHeaders,postData)\n\n\t\t\turl.searchParams.set('aid', \"1231\"); \n\t\t\turl.searchParams.set('mp_publish_ab_val', \"0\"); \n\t\t\turl.searchParams.set('a_bogus', a_bogus); \n\n\t\t\tawait route.continue({ url: url.toString() , headers: headers});\n\n\t\t} else {\n\t\t\tawait route.continue();\n\t\t}\n\t});\n\n\t//弹窗监听检测\n\tPopupListener(page,'.byte-modal.publish-exclusive-modal .title',\"激励\", '.byte-modal-close-icon', \n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t\n\t// 1. 填写标题\n\tconst titleInstance = page.locator(\".publish-editor-title-wrapper .publish-editor-title textarea\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 2. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".publish-editor .syl-editor-wrap .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 3. 封面\n\tconst coverTypeValue = COVER_TYPE[params.settingInfo.toutiaoCoverType];\n\tconst coverContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"展示封面\" });\n\t// 滚动到可视区域\n\tawait coverContainer.evaluate((node) => node.scrollIntoView());\n\tawait coverContainer.locator(`.article-cover label.byte-radio:has(input[value=\"${coverTypeValue}\"])`).click();\n\n\tlet coverUrls: string[] = [];\n\tif (params.settingInfo.toutiaoCoverType === \"single\") {\n\t\tcoverUrls = [params.settingInfo.toutiaoSingleCover];\n\t} else if (params.settingInfo.toutiaoCoverType === \"multiple\") {\n\t\tcoverUrls = params.settingInfo.toutiaoMultCover;\n\t}\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tcoverUrls.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n\tconst coverUploadEle = coverContainer\n\t\t.locator(\".article-cover .article-cover-images\")\n\t\t.locator(\".article-cover-img-wrap, .article-cover-add\");\n\tconst coverUploadCount = await coverUploadEle.count();\n\n\tfor (let i = 0; i < coverUploadCount; i++) {\n\t\tif (!images[i]) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ele = coverUploadEle.nth(i);\n\t\t// 如果存在图片则替换\n\t\tif ((await ele.locator(\"img\").count()) > 0) {\n\t\t\tawait ele.locator(\".article-cover-img-menu a\").filter({ hasText: \"替换\" }).click();\n\t\t} else {\n\t\t\t// 如果不存在图片则点击上传\n\t\t\tawait ele.click();\n\t\t}\n\n\t\t// 上传图片\n\t\tconst drawerContainer = page.locator(\".byte-drawer-wrapper:not(.byte-drawer-wrapper-hide)\");\n\t\tawait drawerContainer.locator(\".byte-tabs-header .byte-tabs-header-title\").filter({ hasText: \"上传图片\" }).click();\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.waitForTimeout(200);\n\t\tawait drawerContainer.locator(\".upload-image-panel button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([images[i]]);\n\n\t\t// 等待上传完成\n\t\tconst confirmBtn = drawerContainer\n\t\t\t.locator(\".footer .confirm-btns button:not(.byte-btn-disabled)\")\n\t\t\t.filter({ hasText: \"确定\" });\n\t\tawait confirmBtn.waitFor({ state: \"visible\" });\n\t\tawait confirmBtn.click();\n\n\t\tawait page.waitForTimeout(getRandomInRange(500, 1000));\n\t}\n\n\t// 4. 添加位置\n\tif (params.settingInfo.toutiaoLocation) {\n\t\tconst locationContainer = page.locator(\".form-container .edit-cell\").filter({ hasText: \"添加位置\" });\n\t\tawait locationContainer.locator(\".position-select\").click();\n\t\tawait locationContainer\n\t\t\t.locator(\".position-select .byte-select-view-search input\")\n\t\t\t.fill(params.settingInfo.toutiaoLocation.label);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 5. 投放广告\n\tconst adContainer = page\n\t\t.locator(\".form-container .edit-cell .edit-label\")\n\t\t.filter({ hasText: \"投放广告\" })\n\t\t.locator(\"xpath=..\");\n\n\t// 判断是否存在投放广告的选项\n\tconst isAdOptionVisible = await adContainer.isVisible();\n\n\tif (isAdOptionVisible) {\n\t\t// 获取元素的父元素句柄并点击\n\t\tawait adContainer\n\t\t\t.locator(`label.byte-radio:has(input[value=\"${getAddTypeValue(params.settingInfo.toutiaoAd)}\"])`)\n\t\t\t.click();\n\t}\n\n\t// 6. 声明首发\n\tconst exclusiveContainer = page.locator(\".form-container .edit-cell .edit-label\").filter({ hasText: \"声明首发\" }).locator(\"xpath=..\");\n\tif ((params.settingInfo.toutiaoOriginal && params.settingInfo.toutiaoOriginal.includes(\"exclusive\")) || params.settingInfo.toutiaoExclusive ) {\n\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").check();\n\t}else{\n\t\texclusiveContainer.locator(\".exclusive .exclusive-checkbox-wraper .byte-checkbox\").uncheck();\n\t}\n\n\t// 作品声明\n\tlet claim = params.settingInfo.toutiaoClaim ? params.settingInfo.toutiaoClaim.type : 5;\n\tswitch (claim) {\n\t\t// case 1:\n\t\t// \tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用站内\"}).locator(\".byte-checkbox-mask\").check();\n\t\t// \tif(!params.settingInfo.toutiaoClaim?.source_author_name) return{ code: 500, message: \"请填写作者账户名\", data: \"\" };\n\t\t// \tawait page.locator(\".source-form-item\",{hasText: \"账号\"}).locator(\".byte-select-view-search input\").fill(params.settingInfo.toutiaoClaim.source_author_name)\n\t\t// \tbreak;\n\t\tcase 3:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"引用AI\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"取材网络\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"虚构演绎,故事经历\"}).locator(\".byte-checkbox-mask\").check();\n\t\t\t\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tawait page.locator(\".source-wrap .byte-checkbox\",{hasText: \"个人观点,仅供参考\"}).locator(\".byte-checkbox-mask\").check();\n\n\t\t\tbreak;\n\t}\n\n\t// 7. 保存草稿 / 发布\n\tconst articleId = await new Promise<string>(async (resolve) => {\n\t\tconst handleResponse = async (response: Response) => {\n\t\t const url = response.url();\n\t\t if (url.includes(\"/mp/agw/article/publish\")) {\n\t\t\tconst jsonResponse = await response.json();\n\t\t\tpage.off(\"response\", handleResponse);\n\t\t\tresolve(jsonResponse.data.pgc_id);\n\t\t }\n\t\t};\n\t \n\t\tpage.on(\"response\", handleResponse);\n\t \n\t\tif (params.settingInfo.timer && params.saveType == \"publish\") {\n\t\t // 点击“定时发布”按钮\n\t\t await page.locator(\".publish-footer button\").filter({ hasText: \"定时发布\" }).click();\n\t\t await page.waitForSelector('button.publish-btn:not(.byte-btn-loading) >> nth=1', { state: 'attached' });\n\t \n\t\t // 选择日期\n\t\t await page.locator(\".byte-modal-content .day-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"MM月dd日\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择小时\n\t\t await page.locator(\".byte-modal-content .hour-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"h\") }).click();\n\t\t await page.waitForTimeout(200);\n\t \n\t\t // 选择分钟\n\t\t await page.locator(\".byte-modal-content .minute-select .byte-select-view-value\").click();\n\t\t await page.locator('li.byte-select-option', { hasText: TimeFormatter.format(params.settingInfo.timer, \"m\") }).click();\n\t\t await page.waitForTimeout(200);\n\n\t\t await page.locator(\".byte-modal-footer button\").filter({ hasText:\"预览并定时发布\" }).click()\n\t\t}else{\n\t\t\tawait page.locator(\".publish-footer button\").filter({ hasText:\"预览并发布\" }).click();\n\t\t}\n\t \n\t });\n\n\tif(params.settingInfo.toutiaoAd == 'no'){\n\t\tawait page.waitForTimeout(200);\n\t\tconst confirmBtn = page.locator('div.byte-modal-footer button.byte-btn-primary:has-text(\"确定\")');\n\t\tif (await confirmBtn.isVisible()) {\n\t\t await confirmBtn.click();\n\t\t}\n\t}\n \n\ttask._timerRecord['PrePublish']= Date.now();\n \n\tif (params.saveType === \"publish\") {\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).waitFor({ state: \"visible\" });\n\t\tawait page.waitForTimeout(200);\n\t\tawait page.locator(\".publish-footer button\").filter({ hasText: params.settingInfo.timer? \"定时发布\" : \"确认发布\" }).click();\n\t}\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(articleId, params.saveType === \"publish\" ? \"发布成功\" : \"保存草稿成功\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ntype CoverType = \"single\" | \"multiple\" | \"no\";\n\nexport interface ToutiaoPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\ttitle: string;\n\tcontent: string;\n\tsettingInfo: {\n\t\ttoutiaoCoverType: CoverType;\n\t\ttoutiaoTitleType: \"single\" | \"multiple\"; // 已关闭对应功能,保留参数,兼容老版本\n\t\ttoutiaoSingleCover: string;\n\t\ttoutiaoMultCover: string[];\n\t\ttoutiaoAd: string; // 广告配置 - 投放广告/不投放广告\n\t\ttoutiaoOriginal?: string; // 原创声明-已修改为首发声明,兼容老用户\n\t\ttoutiaoExclusive?: number; // 头条首发 0 - 声明非首发 2- 声明首发\n\t\ttoutiaoClaim?: {\n\t\t\ttype: number// 作品声明 -1 - 不声明,4 - 取材网络,1 - 引用站内(该选项必须传入下方两个参数,否则会错误),5 - 个人观点,仅供参考,3 - 引用AI,6 - 虚构演绎,故事经历\n\t\t\tsource_author_uid?: string;\n\t\t\tsource_author_name?: string;\n\t\t\ttime_format?: string;\n\t\t\tposition?: {\n\t\t\t\tposition: string;\n\t\t\t\tcity: string;\n\t\t\t\tlongitude: number;\n\t\t\t\tlatitude: number;\n\t\t\t\ttype_code: string;\n\t\t\t\tpoi_id: string;\n\t\t\t}\n\n\t\t}; \n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\ttoutiaoLocation?: { label: string; value: string; [key: string]: any }; // 位置\n\t\ttoutiaoTopic: { id: string; word: string }[]; // 话题\n\t\tcntWord: number;\n\t\tsubTitles: string[]; // 多标题\n\t\ttimer?: number;\n\t};\n}\n\nexport const COVER_TYPE: Record<CoverType, number> = {\n\tno: 1,\n\tsingle: 2,\n\tmultiple: 3,\n};\n\nexport const getAddTypeValue = (toutiaoAd: ToutiaoPublishParams[\"settingInfo\"][\"toutiaoAd\"]) =>\n\ttoutiaoAd === \"yes\" ? 3 : 2;\n\nexport type PublishAction = CommonAction<ToutiaoPublishParams, string>;\n\nexport const toutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams, Toutiao, Xiaohongshu, Weixin, BaiJiaHao} from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\n\n\nexport type ttSearchAction = CommonAction<ActiomCommonParams, Toutiao.FansCount>;\n\nexport type xhsSearchAction = CommonAction<ActiomCommonParams, Xiaohongshu.FansCount>;\n\nexport interface GetWxFansSearchParams extends ActiomCommonParams {\n token: string| number;\n}\nexport type wxSearchAction = CommonAction<GetWxFansSearchParams, Weixin.FansCount>;\n\nexport type bjhSearchAction = CommonAction<ActiomCommonParams, BaiJiaHao.FansCount>;\n\n\nexport const TTFansExport: ttSearchAction = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n try {\n const res = await http.api<{ code: number; total_fans_count: number }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?app_id=1231\",\n params: { app_id: 1231},\n });\n\n return success(res.code === 0 ? { fans_count: res.total_fans_count } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const XhsFansExport: xhsSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ result: number; data: Xiaohongshu.FansCount }>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n });\n\n return success(res.result === 0 ? { fans_count: res.data.fans_count } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const WxFansExport: wxSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n\n try {\n const htmlStr = await http.api<string>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/home\",\n params: {\n t: \"home/index\",\n token: params.token,\n lang: \"zh_CN\",\n },\n });\n\n const match = htmlStr.match(/总用户数[\\s\\S]*?<mp-thousandth>(\\d+)<\\/mp-thousandth>/);\n \n return success(match ? { fans_count: Number(match[1]) }: {fans_count: null},\"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};\n\nexport const BjhFansExport: bjhSearchAction = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ errno: number; data: {total_fans: number} }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/cms-ui/rights/growth/get_info\",\n });\n\n return success(res.errno === 0 ? { fans_count: res.data.total_fans } : { fans_count: null }, \"获取粉丝数成功!\");\n } catch (error) {\n return success({ fans_count: null }, \"获取粉丝数失败,请检查登陆有效性!\");\n }\n\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../../types\";\nimport { Http } from \"../../../utils/http\";\n\nexport interface sessionCheckResult {\n\tisValidSession: boolean;\n}\n\nexport type ttSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport interface wxSessionParams extends ActiomCommonParams {\n token: string | number;\n}\nexport type wxSessionCheck = CommonAction<wxSessionParams, sessionCheckResult>;\nexport type xhsSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\nexport type bjhSessionCheck = CommonAction<ActiomCommonParams, sessionCheckResult>;\n\nexport const TTSessionCheck: ttSessionCheck = async (_task, params) => {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n try {\n const res = await http.api({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n defaultErrorMsg: `头条号登录状态失效。`,\n });\n\n return success(res.code === 0 ? { isValidSession: true } : { isValidSession: false }, \"头条账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false }, \"头条账号有效性检测失败!\");\n }\n\n};\n\nexport const WxSessionCheck: wxSessionCheck = async (_task, params) => {\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n try {\n const res = await http.api<{base_resp: {ret: number;}}>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n params: {\n fingerprint,\n sub: \"list\",\n begin: 0,\n count: 10,\n query: \"\",\n type: 101_1_102_103,\n show_type: \"\",\n free_publish_type: 1_102_103,\n sub_action: \"list_ex\",\n search_card: 0,\n token: params.token,\n lang: \"zh_CN\",\n f: \"json\",\n ajax: 1,\n },\n });\n\n return success(res.base_resp.ret === 0 ? { isValidSession: true } : { isValidSession: false }, \"微信账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false }, \"微信账号有效性检测失败!\");\n }\n\n};\n\nexport const XhsSessionCheck: xhsSessionCheck = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://creator.xiaohongshu.com/new/home?source=official\",\n\t\t},\n\t});\n\n try {\n const res = await http.api<{ result: number;}>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/user/info\",\n });\n\n return success(res.result === 0 ? { isValidSession: true } : { isValidSession: false }, \"小红书账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false}, \"小红书账号有效性检测完成!\");\n }\n\n};\n\nexport const BjhSessionCheck: bjhSessionCheck = async (_task, params) => { \n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\treferer: \"https://baijiahao.baidu.com/builder/rc/home\",\n\t\t},\n\t});\n\n try {\n const res = await http.api({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/home/index\",\n defaultErrorMsg: `百家号登录状态失效。`,\n });\n\n return success(res.errno === 0 ? { isValidSession: true } : { isValidSession: false }, \"百家号账号有效性检测完成!\");\n } catch (error) {\n return success({ isValidSession: false}, \"百家号账号有效性检测失败!\");\n }\n\n};","\nexport interface ttConfigData {\n fansNum: number;\n fansNumYesterday: number | null;\n readNum: number;\n incomeNum: number;\n incomeNumYesterday: number| null;\n showNumYesterday: number| null;\n readNumYesterday: number| null;\n likeNumYesterday: number| null;\n commentNumYesterday: number| null;\n}\n\nexport interface xhsConfigData {\n fansNum: number;\n favedNum: number;\n watchNumLastWeek: number;\n likeNumLastWeek: number;\n collectNumLastWeek: number;\n commentNumLastWeek: number;\n fansNumLastWeek: number;\n fansNumYesterday: number;\n}\n\nexport interface wxConfigData {\n fansNum: number;\n fansNumYesterday: number;\n readNumYesterday: number;\n shareNumYesterday: number;\n}\n\nexport interface bjhConfigData {\n fansNum: number;\n fansNumYesterday: number | null;\n readNum: number;\n incomeNum: number;\n incomeNumYesterday: number | null;\n recommendNumYesterday: number | null;\n readNumYesterday: number | null;\n likeNumYesterday: number | null;\n commentNumYesterday: number | null;\n}\n\nexport interface SearchAccountInfoResponse {\n code: number;\n message: string;\n data: ttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null;\n};\n\nexport const errorResponse = (\n message: string,\n code: number = 500\n): SearchAccountInfoResponse => ({\n code,\n message,\n data: null,\n});\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { SearchAccountInfoResponse, errorResponse, bjhConfigData } from \"./types\";\nimport { type SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { TimeFormatter } from \"../../utils\";\n\nexport async function getBaijiahaoData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n try {\n const { token } = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: String(token),\n Referer: \"https://baijiahao.baidu.com/builder/rc/home\",\n },\n });\n\n const yesterday = TimeFormatter.format(new Date().setDate(new Date().getDate() - 1), \"yyyyMMdd\");\n const [fansData, readData, incomeData, yesterdayData] = await Promise.all([\n http.api<{ data: { coreData: { fansCount: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/home/index\",\n }),\n http.api<{ data: { total: { view_count: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/statistic/getauthorhistory\",\n }),\n http.api<{ data: { all_income: { total_income: number; yesterday_income: number; } } }>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/author/eco/income4/homepageincome\",\n }),\n http.api<{ data: { data: { recommend_count: number; view_count: number; likes_count: number; comment_count: number; fans_increase: number; } } }>({\n method: \"get\",\n url: `https://baijiahao.baidu.com/author/eco/statistics/appStatistic`,\n params: {\n type: \"all\",\n is_yesterday: false,\n start_day: yesterday,\n end_day: yesterday,\n stat: 0,\n },\n }),\n ]);\n\n const bjhData: bjhConfigData = {\n fansNum: fansData.data.coreData.fansCount,\n fansNumYesterday: yesterdayData.data.data.fans_increase == -1 ? null : yesterdayData.data.data.fans_increase,\n readNum: readData.data.total.view_count,\n incomeNum: incomeData.data.all_income.total_income,\n incomeNumYesterday: incomeData.data.all_income.yesterday_income == -1 ? null : incomeData.data.all_income.yesterday_income,\n recommendNumYesterday: yesterdayData.data.data.recommend_count == -1 ? null : yesterdayData.data.data.recommend_count,\n readNumYesterday: yesterdayData.data.data.view_count == -1 ? null : yesterdayData.data.data.view_count,\n likeNumYesterday: yesterdayData.data.data.likes_count == -1 ? null : yesterdayData.data.data.likes_count,\n commentNumYesterday: yesterdayData.data.data.comment_count == -1 ? null : yesterdayData.data.data.comment_count,\n };\n\n return success(bjhData, \"百家号平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号平台数据获取失败\");\n }\n}\n","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, ttConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\n\nexport async function getToutiaoData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {cookies} = params;\n try {\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n },\n });\n\n const [totalData, contentDataYesterday] = await Promise.all([\n http.api<{\n data: {\n statistic: {\n data: {\n total_subscribe_count: string;\n total_read_play_count: string;\n total_income: number;\n yesterday_income: number;\n is_yesterday_income_ready: boolean;\n yesterday_fans?: string\n yesterday_play_count: string;\n yesterday_read_count: string;\n }\n }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/fe_api/home/merge_v2\",\n params: {app_id: 1231},\n }),\n http.api<{\n author_stat: {\n consume_data: { impression_count: number; go_detail_count: number; },\n interaction_data: { comment_count: number; digg_count: number; }\n }\n }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/statistic/v2/content_stat\",\n params: {type: 0, app_id: 1231},\n }),\n ]);\n\n const isReday = totalData.data.statistic.data.yesterday_read_count !== undefined\n\n const ttData: ttConfigData = {\n fansNum: Number(totalData.data.statistic.data.total_subscribe_count),\n fansNumYesterday: totalData.data.statistic.data.yesterday_fans !== undefined ? Number(totalData.data.statistic.data.yesterday_fans) : null,\n readNum: Number(totalData.data.statistic.data.total_read_play_count),\n incomeNum: totalData.data.statistic.data.total_income,\n incomeNumYesterday: totalData.data.statistic.data.is_yesterday_income_ready ? totalData.data.statistic.data.yesterday_income : null,\n showNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.impression_count: null,\n readNumYesterday: isReday ? contentDataYesterday.author_stat.consume_data.go_detail_count : null,\n likeNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.digg_count: null,\n commentNumYesterday: isReday ? contentDataYesterday.author_stat.interaction_data.comment_count: null,\n };\n\n return success(ttData, \"头条号粉丝数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号数据获取失败\");\n }\n\n}","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {SearchAccountInfoResponse, errorResponse, wxConfigData} from \"./types\";\nimport {type SearchAccountInfoParams} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {TimeFormatter} from \"../../utils\";\n\nexport async function getWeixinData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n const {token} = params;\n\n if (!token) return {code: 200, message: \"缺少token\", data: null};\n\n try {\n const {token} = params;\n if (!token) return errorResponse(\"缺少token\", 200);\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n const userInfo = {\n originalCount: 0,\n totalUsers: 0,\n userIncrease: 0,\n yesterday: {\n read: 0,\n share: 0,\n subscribe: 0\n }\n };\n const userInfoHtml = await http.api<string>({\n method: \"get\",\n url: \"https://mp.weixin.qq.com/cgi-bin/home\",\n params: {\n t: \"home/index\",\n token,\n lang: \"zh_CN\"\n },\n })\n\n // 提取原创内容(兼容属性、换行)\n const originalMatch = userInfoHtml.trim().match(/原创内容[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (originalMatch) userInfo.originalCount = parseInt(originalMatch[1].replace(/,/g, ''), 10);\n\n // 提取总用户数(兼容属性、空格)\n const totalUsersMatch = userInfoHtml.match(/总用户数[\\s\\S]*?<div[^>]*class=[\"']weui-desktop-user_sum[\"'][^>]*>[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (totalUsersMatch) userInfo.totalUsers = parseInt(totalUsersMatch[1].replace(/,/g, ''), 10);\n\n // 提取用户增长(支持正负号、带属性)\n const increaseMatch = userInfoHtml.match(/weui-desktop-user_increase_num[^>]*>\\s*([+-]?)\\s*<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (increaseMatch) {\n const sign = increaseMatch[1] === '-' ? -1 : 1;\n userInfo.userIncrease = sign * parseInt(increaseMatch[2].replace(/,/g, ''), 10);\n }\n\n // 昨日阅读\n const readMatch = userInfoHtml.match(/昨日阅读[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (readMatch) userInfo.yesterday.read = parseInt(readMatch[1].replace(/,/g, ''), 10);\n\n // 昨日分享\n const shareMatch = userInfoHtml.match(/昨日分享[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (shareMatch) userInfo.yesterday.share = parseInt(shareMatch[1].replace(/,/g, ''), 10);\n\n // 昨日新增关注\n const subscribeMatch = userInfoHtml.match(/昨日新增关注[\\s\\S]*?<mp-thousandth[^>]*>([\\d,]+)<\\/mp-thousandth>/i);\n if (subscribeMatch) userInfo.yesterday.subscribe = parseInt(subscribeMatch[1].replace(/,/g, ''), 10);\n\n const wxData: wxConfigData = {\n fansNum: userInfo.totalUsers,\n fansNumYesterday: userInfo.yesterday.subscribe,\n readNumYesterday: userInfo.yesterday.read,\n shareNumYesterday: userInfo.yesterday.share,\n };\n\n return success(wxData, \"微信平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"微信平台数据获取失败\");\n }\n}","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { SearchAccountInfoResponse, errorResponse, xhsConfigData } from \"./types\";\nimport { type SearchAccountInfoParams } from \".\";\nimport { Http } from \"../../utils/http\";\nimport { XsEncrypt } from \"../../utils/xhsXsEncrypt\";\n\nexport async function getXiaohongshuData(params: SearchAccountInfoParams): Promise<SearchAccountInfoResponse> {\n\n try {\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return errorResponse(\"账号数据异常,请重新绑定账号后重试。\", 200);\n }\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n\n const xsEncrypt = new XsEncrypt();\n const xt = Date.now().toString();\n const sevenDataUrl = \"/api/galaxy/v2/creator/datacenter/account/base\";\n const xs = await xsEncrypt.encryptXs(sevenDataUrl, a1Cookie, xt);\n\n const [overAllData, sevenData] = await Promise.all([\n http.api<{ data: { fans_count: number; faved_count: number; } }>({\n method: \"get\",\n url: \"https://creator.xiaohongshu.com/api/galaxy/creator/home/personal_info\",\n }),\n http.api<{ data: { seven: { view_count: number; like_count: number; collect_count: number; comment_count: number; rise_fans_count: number; rise_fans_list: { data: number; count: number; }[] } } }>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: sevenDataUrl,\n headers: { \"x-s\": xs, \"x-t\": xt },\n }),\n ]);\n\n const xhsData: xhsConfigData = {\n fansNum: overAllData.data.fans_count,\n favedNum: overAllData.data.faved_count,\n watchNumLastWeek: sevenData.data.seven.view_count,\n likeNumLastWeek: sevenData.data.seven.like_count,\n collectNumLastWeek: sevenData.data.seven.collect_count,\n commentNumLastWeek: sevenData.data.seven.comment_count,\n fansNumLastWeek: sevenData.data.seven.rise_fans_count,\n fansNumYesterday: sevenData.data.seven.rise_fans_list[0].count\n };\n\n return success(xhsData, \"小红书平台数据获取成功!\");\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书平台数据获取失败\");\n }\n}","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { ttConfigData, xhsConfigData, wxConfigData, bjhConfigData } from \"./types\";\nimport { getBaijiahaoData } from \"./getBjhInfo\";\nimport { getToutiaoData } from \"./getTTInfo\";\nimport { getWeixinData } from \"./getWxInfo\";\nimport { getXiaohongshuData } from \"./getXhsInfo\";\n\nexport interface SearchAccountInfoParams extends ActiomCommonParams {\n token?: string | number;\n platform: string;\n}\n\nexport const SearchAccountInfo: CommonAction<\nSearchAccountInfoParams,\nttConfigData | xhsConfigData | wxConfigData | bjhConfigData | null\n> = async (_task, params) => {\n const { platform } = params;\n switch (platform) {\n case \"toutiao\":\n return getToutiaoData(params);\n case \"xiaohongshu\":\n return getXiaohongshuData(params);\n case \"weixin\":\n return getWeixinData(params);\n case \"baijiahao\":\n return getBaijiahaoData(params);\n default:\n return success(null, \"暂不支持该平台\");\n }\n};","\n// 文章公共属性\ninterface BaseArticle {\n title: string; // 文章标题\n imageUrl: string; // 图片地址\n createTime: number; // 发布时间\n redirectUrl: string; // 文章网页端地址\n originalData?: any; // 原始数据,可选\n}\n\n// 平台特定文章属性\nexport interface ToutiaoArticle extends BaseArticle {\n showNum: number; // 展现量\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n}\n\nexport interface WeixinArticle extends BaseArticle {\n readNum: number; // 阅读人数\n likeNum: number; // 点赞人数\n shareNum: number; // 分享人数\n recommendNum: number; // 推荐人数\n}\n\nexport interface BaijiahaoArticle extends BaseArticle {\n recommendNum: number; // 推荐量\n collectNum: number; // 收藏量\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n shareNum: number; // 转发量\n}\n\nexport interface XiaohongshuArticle extends BaseArticle {\n readNum: number; // 阅读量\n likeNum: number; // 点赞量\n commentNum: number; // 评论量\n collectNum: number; // 收藏量\n shareNum: number; // 转发量\n}\n\n// 响应数据类型\nexport interface FetchArticlesData {\n articleCell?: (ToutiaoArticle | WeixinArticle | BaijiahaoArticle | XiaohongshuArticle)[];\n pagination?: {\n total?: number; // 总条数\n nextPage?: boolean; // 是否有下一页\n lastPage?: number; // 用于维系游标所在页,提高查询速度\n cursor?: number; // 返回最终游标\n pageNum: number; // 当前页\n pageSize: number; // 每页大小\n };\n}\n\nexport interface FetchArticlesResponse {\n code: number;\n message: string;\n data: FetchArticlesData | null\n}\n\nexport const errorResponse = (\n message: string,\n code: number = 500\n): FetchArticlesResponse => ({\n code,\n message,\n data: null,\n});\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, ToutiaoArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleResponse {\n itemCell: {\n actionCtrl: Record<string, unknown>;\n cellCtrl: {\n articleImageType: number;\n dspStyle: null | string;\n };\n extra: {\n answer_count: string;\n origin_content: string;\n };\n logPB: string;\n articleBase: {\n createTime: number;\n itemStatus: number;\n articleURL: string;\n displayFlags: string;\n gidStr: string;\n subTitle: string | null;\n title: string;\n abstractText: string;\n content: string;\n displayURL: string;\n groupID: number;\n publishTime: number;\n schema: string;\n visibilityLevel: number;\n };\n articleClassification: {\n bizTag: number;\n groupSource: number;\n isOriginal: boolean;\n isStick: boolean;\n isSubject: boolean;\n articleSubType: number;\n articleType: number;\n bizID: number;\n };\n containsElements: {\n hasImage: boolean;\n hasVideo: boolean;\n };\n imageList: {\n staggerFeedCover: ImageInfo[];\n thumbImageList: ImageInfo[];\n };\n itemCounter: {\n readCount: number;\n repinCount: number;\n showCount: number;\n videoWatchCount: number;\n commentCount: number;\n diggCount: number;\n };\n richContentInfo: {\n richContent: string;\n titleRichSpan: string;\n };\n shareInfo: {\n shareURL: string;\n };\n userInfo: {\n avatarURL: string;\n name: string;\n userID: number;\n };\n };\n}\n\ninterface ImageInfo {\n width: number;\n height: number;\n uri: string;\n url: string;\n}\nexport async function handleToutiaoData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n },\n });\n\n const visitedUid = await http.api<{ user_id_str: string }>({\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info?\",\n method: \"get\",\n params: { app_id: 1231 },\n })\n\n const articleInfo = await http.api<{ data: { assembleCell: ArticleResponse }[], total_number: number; api_base_info: { app_extra_params: string } }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/api/feed/mp_provider/v1/\",\n params: {\n provider_type: \"mp_provider\",\n aid: \"13\",\n app_name: \"news_article\",\n category: \"mp_all\",\n channel: \"\",\n stream_api_version: \"88\",\n genre_type_switch: '{\"repost\":1,\"small_video\":1,\"toutiao_graphic\":1,\"weitoutiao\":1,\"xigua_video\":1}',\n device_platform: \"pc\",\n platform_id: \"0\",\n visited_uid: visitedUid.user_id_str,\n offset: (pageNum - 1) * pageSize,\n count: pageSize,\n keyword: \"\",\n client_extra_params: `{\"category\":\"mp_all\",\"real_app_id\":\"1231\",\"need_forward\":\"true\",\"offset_mode\":\"1\",\"page_index\":\"1\",\"status\":${onlySuccess ? \"2\" : \"8\"},\"source\":\"0\"}`,\n app_id: \"1231\"\n },\n });\n\n const articleCell: ToutiaoArticle[] = articleInfo.data.map((item) => ({\n title: item.assembleCell.itemCell.articleBase.title,\n imageUrl: item.assembleCell.itemCell.imageList.staggerFeedCover[0].url,\n createTime: item.assembleCell.itemCell.articleBase.publishTime,\n redirectUrl: item.assembleCell.itemCell.articleBase.articleURL,\n showNum: item.assembleCell.itemCell.itemCounter.showCount,\n readNum: item.assembleCell.itemCell.itemCounter.readCount,\n likeNum: item.assembleCell.itemCell.itemCounter.diggCount,\n commentNum: item.assembleCell.itemCell.itemCounter.commentCount,\n ...(showOriginalData ? {\n originalData: item,\n // articleStates: item.assembleCell.itemCell.articleBase.itemStatus == 20 ? 1: item.assembleCell.itemCell.articleBase.itemStatus == 10? 5 : ; // 文章状态:1发布成功,4发布失败,5审核中,7已过期\n } : {}),\n }));\n const api_base_info_json: { total_count: number } = JSON.parse(articleInfo.api_base_info.app_extra_params)\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: api_base_info_json.total_count,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"头条号文章文章获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"头条号文章数据获取失败\");\n }\n}","// @ts-ignore\nimport {success} from \"@iflyrpa/share\";\nimport {Http} from \"../../utils/http\";\nimport {FetchArticlesResponse, errorResponse, WeixinArticle} from \"./types\";\nimport {type FetchArticlesParams} from \".\"\nimport {it} from \"vitest\";\n\ninterface PublishInfo {\n type: number;\n msgid: number;\n sent_result: {\n reject_index_list: any[];\n };\n appmsg_info: Array<{\n share_type: number;\n appmsgid: number;\n content_url: string;\n title: string;\n is_deleted: boolean;\n copyright_status: number;\n copyright_type: number;\n read_num: number;\n like_num: number;\n comment_id: string;\n is_comment_enable: boolean;\n comment_num: number;\n vote_id: any[];\n super_vote_id: any[];\n cover: string;\n smart_product: number;\n modify_status: number;\n appmsg_like_type: number;\n can_delete_status: number;\n old_like_num: number;\n itemidx: number;\n is_pay_subscribe: number;\n is_from_transfer: number;\n public_tag_info: {\n public_tag_list: any[];\n modify_times: number;\n init_tag_list_size: number;\n };\n appmsg_album_info: {\n appmsg_album_infos: any[];\n };\n digest: string;\n is_cooling_article: number;\n pic_cdn_url_235_1: string;\n pic_cdn_url_16_9: string;\n pic_cdn_url_3_4: string;\n pic_cdn_url_1_1: string;\n disable_recommend: number;\n line_info: {\n use_line: number;\n line_count: number;\n send_time: number;\n is_appmsg_flag: number;\n is_use_flag: number;\n };\n claim_source_type: number;\n share_num: number;\n is_rumor_refutation: number;\n segment_comment_id: string;\n is_segment_comment_enable: boolean;\n multi_picture_cover: number;\n share_imageinfo: any[];\n moment_like_num: number;\n item_show_type: number;\n }>;\n appmsgex: any[];\n copy_appmsg_id: number;\n new_publish: number;\n}\n\ninterface BasePublishItem<T = string> {\n publish_type: number;\n publish_info: T;\n}\n\ninterface BaseParsedPublishPage<T = string> {\n total_count: number;\n publish_count: number;\n masssend_count: number;\n publish_list: BasePublishItem<T>[];\n featured_count: number;\n}\n\n\ntype ParsedPublishPage = BaseParsedPublishPage<PublishInfo>;\n\n\nexport async function handleWeixinData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n token,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n cursor,\n lastPage,\n } = params;\n if (!token) return {code: 200, message: \"缺少token\", data: null};\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n },\n });\n\n const ParsePublishPage = (body: string): ParsedPublishPage => {\n\n const match = body.match(/publish_page\\s*=\\s*({[\\s\\S]*?});/);\n if (!match) {\n throw new Error('无法提取 publish_page 字段');\n }\n\n let parsedData = JSON.parse(match[1]);\n\n // HTML 实体解码函数\n const decodeEntities = function (str: string, decode: boolean = false) {\n const encodeMap = [\"&\", \"&\", \"<\", \"<\", \">\", \">\", \" \", \" \", '\"', \""\", \"'\", \"'\"];\n const decodeMap = [\"'\", \"'\", \""\", '\"', \" \", \" \", \">\", \">\", \"<\", \"<\", \"&\", \"&\", \"<\", \"<\", \">\", \">\"];\n const map = decode ? decodeMap : encodeMap;\n\n let result = str;\n for (let i = 0; i < map.length; i += 2) {\n result = result.replace(new RegExp(map[i], \"g\"), map[i + 1]);\n }\n return result;\n };\n\n const finalData = {\n ...parsedData,\n publish_list: parsedData.publish_list.map((item: { publish_info: string; publish_type: number; }) => {\n const decoded = decodeEntities(item.publish_info, true);\n const parsedInfo = JSON.parse(decoded);\n return {\n publish_type: item.publish_type,\n publish_info: parsedInfo,\n };\n }),\n };\n\n return finalData;\n };\n\n async function fetchArticles(\n begin: number,\n pageSize: number,\n token: string | number,\n ): Promise<string> {\n return http.api<string>({\n method: \"get\",\n url: 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish',\n params: {\n sub: \"list\",\n begin: begin,\n count: pageSize,\n token: token,\n lang: \"zh_CN\"\n }\n });\n }\n\n let size = onlySuccess ? 10 : pageSize > 20 ? 20 : pageSize;\n let begin = (lastPage ?? pageNum) - 1; // 转换为 0-based index\n let rawArticlesInfo = await fetchArticles(begin * size, size, token);\n let articlesInfo = ParsePublishPage(rawArticlesInfo);\n let articleCell: WeixinArticle[] = [];\n\n if (!onlySuccess && pageSize > 20) {\n let totalFetched = articlesInfo.publish_list.length;\n let nextPage = pageNum + 1;\n\n while (totalFetched < pageSize) {\n const remaining = pageSize - totalFetched;\n const currentPageSize = remaining > 20 ? 20 : remaining;\n\n let _rawArticlesInfo = await fetchArticles((nextPage - 1) * 20, currentPageSize, token);\n let parsed = ParsePublishPage(_rawArticlesInfo);\n\n articlesInfo.publish_list = articlesInfo.publish_list.concat(parsed.publish_list);\n totalFetched = articlesInfo.publish_list.length;\n\n if (parsed.publish_list.length < currentPageSize) break;\n nextPage++;\n }\n }\n\n let nextPage = false;\n if (onlySuccess) {\n let filteredList = articlesInfo.publish_list\n .filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1)\n .map((item) => item.publish_info);\n\n if (cursor) {\n const cursorIndex = filteredList.findIndex((item) => item.msgid === cursor);\n if (cursorIndex !== -1) filteredList = filteredList.slice(cursorIndex + 1);\n }\n\n let totalFetched = filteredList.length;\n\n while (totalFetched < pageSize && begin * size < articlesInfo.total_count) {\n begin += 1; // 页数递增\n let nextRawArticlesInfo = await fetchArticles(begin * size, size, token);\n let nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n const newFiltered = nextArticlesInfo.publish_list\n .filter((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1)\n .map((item) => item.publish_info);\n filteredList = filteredList.concat(newFiltered);\n totalFetched = filteredList.length;\n }\n\n filteredList = filteredList.slice(0, pageSize);\n totalFetched = filteredList.length;\n\n if (totalFetched >= pageSize && begin * size < articlesInfo.total_count) {\n let nextRawArticlesInfo = await fetchArticles((begin + 1) * size, size, token);\n let nextArticlesInfo = ParsePublishPage(nextRawArticlesInfo);\n nextPage = nextArticlesInfo.publish_list.length > 0 && nextArticlesInfo.publish_list.some((item) => item.publish_info.appmsg_info[0].content_url.indexOf(\"tempkey\") == -1);\n }\n\n const lastMsgId = filteredList.length > 0 ? filteredList[filteredList.length - 1].msgid : undefined;\n articleCell = filteredList.map((item) => ({\n title: item.appmsg_info[0].title,\n imageUrl: item.appmsg_info[0].cover,\n createTime: item.appmsg_info[0].line_info.send_time,\n redirectUrl: item.appmsg_info[0].content_url,\n readNum: item.appmsg_info[0].read_num,\n likeNum: item.appmsg_info[0].old_like_num,\n shareNum: item.appmsg_info[0].share_num,\n recommendNum: item.appmsg_info[0].like_num,\n ...(showOriginalData ? {originalData: item} : {}),\n }));\n\n return success(\n {\n articleCell,\n pagination: {\n nextPage,\n pageNum,\n pageSize,\n lastPage: begin + 1, // 返回当前页数\n cursor: lastMsgId, // 返回最后一条的 msgid\n }\n },\n \"微信文章文章获取成功\"\n );\n }\n\n articleCell = articlesInfo.publish_list.map((item) => ({\n title: item.publish_info.appmsg_info[0].title,\n imageUrl: item.publish_info.appmsg_info[0].cover,\n createTime: item.publish_info.appmsg_info[0].line_info.send_time,\n redirectUrl: item.publish_info.appmsg_info[0].content_url,\n readNum: item.publish_info.appmsg_info[0].read_num,\n likeNum: item.publish_info.appmsg_info[0].old_like_num,\n shareNum: item.publish_info.appmsg_info[0].share_num,\n recommendNum: item.publish_info.appmsg_info[0].like_num,\n ...(showOriginalData ? {originalData: item} : {}),\n }));\n return success(\n {\n articleCell,\n },\n \"微信文章文章获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"微信文章数据获取失败\");\n }\n}\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, BaijiahaoArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\n\ninterface ArticleInfo {\n abstract: string;\n antispam_code: number;\n app_id: string;\n article_id: string;\n article_set_nids: string;\n audit_msg: string;\n authentication_type: string;\n auto_generate_id: string;\n bad_status: string;\n bjh_ext_info: string;\n bjh_video_finger_printing: string;\n call_slot: number;\n commit_at: string;\n cover_images: string;\n cover_layout: string;\n created_at: string;\n creative_method: string;\n deleted_at: string;\n displaytype_exinfo: string;\n domain: string;\n dst_status: string;\n ext_info: string;\n feed_cat: string;\n feed_id: string;\n feed_id_from: number;\n feed_push_amount: number;\n feed_rs: string;\n feed_source_id: string;\n feed_sub_cat: string;\n file_name: string;\n first_exclusive_publish: number;\n first_storage_time: number;\n has_edited_times: number;\n is_authenticated: number;\n is_feed_import: number;\n is_good: number;\n is_pay: number;\n is_published: number;\n is_reported: number;\n is_tagged: number;\n is_wx_spread: number;\n issue_status: number;\n midway_issue_status: number;\n mount_goods: number;\n mthvideo: number;\n news_mount: any[];\n nid: string;\n open_comment: number;\n open_front_page: number;\n origin_app_id: string;\n origin_id: string;\n origin_url: string;\n original_status: number;\n pay_money: number;\n platform_source: number;\n provider: string;\n publish_at: string;\n publish_time: string;\n publish_type: string;\n quality: number;\n quality_audit_type: string;\n quality_not_pass_reason: string;\n quality_status: string;\n res_slot: string;\n secure_not_pass_reason: string;\n secure_status: string;\n shoubai_c_articleid: string;\n smp_url: string;\n source_name: string;\n source_reprinted_allow: number;\n source_reprinted_astrict: string;\n source_type: string;\n status: string;\n sub_status_id: number;\n subtitle: string;\n tag: string;\n tag_detail: string;\n title: string;\n top_end: number;\n top_st: number;\n tp_id: string;\n transform_id: string;\n trigger_odyssey: number;\n type: string;\n updated_at: string;\n url: string;\n vertical_cover: string;\n video_sub_type: number;\n video_tag: string;\n weixin_import_type: number;\n id: string;\n goods_list: any[];\n certify_url: string;\n timer_time: number;\n similar_article_id: string;\n article_push_audit_res: number;\n withdraw_status: {\n withdraw_msg: string;\n has_withdraw_times: {\n news: number;\n };\n can_withdraw: number;\n };\n modify_status: {\n edit_msg: string;\n can_edit: number;\n };\n delete_status: {\n delete_msg: string;\n can_delete: number;\n };\n recover_status: {\n recover_msg: string;\n can_recover: number;\n };\n activity_list: any[];\n can_edit_goods: number;\n recomm_status: {\n can_recomm: number;\n };\n dxxFinalAuditResult: string;\n read_amount: number;\n read_num: number;\n forward_num: number;\n praise_num: number;\n comment_num: number;\n rec_amount: number;\n comment_amount: number;\n share_amount: number;\n like_amount: number;\n collection_amount: number;\n profit: number;\n is_rec: number;\n activity_ids: any[];\n solicit_info: {\n tag: string | null;\n point: string | null;\n inspire: string | null;\n };\n group_can_share: number;\n group_already_shared: number;\n show_selected_comment_option: number;\n show_ai_intro: number;\n flow_invest_status: number;\n flow_invest_msg: string;\n package_invest_status: number;\n can_only_modify_goods: number;\n audit_msg_color: string;\n audit_msg_icon: string;\n playlet_pay2free_switch: number;\n audit_type_v0: string;\n is_ridewind: string;\n is_show_adding: string;\n is_show_add_view: string;\n add_view_count: string;\n coupons_add_view_count: string;\n platform_add_view_count: string;\n rec_count: number;\n share_url: string;\n v_type: number;\n v_intro: string;\n duration: number | null;\n video_num: number;\n};\n\ntype ArticleApiResponse = {\n data: {\n list: ArticleInfo[];\n page: {\n currentPage: number;\n pageSize: number;\n totalCount: number;\n totalPage: number;\n };\n };\n\n};\n\nexport async function handleBaijiahaoData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try {\n const {\n cookies,\n token,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n if (!token) return { code: 200, message: \"缺少token\", data: null };\n const http = new Http({\n headers: {\n cookie: cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n token: token\n },\n });\n\n async function fetchArticles(\n pageNum: number,\n pageSize: number,\n onlySuccess: boolean = false\n ): Promise<ArticleApiResponse> {\n return await http.api<ArticleApiResponse>({\n method: \"get\",\n url: \"https://baijiahao.baidu.com/pcui/article/lists\",\n params: {\n currentPage: pageNum,\n pageSize: pageSize,\n search: \"\",\n type: \"\",\n collection: onlySuccess ? \"publish\" : \"\",\n clearBeforeFetch: false,\n dynamic: 1,\n },\n });\n };\n\n\n const articleInfo = await fetchArticles(pageNum, pageSize, onlySuccess);\n let filtered = articleInfo.data.list.filter(item => item.status !== \"draft\");\n const totalPage = articleInfo.data.page?.totalPage || 1;\n\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && currentPage <= totalPage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, pageSize, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.list.filter(item => item.status !== \"draft\");\n filtered.push(...validItems);\n\n currentPage++;\n }\n\n // 截取前 pageSize 条返回\n const final = filtered.slice(0, pageSize);\n\n // 转换结构\n const articleCell: BaijiahaoArticle[] = final.map((item) => ({\n title: item.title,\n imageUrl: JSON.parse(item.cover_images)[0].src,\n createTime: Math.floor(new Date(item.publish_at.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: item.url,\n recommendNum: item.rec_amount | item.forward_num,\n collectNum: item.collection_amount,\n readNum: item.read_amount | item.read_num,\n likeNum: item.like_amount | item.praise_num,\n commentNum: item.comment_amount | item.comment_num,\n shareNum: item.share_amount,\n ...(showOriginalData ? { originalData: item } : {}),\n }));\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n total: articleInfo.data.page?.totalCount,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"百家号文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"百家号文章数据获取失败\");\n }\n}\n","// @ts-ignore\nimport { success } from \"@iflyrpa/share\";\nimport { FetchArticlesResponse, errorResponse, XiaohongshuArticle } from \"./types\";\nimport { type FetchArticlesParams } from \".\"\nimport { Http } from \"../../utils/http\";\nimport { XsEncrypt } from \"../../utils/xhsXsEncrypt\";\n\ninterface Note {\n id: string;\n sticky: boolean;\n schedule_post_time: number;\n comments_count: number;\n tab_status: number;\n display_title: string;\n time: string;\n view_count: number;\n shared_count: number;\n images_list: {\n url: string;\n }[];\n permission_code: number;\n permission_msg: string;\n level: number;\n xsec_token: string;\n xsec_source: string;\n type: string;\n likes: number;\n collected_count: number;\n goods_info: {\n goods_name: string[];\n };\n}\ntype ArticleApiResponse = {\n data: {\n notes: Note[];\n page: number;\n tags: {\n notes_count: number;\n }[]\n }\n\n}\nexport async function handleXiaohongshuData(params: FetchArticlesParams): Promise<FetchArticlesResponse> {\n try{\n const {\n cookies,\n pageNum = 1,\n pageSize = 10,\n showOriginalData = false,\n onlySuccess = false,\n } = params;\n\n const xsEncrypt = new XsEncrypt();\n const a1Cookie = cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) return { code: 200, message: \"账号数据异常\", data: null };\n if (onlySuccess && pageSize != 10) return { code: 200, message: \"小红书pageSize不可修改\", data: null };\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n referer: \"https://creator.xiaohongshu.com\",\n origin: \"https://creator.xiaohongshu.com\",\n },\n });\n\n async function fetchArticles(\n pageNum: number,\n a1Cookie: string,\n onlySuccess: boolean = false\n ): Promise<ArticleApiResponse> {\n const xt = Date.now().toString();\n const serveUrl = `/web_api/sns/v5/creator/note/user/posted?tab=${onlySuccess ? 1 : 0}&page=${pageNum - 1}`;\n const xs = await xsEncrypt.encryptXs(serveUrl, a1Cookie, xt);\n return await http.api<ArticleApiResponse>({\n method: \"get\",\n baseURL: \"https://edith.xiaohongshu.com\",\n url: serveUrl,\n headers: { \"x-s\": xs, \"x-t\": xt },\n });\n };\n const articleInfo = await fetchArticles(pageNum, a1Cookie, onlySuccess)\n\n let hasNextpage = articleInfo.data.page != -1;\n let filtered = articleInfo.data.notes;\n let currentPage = pageNum + 1;\n const usedPages = new Set<number>();\n while (filtered.length < pageSize && hasNextpage) {\n if (usedPages.has(currentPage)) {\n currentPage++;\n continue;\n }\n\n const res = await fetchArticles(currentPage, a1Cookie, onlySuccess);\n usedPages.add(currentPage);\n\n const validItems = res.data.notes\n filtered.push(...validItems);\n\n currentPage++;\n hasNextpage = res.data.page != -1;\n }\n\n const final = filtered.slice(0, pageSize);\n const articleCell: XiaohongshuArticle[] = final.map((item) => ({\n title: item.display_title,\n imageUrl: item.images_list[0].url,\n createTime: Math.floor(new Date(item.time.replace(/-/g, \"/\")).getTime() / 1000),\n redirectUrl: `https://www.xiaohongshu.com/explore/${item.id}?xsec_token=${item.xsec_token}&xsec_source=pc_creatormng`,\n readNum: item.view_count,\n likeNum: item.likes,\n commentNum: item.comments_count,\n collectNum: item.collected_count,\n shareNum: item.shared_count,\n // articleStates: item.status,\n ...(showOriginalData ? { originalData: item } : {}),\n }));\n\n return success(\n {\n articleCell,\n ...(onlySuccess ? {\n pagination: {\n nextPage: hasNextpage,\n pageNum,\n pageSize,\n }\n } : null),\n },\n \"小红书文章数据获取成功\"\n );\n } catch (error) {\n return errorResponse(error instanceof Error ? error.message : \"小红书文章数据获取失败\");\n }\n\n}\n","// @ts-ignore\nimport { success, type CommonAction } from \"@iflyrpa/share\";\nimport { FetchArticlesData } from \"./types\";\nimport { handleToutiaoData } from \"./handleTTData\";\nimport { handleWeixinData } from \"./handleWXData\";\nimport { handleBaijiahaoData } from \"./handleBjhData\";\nimport { handleXiaohongshuData } from \"./handleXhsData\";\nimport type { ActiomCommonParams } from \"../../types\";\n\n// 请求参数接口\nexport interface FetchArticlesParams extends ActiomCommonParams {\n platform: string; // 社交平台:weixin, toutiao, baijiahao, xiaohongshu\n token?: string | number; // 微信和百家号需要\n pageNum?: number; // 当前页,默认1\n pageSize?: number; // 每页大小,默认10\n size?: number; // 获取前多少篇文章(不含草稿),默认获取全部\n onlySuccess?: boolean; // 是否仅获取发布成功的文章,默认false\n showOriginalData?: boolean; // 是否展示原始数据,默认false\n cursor?: number; // 仅用于微信分页游标,默认为空\n lastPage?: number;\n }\n\nexport const FetchArticles: CommonAction<FetchArticlesParams, FetchArticlesData | null> = async (_task, params) => {\n const { platform } = params;\n switch (platform) {\n case \"toutiao\":\n return handleToutiaoData(params);\n case \"weixin\":\n return handleWeixinData(params);\n case \"baijiahao\":\n return handleBaijiahaoData(params);\n case \"xiaohongshu\":\n return handleXiaohongshuData(params);\n default:\n return success(null, \"暂不支持该平台\");\n }\n};","import { type CommonAction, success } from \"@iflyrpa/share\";\nimport type { ActiomCommonParams } from \"../../types\";\nimport { Http } from \"../../utils/http\";\n\nexport interface GetWeixinConfigParams extends ActiomCommonParams {\n\ttoken: string | number;\n}\n\ninterface QuotaDetail {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\ninterface QuotaDetailResponse {\n\tbase_resp: { err_msg: string ,ret: number },\n\tquota_detail_list: { quota_item_list: QuotaDetail, quota_type: string }[];\n}\n\n\nexport interface ConfigData {\n\tpublishQuota: QuotaDetail[];\n}\n\nexport type PublishAction = CommonAction<GetWeixinConfigParams, ConfigData>;\n\nexport const getWeixinConfig: PublishAction = async (_task, params) => {\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\")\n\t\t},\n\t});\n const fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\n\tconst res = await http.api<QuotaDetailResponse>({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\tparams: {\n\t\t\tf: 'json',\n\t\t\ttoken: params.token,\n\t\t\tlang: 'zh_CN',\n\t\t\tajax: 1,\n\t\t\tfingerprint: fingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t},\n\t});\n\tconst filtered = {\n\t\tpublishQuota : res.base_resp.ret === 0? res.quota_detail_list\n\t\t.filter(item => item.quota_type === \"kQuotaTypeMassSendNormal\")\n\t\t.map(item => item.quota_item_list): [],\n\t}\n\treturn success(filtered, res.base_resp.ret === 0 ? \"微信配置信息获取成功!\" : \"微信配置信息获取失败!\");\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { Http } from \"../../utils/http\"\n\nimport type { PublishAction } from \".\";\nimport type { Toutiao } from \"../../types\";\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.toutiao.com\",\n\t\t\treferer: \"https://mp.toutiao.com/profile_v4/graphic/publish\",\n\t\t},\n\t});\n\n\t// 0. 校验登录\n\tconst userInfoRes = await http.api<{ code: number }>({\n method: \"get\",\n url: \"https://mp.toutiao.com/mp/agw/creator_center/user_info\",\n });\n\n\tif (userInfoRes.code !== 0) {\n return { code: 0, message: \"登录失效\", data: userInfoRes };\n\t}\n\n\t// 1. 上传图片\n\tconst imageList: string[] = [];\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst res = await Promise.all(\n\t\t\timages.map(async (it) => {\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"image\", fs.createReadStream(it));\n\n\t\t\t\tconst response = await http.api<{ data: Toutiao.ImageData }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.toutiao.com/spice/image?upload_source=20020003&aid=1231&device_platform=web\",\n\t\t\t\t\tdata: formData,\n\t\t\t\t});\n\n\t\t\t\treturn response.data;\n\t\t\t}),\n\t\t);\n\n\t\timageList.push(...res.map((it) => it.image_uri));\n\t}\n\n\t// 2. 构造发布数据\n\tconst extra = {\n\t\tadd_music_to_article_flag: \"0\", // 开启配乐\n\t\tclaim_exclusive: \"0\", // 原创&首发声明\n\t\ttuwen_wtt_trans_flag: \"0\",\n\t\tinfo_source: JSON.stringify({\n\t\t\tsource_type: 5,\n\t\t\tsource_author_uid: \"\",\n\t\t\ttime_format: \"\",\n\t\t\tposition: {},\n\t\t}),\n\t\tugc_position: JSON.stringify({\n\t\t\taddress: \"\",\n\t\t\tposition: \"合肥市\",\n\t\t\tcity: \"合肥市\",\n\t\t\tlongitude: 117.227289,\n\t\t\tlatitude: 31.82057,\n\t\t\tpoi_type_code: \"190104\",\n\t\t\tpoi_id: \"22535659123306003\",\n\t\t}),\n\t};\n\n\tconst syncData = {\n\t\tcontent: params.content, // 正文,\n\t\timage_list: imageList, // 图片列表\n\t\tis_fans_article: 2,\n\t\tpre_upload: 1,\n\t\twelfare_card: \"\",\n\t\textra: JSON.stringify(extra),\n\t};\n\n const res = await http.api<any>({\n method: \"post\",\n url: \"https://mp.toutiao.com/mp/agw/article/wtt\",\n data: syncData,\n });\n\n return success(res.data)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction } from \"./index\";\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.toutiao.com\",\n\t\turl: \"https://mp.toutiao.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://mp.toutiao.com/profile_v4/weitoutiao/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\".publish-box\");\n\t} catch (error) {\n\t\treturn { code: 0, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 添加正文\n\tconst descInstance = page.locator(\".syl-editor .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 2. 添加图片\n\tif (params.banners && params.banners?.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait page.locator(\".toolbar .syl-toolbar-tool.weitoutiao-image-plugin\").click();\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer button.byte-btn\").filter({ hasText: \"本地上传\" }).click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\n\t\tawait page.locator(\".byte-drawer.mp-ic-img-drawer .footer button.byte-btn\").filter({ hasText: \"确定\" }).click();\n\t}\n\n\t// 滚动到底部\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\t// 3. 添加位置\n\tif (params.address) {\n\t\tconst addressFormItem = page.locator(\".img-form-wrap .form-item-wrap .form-item\").filter({ hasText: \"添加位置\" });\n\t\tawait addressFormItem.locator(\".byte-select\").click();\n\t\tawait addressFormItem.locator(\".byte-select-view-search input\").fill(params.address);\n\t\tconst poperInstance = page.locator(\".byte-trigger .byte-select-popup .byte-select-option\");\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t}\n\n\t// 4. 作品声明\n\tif (params.declaration) {\n\t\tconst declarationFormItem = page\n\t\t\t.locator(\".img-form-wrap .form-item-wrap .form-item\")\n\t\t\t.filter({ hasText: \"作品声明\" })\n\t\t\t.locator(\".source-info-wrap\");\n\t\tawait declarationFormItem.locator(`.byte-checkbox:has(input[value=\"${params.declaration}\"])`).click();\n\t}\n\n\t// 5. 发布\n\tawait page.locator(\".footer-wrap button.publish-content\").click();\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\n/**\n * 作品声明\n * 1:引用站内\n * 3:引用AI\n * 4:取材网络\n * 5:个人观点,仅供参考\n * 6:虚构演绎,故事经历\n * 7:投资观点,仅供参考\n * 8:健康医疗分享,仅供参考\n */\ntype DeclarationType = 1 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport interface WeitoutiaoPublishParams extends ActiomCommonParams {\n\tcontent: string;\n\tbanners?: string[];\n\taddress?: string;\n\tdeclaration?: DeclarationType;\n}\n\nexport type PublishAction = CommonAction<WeitoutiaoPublishParams>;\n\nexport const weitoutiaoPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","export const scanRetryMaxCount = 30;\n\nexport const QuotaType = {\n\tNormal: \"kQuotaTypeMassSendNormal\",\n\tProductActivity: \"kQuotaTypeMassSendProductActivity\",\n};\n\nexport interface QuotaItem {\n\toriginal_quota: number;\n\tquota: number;\n\tstr_date: string;\n}\n\nexport interface QuotaDetail {\n\tquota_item_list: QuotaItem[];\n\tquota_type: string;\n}\n","import fs, { write } from \"node:fs\";\n// import https from \"node:https\";\nimport path from \"node:path\";\nimport { type ResponseData, downloadImage, getFilenameFromUrl, randomString, sleep, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\nimport { extractImgTag, getFileState, replaceImgSrc } from \"../../utils\";\nimport { Http } from \"../../utils/http\";\nimport type { PublishAction, WeixinPublishParams , WxWhitelistUserInfo, WxInteraction} from \"./index\";\nimport { type QuotaDetail, QuotaType, scanRetryMaxCount } from \"./utils\";\nimport { match } from \"node:assert\";\n\ntype CommonResponse<T = unknown> = T & {\n\tbase_resp?: { err_msg: string; ret: number };\n};\n\nconst GET_QRCODE_DEFAULT_ERROR = \"二维码获取异常,请稍后重试。\";\n\nconst errnoMap: Record<number|string, string> = {\n\t200003: \"微信公众号号登录状态失效,请重新绑定账号后重试。\",\n\t420001: \"封面图不支持GIF,请更换后重试。\",\n\t200002: \"上传图片参数错误,请检查后重试。\",\n\t200039: \"上传图片高度(像素)与宽度(像素)的乘积不能超过600万,请更换后重试。\",\n\t153201: \"不支持发布审核中或转码中的视频\",\n\t200007: \"登陆失败,请重新登陆账户后重试。\",\n\t64703: \"摘要超出120字长度限制,请修改摘要后重试。\",\n\t\"-4\": \"不支持发布审核中或转码中的视频\",\n\t\"-2\": \"不支持发布审核中或转码中的视频\",\n \"-1\" :\"系统错误,请注意备份内容后重试\",\n\t770001: \"不支持发布审核中或转码中的视频\",\n\t200074: \"系统繁忙,请稍后重试!\",\n\t64702: \"标题超出64字长度限制,请修改标题后重试。\"\n};\n\n// 不需要直接抛出的异常码,如 154019\nconst ignoreErrno = [154019];\n\n// 用户互动类型表\nconst userTypeMap: Record<string, 1 | 2 | 3> = {\n\t\"所有用户\": 1,\n\t\"已关注的用户\": 2,\n\t\"已关注7天及以上的用户\": 3,\n };\n\nconst generatorFormData = (data: Record<string, unknown>) => {\n\tconst formData = new URLSearchParams();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, String(value));\n\t}\n\n\treturn formData.toString();\n};\n\nexport const checkCopyrightStat = async <T>(http: Http, params: WeixinPublishParams, data: Record<string, unknown>) => {\n\tlet resData: T;\n\n\ttry {\n\t\tresData = await http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\taction: \"get_appmsg_copyright_stat\",\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData(data),\n\t\t});\n\t} catch (error) {\n\t\tresData = (error as ResponseData)?.data;\n\t}\n\n\treturn resData;\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst fingerprint = \"4695500bc93ab4ce8fb2692da6564e04\";\n\tconst client_time_diff = Number(\"1743488763\") * 1 - Math.floor(new Date().getTime() / 1000);\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst http = new Http({\n\t\t// 接口代理,特意保留,作为测试使用\n\t\t// httpsAgent: new https.Agent({\n\t\t// \trejectUnauthorized: false,\n\t\t// \thost: \"127.0.0.1\",\n\t\t// \tport: 9000,\n\t\t// }),\n\t\theaders: {\n\t\t\t\"User-Agent\":\n\t\t\t\t\"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\",\n\t\t\tCookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.weixin.qq.com\",\n\t\t\treferer: `https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&isNew=1&type=77&createType=0&token=${params.token}&lang=zh_CN×tamp=${Date.now()}`,\n\t\t},\n\t});\n\n\t// 添加响应拦截器\n\thttp.addResponseInterceptor<CommonResponse>((response) => {\n\t\tconst responseData = response.data;\n\t\tconst msgType = params.saveType === \"draft\" ? \"同步\" : \"发布\";\n\n\t\t// 检查响应中的 errno 字段\n\t\tif (\n\t\t\tresponseData?.base_resp &&\n\t\t\tresponseData.base_resp.ret !== 0 &&\n\t\t\t!ignoreErrno.includes(responseData.base_resp.ret)\n\t\t) {\n\t\t\tconst errmsg =\n\t\t\t\terrnoMap[responseData.base_resp.ret] ||\n\t\t\t\tresponse.config.defaultErrorMsg ||\n\t\t\t\tresponseData.base_resp.err_msg ||\n\t\t\t\t`文章${msgType}异常,请稍后重试。`;\n\n\t\t\treturn {\n\t\t\t\tcode: errnoMap[responseData.base_resp.ret] ? 200 : 500,\n\t\t\t\tmessage: errmsg,\n\t\t\t\tdata: responseData,\n\t\t\t};\n\t\t}\n\t});\n\n\t// 0. 校验登录\n\tawait http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgpublish\",\n\t\tparams: {\n\t\t\tfingerprint,\n\t\t\tsub: \"list\",\n\t\t\tbegin: 0,\n\t\t\tcount: 10,\n\t\t\tquery: \"\",\n\t\t\ttype: 101_1_102_103,\n\t\t\tshow_type: \"\",\n\t\t\tfree_publish_type: 1_102_103,\n\t\t\tsub_action: \"list_ex\",\n\t\t\tsearch_card: 0,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t},\n\t});\n\n\t// 1. 提取并上传正文中的图片\n\tconst uploadImages = async (images: string[]) => {\n\t\tconst cloudImages: Array<{ cdn_url: string; content: string }> = [];\n\n\t\t// 下载图片到本地\n\t\tconst localImages = await Promise.all(\n\t\t\timages.map((url) => {\n\t\t\t\tlet fileName = getFilenameFromUrl(url);\n let ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = localImages[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<(typeof cloudImages)[0]>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t\tdefaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n\t\t\t});\n\n\t\t\tcloudImages.push(response);\n\t\t}\n\n\t\treturn cloudImages;\n\t};\n\n\tconst originContentImages = extractImgTag(params.content);\n\tconst targetContentImages = await uploadImages(originContentImages);\n\t// 2. 替换正文中的图片\n\tconst content = replaceImgSrc(params.content, (dom) => {\n\t\tif (dom.attribs.src) {\n\t\t\tconst idx = originContentImages.findIndex((it) => it === dom.attribs.src);\n\t\t\tdom.attribs.src = targetContentImages[idx].cdn_url;\n\t\t\tdom.attribs.class = \"rich_pass wxw-img js_insertlocalimg\";\n\t\t\tdom.attribs.style = \"\";\n\t\t}\n\t\treturn dom;\n\t});\n\n\t// 3. 上传封面图片\n\tconst coverRes = await uploadImages([params.settingInfo.wxCover]);\n\n\t// 4. 原创声明白名单有效性判断与生成转载白名单\n\tlet oriWhitelist = null;\n\n\tif (params.settingInfo?.wxCopyright && params.settingInfo?.wxWhitelist) {\n\t\tconst _oriWhitelist = params.settingInfo.wxWhitelist;\n\n\t\tif (_oriWhitelist && _oriWhitelist.length > 0) {\n\t\t\tconst white_list = [];\n\n\t\t\tconst white_list_user = {\n\t\t\t\tnickname: \"\",\n\t\t\t\ttitle: \"可修改文章\",\n\t\t\t\topenid: \"\",\n\t\t\t\twx_name: \"\",\n\t\t\t\tusername: \"\",\n\t\t\t\tavatar: \"\",\n\t\t\t\tcan_modify: \"1\",\n\t\t\t\tcan_hide_source: \"0\",\n\t\t\t\tcan_reward: \"0\",\n\t\t\t};\n\n\t\t\tfor (const _user of _oriWhitelist) {\n\t\t\t\tconst userInfo_res = await http.api<{ search_list: WxWhitelistUserInfo[] }>({\n\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/appmsgcopyright?action=searchacct\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taction: \"searchacct\",\n\t\t\t\t\t},\n\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\tusername: _user,\n\t\t\t\t\t}),\n\t\t\t\t\tdefaultErrorMsg: \"搜索用户信息失败\",\n\t\t\t\t});\n\n\t\t\t\tif(userInfo_res.search_list.length>0){\n\t\t\t\t\tlet userInfo_resJson = userInfo_res.search_list[0];\n\t\t\t\t\twhite_list_user.nickname = userInfo_resJson.nickname;\n\t\t\t\t\twhite_list_user.openid = userInfo_resJson.openid;\n\t\t\t\t\twhite_list_user.avatar = userInfo_resJson.pic_url;\n\t\t\t\t\twhite_list_user.username = userInfo_resJson.username;\n\t\t\t\t\twhite_list_user.wx_name = userInfo_resJson.wx_name;\n\t\t\t\t\twhite_list.push({ ...white_list_user });\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 200, message: `白名单用户:${_user} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\t\t\toriWhitelist = white_list.length > 0 ? JSON.stringify({ \"white_list\" : white_list }) : \"\";\n\t\t}\n\t}\n\n\t// 5. 赞赏设置\n\tlet writerid = null;\n\tlet reply_id = null\n\tif (params.settingInfo.wxCopyright && params.settingInfo.wxRewardTarget){\n\t\tasync function getWriterList() {\n\t\t\tconst res = await http.api({\n\t\t\t method: \"get\",\n\t\t\t url: 'https://mp.weixin.qq.com/acct/writermgr',\n\t\t\t params: {\n\t\t\t\taction: 'get_writer_list',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t }\n\t\t\t});\n\n\t\t\treturn res.pageinfo.writerlist || [];\n\t\t }\n\n\t\t async function getRewardText(): Promise<{ text: string , reply_id: string}[]> {\n\t\t\tconst res = await http.api({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\tparams: {\n\t\t\t\taction: 'getautoreply',\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn res.reply_infos;\n\t\t}\n\n\t\t//遍历绑定信息\n\t\tfor (var _type in params.settingInfo.wxRewardTarget){\n\t\t\tif (_type === \"author\"){\n\n\t\t\t\tif( (await getWriterList()).length == 0){\n\t\t\t\t\t// 获取二维码等待用户绑定\n\t\t\t\t\tconst rewardbind = await http.api({\n\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\taction: \"get_rewardbind_qrcode\",\n\t\t\t\t\t\t\trandom: Math.random().toString(),\n\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst rewardBuffer = Buffer.from(rewardbind.qrcode_base64, 'base64');\n\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\n\t\t\t\t\tconst task_id = rewardbind.task_id\n\n\t\t\t\t\tlet code = null\n\n\t\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\t\tawait sleep(2000);\n\n\t\t\t\t\t\tconst checkScanResult = await http.api<{ qrcode_status: number; }>({\n\t\t\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\t\t\turl: \"https://mp.weixin.qq.com/acct/writermgr\",\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\taction: \"query_rewardbind_qrcode_status\",\n\t\t\t\t\t\t\t\ttask_id: task_id,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\ttimespam: Date.now(),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcode = checkScanResult.qrcode_status\n\n\t\t\t\t\t\tif ( code == 2 && (await getWriterList()).length > 0 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\t\t\t\t\treturn { code: 200, message: \"二维码已过期,请重试绑定。\", data: \"\" };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// 判断为赞赏作者\n\t\t\t\tlet _writer = await getWriterList()\n\t\t\t\tfor (var _writer_item of _writer){\n\t\t\t\t\tif (_writer_item.nickname === params.settingInfo.wxRewardTarget[_type]){\n\t\t\t\t\t\twriterid = _writer_item.writerid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!writerid){\n\t\t\t\t\t// 没找到作者id\n\t\t\t\t\treturn { code: 200, message: \"未匹配到赞赏绑定用户,请确认用户名与绑定是否正常!\", data: \"\" };\n\t\t\t\t}\n\n\t\t\t\tif (params.settingInfo?.wxRewardText){\n\t\t\t\t\t// 判断文案是否已添加\n\t\t\t\t\tlet rewardList = await getRewardText()\n\n\t\t\t\t\tlet matchdID = rewardList.find(\n\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t)?.reply_id ?? null;\n\n\t\t\t\t\tif (rewardList.length == 0 || !matchdID ){\n\t\t\t\t\t\tawait http.api({\n\t\t\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\t\t\turl: 'https://mp.weixin.qq.com/merchant/reward',\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t \taction: 'addautoreply',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdata: generatorFormData({\n\t\t\t\t\t\t\t\ttype: 1,\n\t\t\t\t\t\t\t\tfingerprint,\n\t\t\t\t\t\t\t\ttoken: params.token,\n\t\t\t\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\t\t\t\tf: \"json\",\n\t\t\t\t\t\t\t\tajax: 1,\n\t\t\t\t\t\t\t\ttext: params.settingInfo.wxRewardText\n\t\t\t\t\t\t })\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treply_id = matchdID\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!matchdID) {\n\t\t\t\t\t\tfor (var _reply_item of (await getRewardText())){\n\t\t\t\t\t\t\treply_id = (await getRewardText()).find(\n\t\t\t\t\t\t\t\treward => reward.text === params.settingInfo.wxRewardText\n\t\t\t\t\t\t\t)?.reply_id ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!reply_id) {\n\t\t\t\t\t\t\treturn {code:200, message:\"赞赏文案添加失败,请重新检查\", data:\"\"}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}else if(_type === \"project\"){\n\t\t\t\t// 判断为公益捐赠\n\t\t\t}\n\t\t}\n\n\t}\n\t// 留言设置\n\tconst wxInteractionInfo = (() => {\n\t\tconst _wxInteraction = {\n\t\t\tneed_open_comment0: 0,\n\t\t\tonly_fans_can_comment0: 0,\n\t\t\tonly_fans_days_can_comment0: 0,\n\t\t\treply_flag0: 2,\n\t\t\tauto_elect_comment0: 0,\n\t\t\tauto_elect_reply0: 1,\n\t\t\topen_fansmsg0: 0\n\t\t};\n\n\t\tconst type = params?.settingInfo?.wxInteraction?.Type ?? \"\";\n\t\tif (type === \"public\") {\n\t\t\tconst _opt = params?.settingInfo?.wxInteraction?.Option;\n\t\t\tif (!_opt || !_opt.Comment || !_opt.reply || _opt.elect_comment == null || _opt.elect_reply == null) return null;\n\n\t\t\tconst commentType = userTypeMap[_opt.Comment];\n\t\t\tconst replyType = userTypeMap[_opt.reply] + 1;\n\n\t\t\t// 设置评论权限\n\t\t\t_wxInteraction.need_open_comment0 = 1;\n\t\t\tswitch (commentType) {\n\t\t\t\tcase 1:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 1;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\t_wxInteraction.only_fans_can_comment0 = 0;\n\t\t\t\t\t_wxInteraction.only_fans_days_can_comment0 = 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// 设置回复权限等级\n\t\t\t_wxInteraction.reply_flag0 = replyType;\n\n\t\t\t// 精选功能\n\t\t\t_wxInteraction.auto_elect_comment0 = _opt.elect_comment ? userTypeMap[_opt.Comment] : 0;\n\t\t\t_wxInteraction.auto_elect_reply0 = _opt.elect_reply ? userTypeMap[_opt.reply] : 1;\n\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\tif (type === \"private\") {\n\t\t\t_wxInteraction.open_fansmsg0 = 1;\n\t\t\treturn _wxInteraction;\n\t\t}\n\n\t\t// 其他未启用评论功能的情形\n\t\treturn _wxInteraction;\n\t})();\n\n\tif (!wxInteractionInfo) return { code: 200, message: \"互动参数设置错误,请检查参数设置!\", data: \"\" }\n\n\n\t// 4. 保存为草稿\n\tconst draftData = {\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\tcount: 1,\n\t\toperate_from: \"Chrome\",\n\t\tisnew: 0,\n\t\tarticlenum: 1,\n\t\tpre_timesend_set: 0,\n\t\tis_finder_video0: 0,\n\t\tfinder_draft_id0: 0,\n\t\tapplyori0: 0,\n\t\tcan_reward0: writerid ? 1 : 0,\n\t\tpay_gifts_count0: 0,\n\t\tis_video_recommend0: -1,\n\t\twriterid0: writerid ? writerid : 0,\n\t\tauto_gen_digest0: 0,\n\t\tlast_choose_cover_from0: 0,\n\t\tneed_open_comment0: wxInteractionInfo.need_open_comment0 ,\n\t\tonly_fans_can_comment0: wxInteractionInfo.only_fans_can_comment0,\n\t\tonly_fans_days_can_comment0: wxInteractionInfo.only_fans_days_can_comment0,\n\t\treply_flag0: wxInteractionInfo.reply_flag0,\n\t\tauto_elect_comment0: wxInteractionInfo.auto_elect_comment0,\n\t\tauto_elect_reply0: wxInteractionInfo.auto_elect_reply0,\n\t\treward_reply_id0:params.settingInfo?.wxRewardText? reply_id ? reply_id : 0 : 0,\n\t\tnot_pay_can_comment0: 0,\n\t\tdata_seq: 0,\n\t\tmsg_index_id0: \"\",\n\n\t\ttoken: params.token,\n\t\tAppMsgId: params.appMsgId || \"\",\n\t\ttitle0: params.title,\n\t\tauthor0: params?.settingInfo?.wxAuthor || \"\" ,\n\t\tdigest0: params?.settingInfo?.wxAbstract || \"\",\n\t\tcontent0: content || \"\",\n\t\tsourceurl0: params?.settingInfo?.wxOriginalText || \"\",\n\t\tcdn_url0: coverRes[0].cdn_url || \"\",\n\t\tcopyright_type0: params?.settingInfo?.wxCopyright? 1 : 0,\n\t\tallow_reprint0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tallow_reprint_modify0: params?.settingInfo?.wxCopyright? 0 : '',\n\t\tori_white_list0: params?.settingInfo?.wxCopyright? oriWhitelist: '',\n\t\topen_fansmsg0: wxInteractionInfo.open_fansmsg0,\n\t\tallow_fast_reprint0: params?.settingInfo?.wxQuickReprint ? 1 : 0,\n\t\tdisable_recommend0: params?.settingInfo?.wxNotAllowRecommend ? 1 : 0,\n\t\tclaim_source_type0: params?.settingInfo?.wxCreationSource?.[0] || \"\",\n\n\t\tmasssend_check: 1,\n\t\tis_masssend: 1,\n\t};\n \n task._timerRecord['PrePublish']= Date.now();\n\n\tconst { appMsgId } = await http.api<{ appMsgId: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"create\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData(draftData),\n\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t});\n\n\t// 如果只需要保存为草稿,直接返回 appMsgId\n\tif (params.saveType === \"draft\") {\n\t\treturn { code: 0, data: appMsgId, message: \"微信公众号保存草稿成功。\" };\n\t}\n\n\tconst masssendpage = () => {\n\t\treturn http.api<CommonResponse<{ operation_seq: string; quota_detail_list: QuotaDetail[] }>>({\n\t\t\tmethod: \"get\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssendpage\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tpreview_appmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t},\n\t\t\tdefaultErrorMsg: \"创建草稿失败,请稍后重试发布。\",\n\t\t});\n\t};\n\n\t// 4. 预览\n\tlet massSendRes = await masssendpage();\n\t// 判断是否需要同意群发声明\n\tif (massSendRes.base_resp?.ret === 154019) {\n\t\ttask.logger.info(\"需要同意群发声明\");\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/setprotocolsign\",\n\t\t\tparams: {\n\t\t\t\tcgi: \"setprotocolsign\",\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttoken: params.token,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\tissigned: 1,\n\t\t\t}),\n\t\t});\n\t\tmassSendRes = await masssendpage();\n\t}\n\n\t// 判断是否还有群发次数\n\tconst { operation_seq, quota_detail_list = [] } = massSendRes;\n\n\t// 群发时需要判断是否还有群发次数\n\tif (params.masssend) {\n\t\tconst quotaDetail = quota_detail_list.find((it) => it.quota_type === QuotaType.Normal);\n\t\tif (!quotaDetail?.quota_item_list[0]?.quota) {\n\t\t\treturn { code: 200, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\t\tparams: {\n\t\t\t\tt: \"ajax-response\",\n\t\t\t\tfor_check: 1,\n\t\t\t\tis_release_publish_page: 1,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\tappmsgid: appMsgId,\n\t\t\t\tfingerprint,\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t}),\n\t\t});\n\t}\n\n\t// check\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend?action=check_same_material\",\n\t\tdata: generatorFormData({\n\t\t\tmsgid: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tconst copyrightStatData = {\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\trandom: Math.random().toString(),\n\t\tfingerprint,\n\t\tfirst_check: 1,\n\t\ttype: 10,\n\t\tappmsgid: appMsgId,\n\t};\n\tfor (let i = 0; i < 10; i++) {\n\t\tawait sleep(1000);\n\t\tconst lastData = { ...copyrightStatData, first_check: i === 0 ? 1 : 0 };\n\t\tconst checkCopyrightStatRes = await checkCopyrightStat<{ open_ad_reprint_status?: string }>(http, params, lastData);\n\t\tif (checkCopyrightStatRes.open_ad_reprint_status) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_ad\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsg_id: appMsgId,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tis_release_publish_page: params.masssend ? 0 : 1, // 群发时为 0,否则为 1\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : 0 ,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\tawait http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\taction: \"check_music\",\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\tappmsgid: appMsgId,\n\t\t\tmasssend_check: 1,\n\t\t\tfingerprint,\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t});\n\n\tawait sleep(300);\n\n\t// 5. 获取群发文章ticket接口\n\tconst getTicketResult = await http.api<{ ticket: string; operation_seq: string }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\taction: \"get_ticket\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\n\tawait sleep(300);\n\n\t// 6. 获取群发文章 uuid\n\tconst getUuidResult = await http.api<{ uuid: string; genuuid_res: number }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrconnect\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t1: 1,\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: 1,\n\t\t\tstate: 0,\n\t\t\tlogin_type: \"safe_center\",\n\t\t\ttype: \"json\",\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t}),\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t});\n\tawait sleep(1000);\n\n\tif (getUuidResult.genuuid_res !== 0) {\n\t\treturn { code: 200, message: GET_QRCODE_DEFAULT_ERROR, data: \"\" };\n\t}\n\tconst uuid = getUuidResult.uuid;\n\tawait sleep(1000);\n\n\t// 7. 获取验证二维码\n\tconst qrcodeResult = await http.api({\n\t\tmethod: \"get\",\n\t\turl: \"https://mp.weixin.qq.com/safe/safeqrcode\",\n\t\tparams: {\n\t\t\taction: \"check\",\n\t\t\ttype: \"msgs\",\n\t\t\tservice_type: 1,\n\t\t\tticket: getTicketResult.ticket,\n\t\t\tuuid,\n\t\t\tmsgid: operation_seq,\n\t\t\topen_email: params.settingInfo.timer ? true : false,\n\t\t\t...(params.masssend ? {} : { publish_type: 1 }),\n\t\t},\n\t\tdefaultErrorMsg: GET_QRCODE_DEFAULT_ERROR,\n\t\tresponseType: \"arraybuffer\",\n\t});\n\n\tconst qrcodeBuffer = Buffer.from(qrcodeResult);\n\tconst qrcodeFilePath = path.join(tmpCachePath, \"weixin_qrcode.jpg\");\n\tfs.writeFileSync(qrcodeFilePath, new Uint8Array(qrcodeBuffer));\n\n\tparams.safeQrcodeCallback?.(qrcodeFilePath);\n\n\t// 8. 验证二维码结果\n\tlet code = \"\";\n\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\tawait sleep(2000);\n\n\t\tconst checkScanResult = await http.api<{ code: string; errcode: number }>({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/safe/safeuuid\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\ttimespam: Date.now(),\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tuuid,\n\t\t\t\taction: \"json\",\n\t\t\t\ttype: \"json\",\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t}),\n\t\t});\n\n\t\tif (checkScanResult.errcode === 405 && checkScanResult.code) {\n\t\t\tcode = checkScanResult.code;\n\t\t\tbreak;\n\t\t}\n\n\t\tif (i === scanRetryMaxCount - 1) {\n\t\t\treturn { code: 200, message: \"二维码已过期,请重试发布。\", data: \"\" };\n\t\t}\n\t}\n\n\t// 非群发时会多一个接口\n\tif (!params.masssend) {\n\t\tawait http.api({\n\t\t\tmethod: \"post\",\n\t\t\turl: \"https://mp.weixin.qq.com/misc/safeassistant\",\n\t\t\tparams: {\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t1: 1,\n\t\t\t},\n\t\t\tdata: generatorFormData({\n\t\t\t\ttoken: params.token,\n\t\t\t\tlang: \"zh_CN\",\n\t\t\t\tf: \"json\",\n\t\t\t\tajax: 1,\n\t\t\t\tfingerprint,\n\t\t\t\trandom: Math.random().toString(),\n\t\t\t\taction: \"get_uuid\",\n\t\t\t\tuuid,\n\t\t\t}),\n\t\t});\n\t}\n\n\t// 9. 发送群发通知\n\tawait http.api<{ code: string; errcode: number }>({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/masssend\",\n\t\tparams: {\n\t\t\tt: \"ajax-response\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\t...(params.masssend ? {\n\t\t\t\t...(params.settingInfo.timer ? {\n\t\t\t\t\taction: \"time_send\"\n\t\t\t\t}: {})\n\t\t\t} : { is_release_publish_page: 1 }),\n\t\t},\n\t\tdata: generatorFormData({\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t\tf: \"json\",\n\t\t\tajax: \"1\",\n\t\t\tfingerprint,\n\t\t\trandom: Math.random().toString(),\n\t\t\tack: \"\",\n\t\t\tcode,\n\t\t\treprint_info: \"\",\n\t\t\treprint_confirm: \"0\",\n\t\t\tlist: \"\",\n\t\t\tgroupid: \"\",\n\t\t\tsex: \"0\",\n\t\t\tcountry: \"\",\n\t\t\tprovince: \"\",\n\t\t\tcity: \"\",\n\t\t\tsend_time: params.settingInfo.timer ? params.settingInfo.timer : \"0\",\n\t\t\ttype: \"10\",\n\t\t\tshare_page: \"1\",\n\t\t\tsynctxweibo: \"0\",\n\t\t\toperation_seq,\n\t\t\treq_id: randomString(32),\n\t\t\treq_time: new Date().getTime() + client_time_diff * 1e3,\n\t\t\tsync_version: \"1\",\n\t\t\tisFreePublish: params.masssend ? \"false\" : \"true\",\n\t\t\tappmsgid: appMsgId,\n\t\t\tisMulti: \"0\",\n\t\t\tdirect_send: \"1\",\n\t\t\tisNeedCode: \"true\",\n\t\t\tuserType: \"1\",\n\t\t}),\n\t\tdefaultErrorMsg: params.masssend ? \"文章群发异常,请尝试关闭群发或稍后重试。\" : \"文章发布异常,请稍后重试。\",\n\t});\n\n\treturn success(appMsgId, params.settingInfo.timer ? \"微信公众号文章定时发布成功。\" : \"微信公众号发布完成。\");\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { CookieMap, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport axios from \"axios\";\n\nimport { copyHtmlToClipboard, parseUrlQueryString, PopupListener, TimeFormatter } from \"../../utils\";\nimport type { PublishAction } from \"./index\";\nimport { scanRetryMaxCount } from \"./utils\";\n\n// 等待二维码验证结果最长时间\nconst waitQrcodeResultMaxTime = scanRetryMaxCount * 2 * 1000;\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst urlParams = {\n\t\taction: \"edit\",\n\t\ttype: 77,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\ttimestamp: Date.now(),\n\t\tappmsgid: params.appMsgId,\n\t};\n\n\tif (params.settingInfo?.wxRewardTarget){\n\t\tconst urlRewardParams = {\n\t\t\taction: \"inviteauthor\",\n\t\t\ttoken: params.token,\n\t\t\tlang: \"zh_CN\",\n\t\t};\n\t\tconst wxRewardPage = await task.createPage({\n\t\t\tshow: task.debug,\n\t\t\turl:\n\t\t\t\tparams.url ||\n\t\t\t\t`https://mp.weixin.qq.com/cgi-bin/safecenterstatus?${Object.entries(urlRewardParams)\n\t\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t\t.join(\"&\")}`,\n\t\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t\t});\n\n\t\tconst reward_page = wxRewardPage.locator(\"#app\")\n\t\tconst isAddRewarder = reward_page.locator('.author_card_bd.weui-desktop-vm_primary').filter({hasText: params.settingInfo.wxRewardTarget.author}).count()\n\t\tif(await isAddRewarder == 0){\n\t\t\tawait reward_page.locator('.weui-desktop-panel__hd-right').click()\n\t\t\ttry {\n\t\t\t\ttry {\n\t\t\t\t\tawait wxRewardPage.waitForSelector('.invite-qrcode', { state: 'visible', timeout: 20000 });\n\t\t\t\t\tconst qrcodeSrc = await reward_page.locator(\".invite-qrcode\").getAttribute('src')\n\n\t\t\t\t\tif (qrcodeSrc) {\n\t\t\t\t\t\tconst rewardBuffer = Buffer.from(qrcodeSrc.replace(/^data:image\\/\\w+;base64,/, ''), 'base64');\n\t\t\t\t\t\tconst rewardFilePath = path.join(tmpCachePath, \"weixin_reward.jpg\");\n\t\t\t\t\t\tfs.writeFileSync(rewardFilePath, new Uint8Array(rewardBuffer));\n\n\t\t\t\t\t\tparams.safeQrcodeCallback?.(rewardFilePath);\n\t\t\t\t\t}\n\n\t\t\t\t\t// await wxRewardPage.waitForSelector('[data-transfer=\"true\"]:not([weui=\"true\"])', { state: 'detached', timeout: 30000 });\n\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new Error(\"二维码已过期,请重试绑定。\");\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < scanRetryMaxCount; i++) {\n\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\twxRewardPage.reload(),\n\t\t\t\t\t\twxRewardPage.waitForLoadState('domcontentloaded')\n\t\t\t\t\t]);\n\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait wxRewardPage.waitForSelector(`.author_card_bd.weui-desktop-vm_primary:has-text(\"${params.settingInfo.wxRewardTarget?.author}\")`, { timeout: 1000 });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} catch (error) {}\n\n\t\t\t\t\tif (i === scanRetryMaxCount - 1) throw new Error(\"未确认绑定账户,请在手机端确认绑定并重试\");\n\t\t\t\t}\n\n\t\t\t} catch (error) {\n\t\t\t\tlet errorMessage = \"发生未知错误\";\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\terrorMessage = error.message;\n\t\t\t\t} else if (typeof error === \"string\") {\n\t\t\t\t\terrorMessage = error;\n\t\t\t\t}\n\t\t\t\tawait wxRewardPage.close();\n\t\t\t\treturn { code: 200, message: errorMessage , data: \"\" };\n\t\t\t}\n\t\t}\n\n\t\tif(params.settingInfo.wxRewardText){\n\t\t\tawait wxRewardPage.locator('[href=\"/merchant/reward?action=getautoreply\"]').click()\n\t\t\tawait wxRewardPage.waitForLoadState('networkidle');\n\n\t\t\tconst isAddWord = reward_page.locator(\".auto-reply__list.edit .auto-reply__hd .auto-reply__text\").filter({hasText: new RegExp(`^${params.settingInfo.wxRewardText}$`) }).count()\n\n\t\t\tif(await isAddWord == 0){\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").fill(params.settingInfo.wxRewardText)\n\t\t\t\tawait reward_page.locator(\".emotion_editor .edit_area\").click()\n\t\t\t\tawait reward_page.locator(\".editor_toolbar .weui-desktop-btn.weui-desktop-btn_primary\").click()\n\t\t\t}\n\t\t}\n\t\tawait wxRewardPage.close();\n\n\t}\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?${Object.entries(urlParams)\n\t\t\t\t.map((it) => it.join(\"=\"))\n\t\t\t\t.join(\"&\")}`,\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\t// 0. 校验登录\n\ttry {\n\t\tawait page.waitForSelector(\".weui-desktop-head\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 1. 等待编辑器加载出来\n\tawait page.waitForSelector(\"#editor_pannel\", { state: \"visible\" });\n\n\t//新功能更新监听\n\tPopupListener(page,'[v-transfer-dom=\"#vue_app\"] .weui-desktop-dialog',\"更新\", '[v-transfer-dom=\"#vue_app\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: false\n\t})\n\t//小店功能开通监听\n\tPopupListener(page,'[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-dialog',\"小店\", '[extclass=\"weui-desktop-dialog_simple\"] .weui-desktop-icon-btn.weui-desktop-dialog__close-btn',\n\t{\n\t\tcheckInterval: 1000,\n\t\tstopAfterClick: true\n\t})\n\n\t// 2. 填写标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 填写作者\n\tif (params.settingInfo.wxAuthor) {\n\t\tconst titleInstance = page.locator(\"#js_author_area input#author\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAuthor);\n\t}\n\n\t// 4. 填写正文\n\tawait copyHtmlToClipboard(page, params.content);\n\t// 定位目标元素并聚焦\n\tawait page.click(\".js_editor_area .ProseMirror\");\n\t// 模拟Ctrl+V粘贴\n\tawait page.keyboard.press(\"Control+V\");\n\n\t// 将设置区域滚动到可见区域\n\tawait page.locator(\"#article_setting_area\").evaluate((node) => node.scrollIntoView());\n\n\t// 5. 填写摘要\n\tif (params.settingInfo.wxAbstract) {\n\t\tconst titleInstance = page.locator(\"#article_setting_area #js_description_area textarea\");\n\t\tawait titleInstance.click();\n\t\tawait titleInstance.fill(params.settingInfo.wxAbstract);\n\t}\n\n\t// 6. 设置封面\n\tif (params.settingInfo.wxCover) {\n\t\tlet fileName = getFilenameFromUrl(params.settingInfo.wxCover);\n let ext = path.extname(fileName);\n fileName = ext ? fileName : `${fileName}.png`\n\t\tconst cover = await downloadImage(params.settingInfo.wxCover, path.join(tmpCachePath, fileName));\n\n\t\t// 从图片库选择\n\t\tawait page.locator(\"#article_setting_area #js_cover_area .select-cover__btn\").hover();\n\t\tawait page\n\t\t\t.locator(\"#article_setting_area #js_cover_area .pop-opr__group-select-cover .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"从图片库选择\" })\n\t\t\t.click();\n\n\t\t// 在弹窗内选择「我的图片」- 「上传文件」\n\t\t// 等待弹窗出现\n\t\tawait page.waitForSelector(\"#vue_app .weui-desktop-dialog\", { state: \"visible\" });\n\t\tconst dialog = page.locator(\"#vue_app .weui-desktop-dialog\");\n\t\t// 点击「我的图片」\n\t\tawait dialog.locator(\".weui-desktop-menu .weui-desktop-menu__item\").filter({ hasText: \"我的图片\" }).click();\n\t\tawait page.waitForTimeout(300);\n\t\t// 点击「上传文件」\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait dialog.locator(\".weui-desktop-img-picker__list__area .js_upload_btn_container\").click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles([cover]);\n\n\t\t// 等待图片上传完成\n\t\tawait page.waitForSelector(\".weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected\", {\n\t\t\tstate: \"visible\",\n\t\t});\n\t\tawait page.waitForSelector('.weui-desktop-upload__file__progress', { state: 'detached' });\n\n\t\tconst pic_msg = page.locator('.weui-desktop-img-picker__list .weui-desktop-img-picker__item.selected .weui-desktop-upload__file__msg')\n\t\tif(await pic_msg.count() > 0) return {code: 200, message: \"图片上传错误:\"+(await pic_msg.textContent()||\"未知错误,请重试!\"), data: \"\"}\n\n\t\t// 选择下一步\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn:not(.weui-desktop-btn_disabled)\")\n\t\t\t.filter({ hasText: \"下一步\" })\n\t\t\t.click();\n\t\t// 等待第二步的确认按钮出来\n\t\tawait dialog\n\t\t\t.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\")\n\t\t\t.filter({ hasText: \"确认\" })\n\t\t\t.waitFor({ state: \"visible\" });\n\t\tawait dialog.locator(\".weui-desktop-dialog__ft .weui-desktop-btn\").filter({ hasText: \"确认\" }).click();\n\t}\n\n\t// 7. 原创与赞赏设置\n\tif(params.settingInfo.wxCopyright){\n\t\tawait page.locator('#js_original').click()\n\n\t\tconst ori_dialog = page.locator('.claim__original-dialog.original_dialog')\n\t\tconst ori_dialog_bd = ori_dialog.locator('.weui-desktop-dialog__bd')\n\t\tconst ori_dialog_ft = ori_dialog.locator('.weui-desktop-dialog__ft')\n\n\t\tawait ori_dialog_bd.locator('.weui-desktop-form__check-content').filter({hasText: \"文字原创\"}).click()\n\n\t\tif(params.settingInfo?.wxWhitelist){\n\n\t\t\tfor (var _target of params.settingInfo.wxWhitelist){\n\n\t\t\t\tawait ori_dialog_bd.locator('#js_article_whitelist_search').fill(_target)\n\t\t\t\tawait ori_dialog_bd.locator('.js_search').click()\n\t\t\t\tconst search_res = ori_dialog_bd.locator('#js_article_whitelist_search_result > div')\n\n\t\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\t\tif( await search_res.getAttribute('class') !== 'search-result-title search-result-empty'){\n\n\t\t\t\t\tconst search_res_name = await search_res.locator('.search-result-name-left').textContent() || undefined\n\t\t\t\t\tawait search_res.click()\n\t\t\t\t\tconst whrite_list = ori_dialog_bd.locator('#js_article_whitelist_added tbody')\n\t\t\t\t\tconst white_td_isadd = await whrite_list.locator('.table-td-name').filter({hasText: search_res_name}).count()\n\n\t\t\t\t\tif (!white_td_isadd) {\n\t\t\t\t\t\treturn {code: 200 , message:'白名单添加失败,请重试!', data: ''}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\treturn { code: 200, message: `白名单用户:${_target} 未搜索到,请确定输入是否正确!`, data: '' }\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\n\t\tif(params.settingInfo?.wxQuickReprint){\n\t\t\tconst btn_isChecked = await ori_dialog_bd.locator('//span[@class=\"frm_tips\"]').filter({ hasText: '已开启' }).count() == 1 ? true : false;\n\t\t\tif(!btn_isChecked) await ori_dialog_bd.locator('.weui-desktop-switch_loading .weui-desktop-switch__box').click()\n\t\t}\n\n\t\tconst checkbox = ori_dialog_ft.locator('.weui-desktop-icon-checkbox')\n\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\tawait ori_dialog_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\tif (params.settingInfo?.wxRewardTarget){\n\n\t\t\tawait page.locator('#js_reward_setting_area').click()\n\n\t\t\tconst reward_setting = page.locator('.reward-setting-dialog')\n\t\t\tconst reward_setting_bd = reward_setting.locator('.weui-desktop-dialog__bd')\n\t\t\tconst reward_setting_ft = reward_setting.locator('.weui-desktop-dialog__ft')\n\n\t\t\t//遍历绑定信息\n\t\t\tfor (var _type in params.settingInfo.wxRewardTarget){\n\t\t\t\tif (_type === \"author\"){\n\t\t\t\t\tlet userName = params.settingInfo.wxRewardTarget[_type]\n\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__check-label', { hasText: '赞赏作者' }).click()\n\t\t\t\t\tawait reward_setting_bd.locator('.weui-desktop-form__input').fill(userName)\n\n\n\t\t\t\t\tif(params.settingInfo.wxRewardText) {\n\t\t\t\t\t\tconst reward_setting_replay = page.locator('.reward-reply-setting')\n\t\t\t\t\t\tconst switchAuto = reward_setting_replay.locator('.weui-desktop-switch__box')\n\n\t\t\t\t\t\tconst maxAttempts = 5;\n\t\t\t\t\t\tconst delayMs = 500;\n\t\t\t\t\t\tlet nowCheckTime = 0\n\n\t\t\t\t\t\tfor (let attempt = 0; attempt < maxAttempts; attempt++) {\n\t\t\t\t\t\t\tconst isDisabled = await switchAuto.isDisabled();\n\t\t\t\t\t\t\tif (!isDisabled){\n\t\t\t\t\t\t\t\tawait switchAuto.isChecked() ? nowCheckTime++ : null\n\t\t\t\t\t\t\t\tif (nowCheckTime == 2) break\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (attempt === maxAttempts - 1) throw new Error('Checkbox did not become enabled within the timeout.');\n\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, delayMs));\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tconst isOneReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').textContent() == \"添加新的回复\"\n\t\t\t\t\t\tconst isCurrentReplay = await reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__display .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).count() == 1\n\n\t\t\t\t\t\tif (!isOneReplay && !isCurrentReplay) {\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__wrp >.reward-reply-select__tips').click()\n\t\t\t\t\t\t\tawait reward_setting_replay.locator('.reward-reply-select__display.can-select .wording').filter({hasText: new RegExp(`^${[params.settingInfo.wxRewardText]}$`)}).click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tawait reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__input').isChecked() ? reward_setting_bd.locator('.reward-reply-setting .weui-desktop-switch__box').uncheck(): 0\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse if (_type === \"project\"){}\n\t\t\t}\n\n\t\t\tconst checkbox = reward_setting_ft.locator('.weui-desktop-icon-checkbox')\n\t\t\tif( !await checkbox.isChecked()) await checkbox.check()\n\t\t\tawait reward_setting_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\n\t\t}\n\n\t}\n\n\t// 8. 互动设置\n\tif(params.settingInfo?.wxInteraction){\n\t\tawait page.locator('.appmsg-editor__setting-group.js_interaction_cell').click()\n\t\tconst wxInteraction_setting = page.locator('.interaction-dialog')\n\t\tconst wxInteraction_bd = wxInteraction_setting.locator('.weui-desktop-dialog__bd')\n\t\tconst wxInteraction_ft = wxInteraction_setting.locator('.weui-desktop-dialog__ft')\n\n\t\tif(params.settingInfo.wxInteraction.Type == \"public\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(开启|留言)$/ }).click();\n\n\t\t\tconst comment_area = wxInteraction_bd.locator('.comment-options-block.pt0')\n\t\t\tconst reply_area = wxInteraction_bd.locator('.comment-options-block.bb0.pb0')\n\t\t\tconst commont_rply_opt = page.locator('.weui-desktop-popper.options-popover[x-placement=\"bottom\"]')\n\n\t\t\tawait comment_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.Comment }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_comment) {\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait comment_area.locator('.weui-desktop-switch__input').isChecked() ? comment_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\n\t\t\tawait page.waitForTimeout(1000);\n\n\t\t\tawait reply_area.locator('.comment-options__selector-btn').click();\n\t\t\tawait commont_rply_opt.locator('.weui-desktop-form__check-label', { hasText: params.settingInfo.wxInteraction.Option?.reply }).click();\n\n\t\t\tif(params.settingInfo.wxInteraction.Option?.elect_reply) {\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__box').check()\n\t\t\t}else{\n\t\t\t\tawait reply_area.locator('.weui-desktop-switch__input').isChecked() ? reply_area.locator('.weui-desktop-switch__box').uncheck(): 0\n\t\t\t}\n\t\t}else if(params.settingInfo.wxInteraction.Type == \"private\"){\n\t\t\tawait wxInteraction_bd.locator('.weui-desktop-form__check-label span', { hasText: /^(快捷私信|不开启)$/ }).click();\n\t\t}\n\n\t\tawait wxInteraction_ft.locator('.weui-desktop-btn.weui-desktop-btn_primary').click()\n\t}\n\n\t// 9. 原文链接\n\tif (params.settingInfo.wxOriginalText) {\n\t\tawait page.locator(\"#js_article_url_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tconst poperInput = poperInstance.locator(\"input.weui-desktop-form__input.js_url\");\n\t\tawait poperInput.fill(params.settingInfo.wxOriginalText);\n\t\tawait poperInstance.locator(\".popover_bar .btn_primary\").click();\n\t}\n\n\t// 10. 创作来源\n\tif (params.settingInfo.wxCreationSource && params.settingInfo.wxCreationSource.length > 0) {\n\t\tconst source = params.settingInfo.wxCreationSource[0];\n\t\tawait page.locator(\"#js_claim_source_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator(`.frm_radio_item label[for=\"${source}\"]`).click();\n\t}\n\n\t// 11. 关闭平台推荐\n\tif (params.settingInfo.wxNotAllowRecommend === true) {\n\t\tawait page.locator(\"#js_not_recommend_area .allow_click_opr\").click();\n\t\tawait page.waitForTimeout(200);\n\t\tconst poperInstance = page.locator('.popover:not([style*=\"display: none\"])');\n\t\tawait poperInstance.locator('.frm_radio_item label[for=\"not_recomment_0\"]').click();\n\t}\n\n\tawait page.waitForTimeout(1000);\n task._timerRecord['PrePublish']= Date.now();\n\n\t// 12. 发布\n\tconst articleId = await new Promise<string>(async (resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tconst url = response.url();\n\t\t\tconst query = parseUrlQueryString(url);\n\t\t\tif (url.includes(\"/cgi-bin/operate_appmsg\") && query?.t === \"ajax-response\") {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse?.appMsgId);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n\t\t// 点击发表\n\t\tpage.locator(\"#editor_pannel #bottom_main #js_button_area #js_send button\").click();\n\t\tawait page.waitForTimeout(200);\n\n\t\tif (params.settingInfo.timer) {\n\t\t\tawait page.locator(\".mass-send .mass-send__td-setting\", {hasText: \"定时发表\"}).locator(\".weui-desktop-switch__box\").check();\n\t\t\tlet dateD = Number(TimeFormatter.format(params.settingInfo.timer, \"d\"));\n\t\t\tlet nowD = Number(TimeFormatter.format(Date.now(), \"d\"));\n\n\t\t\tawait page.locator(\".mass-send__timer .weui-desktop-form__dropdown__dt\").click();\n\t\t\tconst dropMenu = page.locator(\".mass-send__timer .weui-desktop-dropdown-menu\").locator(\".weui-desktop-dropdown__list-ele\")\n\t\t\tawait dropMenu.filter({hasText: dateD == nowD ? \"今天\" : dateD == nowD + 1 ? \"明天\" : TimeFormatter.format(params.settingInfo.timer, \"M月d日\")}).click();\n\n\t\t\tconst timeDropMenu = page.locator(\".mass-send__timer .weui-desktop-picker__time:visible\")\n\t\t\tawait timeDropMenu.locator(\".weui-desktop-form__input\").fill(TimeFormatter.format(params.settingInfo.timer, \"hh:mm\"));\n\t\t\tawait timeDropMenu.locator(\"i.weui-desktop-icon__time\").click();\n\n\t\t}\n\t});\n\tawait page.waitForTimeout(200);\n\n\tif(params.masssend){\n\t\tconst times = Number(await page.locator(\".mass-send .multi-sent__notice_time\").locator('div[style=\"display: none;\"] div:not([style*=\"display: none\"]) span').textContent())\n\t\tif( times==0 ) return { code: 200, message: \"今日群发次数用尽,请明天再试。\", data: \"\" };\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").check();\n\t}else{\n\t\tawait page.locator(\".mass-send .mass_send__notify\").locator(\".weui-desktop-switch__box\").uncheck();\n\t}\n\n\tawait page.waitForTimeout(200);\n\n\t// 再次点击发表\n\tawait page.waitForSelector('.new_mass_send_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\"});\n\tawait page.locator(\".new_mass_send_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\t// 点击继续发表\n\tawait page.waitForSelector('.double_check_dialog .weui-desktop-dialog__wrp:not([style*=\"display: none\"])', {state: \"visible\",});\n\tawait page.locator(\".double_check_dialog .weui-desktop-dialog .weui-desktop-dialog__ft button.weui-desktop-btn_primary\").click();\n\n\tawait page.waitForTimeout(2000);\n\n\t// 原创校验弹窗\n\tconst originalCheckDialog = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"] .weui-desktop-dialog__title')\n\tif((await originalCheckDialog.count() > 0) ){\n\t\tif (await originalCheckDialog.textContent() === \"原创校验\"){\n\t\t\tconst popMassend = page.locator('div[data-transfer=\"true\"][width\\\\.number=\"800\"][height\\\\.number=\"800\"]')\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"下一步\"}).click();\n\t\t\tawait popMassend.locator(\".weui-desktop-btn_primary\",{hasText: \"继续\"}).click();\n\t\t}\n\t}\n\n\n\ttry {\n\t\tconst startTime = Date.now();\n\n\t\t// biome-ignore lint/suspicious/noAsyncPromiseExecutor: <explanation>\n\t\tawait new Promise<void>(async (resolve, reject) => {\n\t\t\t// 定义响应处理函数\n\t\t\tconst handleResponse = async (response: Response) => {\n\t\t\t\tif (response.url().includes(\"/safe/safeuuid\")) {\n\t\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\t\tif (jsonResponse.errcode === 405) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t} else if (Date.now() - startTime > waitQrcodeResultMaxTime) {\n\t\t\t\t\t\treject();\n\t\t\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// 开始监听响应事件\n\t\t\tpage.on(\"response\", handleResponse);\n\n\t\t\t// 获取微信验证二维码\n\t\t\tawait page.waitForSelector(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\", {\n\t\t\t\tstate: \"visible\",\n\t\t\t});\n\t\t\tconst qrcodeSrc = await page\n\t\t\t\t.locator(\".dialog .js_wxchecks.safe_check img.qrcode.js_qrcode\")\n\t\t\t\t.first()\n\t\t\t\t.getAttribute(\"src\");\n\t\t\tif (qrcodeSrc) {\n\t\t\t\tconst imgUrl = new URL(qrcodeSrc, page.url()).href; // 处理相对路径\n\t\t\t\tconst response = await axios({\n\t\t\t\t\tmethod: \"get\",\n\t\t\t\t\turl: imgUrl,\n\t\t\t\t\tresponseType: \"arraybuffer\", // 确保接收二进制数据\n\t\t\t\t});\n\t\t\t\t// 保存文件\n\t\t\t\tconst qrcodeFilePath = path.join(tmpCachePath, \"weixin_qrcode.jpg\");\n\t\t\t\tfs.writeFileSync(qrcodeFilePath, response.data);\n\t\t\t\tparams.safeQrcodeCallback?.(qrcodeFilePath);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"qrcodeSrc is empty\");\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tawait page.close();\n\t\treturn { code: 500, message: \"群发二维码已过期,请重试发布。\", data: \"\" };\n\t}\n\n\tawait page.waitForTimeout(3000);\n\tawait page.close();\n\n\treturn success(articleId);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { defaultParams, executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\nexport interface WxInteraction {\n\tType: \"public\" | \"private\" | \"off\"; // public:评论留言, priviate: 快捷私信, off: 不开启\n\tOption?: { // public下相关设置\n\t Comment: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 评论设置\n\t reply: \"已关注7天及以上的用户\" | \"已关注的用户\" | \"所有用户\"; // 回复设置\n\t elect_comment: boolean; // 是否开启精选评论\n\t elect_reply: boolean; // 是否开启精选回复\n\t};\n }\n\nexport interface WeixinPublishParams extends ActiomCommonParams {\n\tsaveType: \"draft\" | \"publish\"; // 保存成草稿 / 发布\n\tmasssend?: boolean; // 是否群发(默认开启群发)\n\ttoken: string | number;\n\ttitle: string; // 标题\n\tcontent: string; // 正文内容\n\tuuid?: string;\n\tappMsgId?: string;\n\toperation_seq?: string;\n\tsettingInfo: {\n\t\twxCover: string; // 封面\n\t\twxAuthor?: string; // 作者\n\t\twxAbstract?: string; // 摘要\n\t\twxOriginalText?: string; // 原文链接\n\t\twxCopyright?: boolean, // 版权声明\n\t\twxWhitelist?: string[]; // 转载白马名单\n\t\twxRewardTarget?: Record<string, string>; // 赞赏目标与ID\n\t\twxRewardText?: string; // 赞赏文案\n\t\twxQuickReprint?: boolean; // 快捷转载\n\t\twxNotAllowRecommend?: boolean; // 不允许被平台推荐\n\t\twxCreationSource?: string[]; // 创作来源\n\t\twxInteraction?: WxInteraction // 互动设置\n\t\ttimer?: number; // 定时发文时间\n\t};\n\tsafeQrcodeCallback?: (qrcodePath: string) => void; // 二维码验证回调\n}\n\nexport interface WxWhitelistUserInfo {\n\tnickname: string;\n\topenid: string; // 微信常用字段命名可能是 open_id\n\tusername: string;\n\twx_name: string;\n\tpic_url: string;\n}\n\nexport type PublishAction = CommonAction<WeixinPublishParams, string>;\n\nexport const weixinPublish: PublishAction = async (task, _params) => {\n\tconst params = defaultParams(_params, { masssend: true });\n\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport FormData from \"form-data\";\n\nimport type { PublishAction, WeixinmpPublishParams } from \".\";\nimport type { Weixin } from \"../../types\";\nimport type { AspectRatio } from \"../../utils\";\nimport { calculateCropCoordinates, getFileState } from \"../../utils\";\nimport { Http } from \"../../utils/http\"\n\ntype ColorResponse = {\n\twidth: number;\n\theight: number;\n\ttheme_color: { r: number; g: number; b: number };\n};\ntype ShareInamgeInfo = {\n\tcdn_url: string;\n\tdisable_live: 0;\n\tdisable_theme: 1;\n\tfile_id: number;\n\twidth: number;\n\theight: number;\n\ttheme_color: string;\n\turl: string;\n};\n\nconst saveDraft = (\n\thttp: Http,\n\tparams: WeixinmpPublishParams,\n\tdata: Record<string, unknown>,\n) => {\n\tconst formData = new FormData();\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tformData.append(key, value);\n\t}\n\n\treturn http.api({\n\t\tmethod: \"post\",\n\t\turl: \"https://mp.weixin.qq.com/cgi-bin/operate_appmsg\",\n\t\tparams: {\n\t\t\ttoken: params.token,\n\t\t\tt: \"ajax-response\",\n\t\t\tsub: \"update\",\n\t\t\ttype: 77,\n\t\t\tlang: \"zh_CN\",\n\t\t},\n\t\tdata: formData,\n\t});\n};\n\nexport const mockAction: PublishAction = async (task, params) => {\n\tconst tmpCachePath = task.getTmpPath();\n\tconst http = new Http({\n\t\theaders: {\n\t\t\tcookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n\t\t\torigin: \"https://mp.weixin.qq.com\",\n\t\t\treferer: `https://mp.weixin.qq.com/cgi-bin/appmsg?token=${params.token}&lang=zh_CN`,\n\t\t},\n\t});\n\n\t// 1. 上传图片\n\tconst shareImageInfos: ShareInamgeInfo[] = [];\n\tconst cropResult: Record<string, string> = {};\n\n\tif (params.banners && params.banners.length > 0) {\n\t\t// 下载图片到本地\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\tfor (let index = 0; index < images.length; index++) {\n\t\t\tconst image = images[index];\n\t\t\tconst fileState = getFileState(image);\n\n\t\t\tconst formData = new FormData();\n\t\t\tformData.append(\"id\", `WU_FILE_${index + 1}`);\n\t\t\tformData.append(\"name\", fileState.name);\n\t\t\tformData.append(\"type\", fileState.type);\n\t\t\tformData.append(\"lastModifiedDate\", fileState.lastModifiedDate);\n\t\t\tformData.append(\"size\", fileState.size);\n\t\t\tformData.append(\"file\", fs.createReadStream(image));\n\n\t\t\tconst response = await http.api<{ cdn_url: string; content: string }>({\n\t\t\t\tmethod: \"post\",\n\t\t\t\turl: `https://mp.weixin.qq.com/cgi-bin/filetransfer?action=upload_material&f=json&writetype=doublewrite&token=${params.token}&lang=zh_CN`,\n\t\t\t\tdata: formData,\n\t\t\t});\n\n\t\t\t// 获取图片的主题色\n\t\t\tconst colorResponseData = await http.api<ColorResponse>({\n\t\t\t\tmethod: \"get\",\n\t\t\t\turl: \"https://mp.weixin.qq.com/cgi-bin/filepage\",\n\t\t\t\tparams: {\n\t\t\t\t\taction: \"getimgext\",\n\t\t\t\t\tfileid: response.content,\n\t\t\t\t\ttoken: params.token,\n\t\t\t\t\tlang: \"zh_CN\",\n\t\t\t\t\tf: \"json\",\n\t\t\t\t\tajax: 1,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst themeColor = colorResponseData.theme_color;\n\n\t\t\tshareImageInfos.push({\n\t\t\t\tcdn_url: response.cdn_url,\n\t\t\t\tdisable_live: 0,\n\t\t\t\tdisable_theme: 1,\n\t\t\t\tfile_id: Number(response.content),\n\t\t\t\twidth: colorResponseData.width,\n\t\t\t\theight: colorResponseData.height,\n\t\t\t\ttheme_color: `rgb(${themeColor.r},${themeColor.g},${themeColor.b})`,\n\t\t\t\turl: response.cdn_url,\n\t\t\t});\n\n\t\t\t// 第一张图片还需要添加头图裁切\n\t\t\tif (index === 0) {\n\t\t\t\tconst cropFormData = new FormData();\n\t\t\t\tcropFormData.append(\"imgurl\", response.cdn_url);\n\n\t\t\t\t// 需要裁切 16:9,3:4,1:1 三种尺寸的图片\n\t\t\t\tconst cropRatios: AspectRatio[] = [\n\t\t\t\t\t[16, 9],\n\t\t\t\t\t[1, 1],\n\t\t\t\t\t[3, 4],\n\t\t\t\t];\n\t\t\t\tcropFormData.append(\"size_count\", cropRatios.length);\n\t\t\t\tconst cropCoordinates = cropRatios.map((r, idx) => {\n\t\t\t\t\tconst cropCoordinate = calculateCropCoordinates(\n\t\t\t\t\t\tcolorResponseData.width,\n\t\t\t\t\t\tcolorResponseData.height,\n\t\t\t\t\t\tr,\n\t\t\t\t\t);\n\t\t\t\t\tcropFormData.append(`size${idx}_x1`, cropCoordinate.x1);\n\t\t\t\t\tcropFormData.append(`size${idx}_y1`, cropCoordinate.y1);\n\t\t\t\t\tcropFormData.append(`size${idx}_x2`, cropCoordinate.x2);\n\t\t\t\t\tcropFormData.append(`size${idx}_y2`, cropCoordinate.y2);\n\n\t\t\t\t\treturn { ratio: `${r[0]}_${r[1]}`, ...cropCoordinate };\n\t\t\t\t});\n\n\t\t\t\tcropFormData.append(\"token\", params.token);\n\t\t\t\tcropFormData.append(\"lang\", \"zh_CN\");\n\t\t\t\tcropFormData.append(\"f\", \"json\");\n\t\t\t\tcropFormData.append(\"ajax\", 1);\n\n\t\t\t\tconst cropResponse = await http.api<{ result: Weixin.WeiXinCropResult[] }>({\n method: \"post\",\n url: \"https://mp.weixin.qq.com/cgi-bin/cropimage?action=crop_multi\",\n data: cropFormData\n });\n\n\t\t\t\tcropResult.cdn_url_back0 = response.cdn_url; // 原图\n\t\t\t\tcropResult.cdn_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_235_1_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_16_9_url0 = cropResponse.result[0].cdnurl; // 16:9\n\t\t\t\tcropResult.cdn_1_1_url0 = cropResponse.result[1].cdnurl; // 1:1\n\t\t\t\tcropResult.cdn_3_4_url0 = cropResponse.result[2].cdnurl; // 3:4\n\t\t\t\tcropResult.crop_list0 = JSON.stringify({\n\t\t\t\t\tcrop_list: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t\tratio: it.ratio,\n\t\t\t\t\t\tx1: 0,\n\t\t\t\t\t\tx2: 0,\n\t\t\t\t\t\ty1: 0,\n\t\t\t\t\t\ty2: 0,\n\t\t\t\t\t})),\n\t\t\t\t\tcrop_list_percent: cropCoordinates.map((it, idx) => ({\n\t\t\t\t\t\t...it,\n\t\t\t\t\t\tfile_id: cropResponse.result[idx].file_id,\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// 保存\n\tconst res = await saveDraft(http, params, {\n\t\t...cropResult,\n\t\ttoken: params.token,\n\t\tlang: \"zh_CN\",\n\t\tf: \"json\",\n\t\tajax: 1,\n\t\toperate_from: \"Chrome\",\n\t\ttitle0: params.title,\n\t\tcontent0: params.content,\n\t\tshare_imageinfo0: JSON.stringify(shareImageInfos),\n\t});\n\n return success(res)\n};\n","import path from \"node:path\";\nimport type { CookieMap } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\n\nimport type { PublishAction, Source } from \"./index\";\n\nconst sourceText: Record<Source, string> = {\n\tai: \"内容由AI生成\",\n\tofficial: \"素材来源官方媒体/网络新闻\",\n\tfictional: \"内容剧情演绎,仅供娱乐\",\n\tpersonal: \"个人观点,仅供参考\",\n};\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsecure: true,\n\t\tdomain: \"mp.weixin.qq.com\",\n\t\turl: \"https://mp.weixin.qq.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl:\n\t\t\tparams.url ||\n\t\t\t`https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=8&token=${params.token}&lang=zh_CN`,\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\t// 0. 判断是否登录\n\ttry {\n\t\tawait page.waitForSelector(\"#editor_pannel\");\n\t} catch (error) {\n\t\treturn { code: 500, message: \"登录失效\", data: page.url() };\n\t}\n\n\tconst container = page.locator(\"#editor_pannel\");\n\n\t// 1. 添加图片\n\tif (params.banners && params.banners.length > 0) {\n\t\tconst images = await Promise.all(\n\t\t\tparams.banners.map((url) => {\n\t\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t\t}),\n\t\t);\n\n\t\t// 选择文件\n\t\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\t\tawait container.locator(\".image-selector__add\").hover();\n\t\tawait container\n\t\t\t.locator(\".image-selector__add .pop-opr__list .pop-opr__item\")\n\t\t\t.filter({ hasText: \"本地上传\" })\n\t\t\t.click();\n\t\tconst fileChooser = await fileChooserPromise;\n\t\tawait fileChooser.setFiles(images);\n\t}\n\n\t// 2. 标题\n\tconst titleInstance = page.locator(\"#js_title_main textarea#title\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 3. 正文\n\tconst descInstance = page.locator(\"#guide_words_main .ProseMirror\");\n\tawait descInstance.click();\n\tawait descInstance.fill(params.content);\n\n\t// 4. 来源\n\tif (params.source) {\n\t\tawait container.locator(\"#js_claim_source_area .js_claim_source_desc\").click();\n\t\tawait page\n\t\t\t.locator(\".popover_article_claim_source .frm_radio_item label\")\n\t\t\t.filter({ hasText: sourceText[params.source] })\n\t\t\t.click();\n\t}\n\n\t// 5. 等待所有图片上传完成\n\tif (params.banners && params.banners.length > 0) {\n\t\tawait page.waitForSelector(\"#editor_pannel .image-selector .image-selector__preview\");\n\t}\n\n\t// 6. 保存\n\tif (params.draft) {\n\t\tawait container.locator(\"#bottom_main #js_submit button\").click();\n\t} else {\n\t\tawait container.locator(\"#bottom_main #js_send button\").click();\n\t}\n\n\treturn success(\"\");\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\nexport type Source = \"ai\" | \"official\" | \"fictional\" | \"personal\";\n\nexport interface WeixinmpPublishParams extends ActiomCommonParams {\n\ttoken: string | number;\n\tbanners?: string[];\n\ttitle: string; // 标题\n\tcontent: string; // 正文\n\t/**\n\t * 内容由AI生成 - ai\n\t * 素材来源官方媒体/网络新闻 - official\n\t * 内容剧情演绎,仅供娱乐 - fictional\n\t * 个人观点,仅供参考 - personal\n\t */\n\tsource?: Source; // 来源\n\tdraft?: boolean; // 是否为草稿\n}\n\nexport type PublishAction = CommonAction<WeixinmpPublishParams>;\n\nexport const weixinmpPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import fs from \"node:fs\";\n\nimport path from \"node:path\";\nimport {downloadImage, getFilenameFromUrl, success} from \"@iflyrpa/share\";\nimport {type PublishAction} from \".\";\nimport {Http} from \"../../utils/http\";\nimport {XsEncrypt} from \"../../utils/xhsXsEncrypt\";\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\ninterface CommonResponse<T = unknown> {\n data: T;\n code: number;\n success: boolean;\n}\n\ninterface UploadTempPermit<T = string[]> {\n bucket: string;\n uploadAddr: string;\n fileIds: T;\n token: string;\n}\n\nconst errnoMap: Record<number, string> = {\n 915: \"所属C端账号手机号被修改,请重新登录\",\n 914: \"所属C端账号密码被修改,请重新登录\",\n 903: \"账户已登出,需重新登陆重试!\",\n 902: \"登录已过期,请重新登录!\",\n 906: \"账号存在风险,请重新登录\"\n};\n\n// 小红书参数加密器\nconst xsEncrypt = new XsEncrypt();\n\nexport const mockAction: PublishAction = async (task, params) => {\n const tmpCachePath = task.getTmpPath();\n\n const a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n if (!a1Cookie) {\n return {code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\"};\n }\n\n const http = new Http({\n headers: {\n cookie: params.cookies.map((it) => `${it.name}=${it.value}`).join(\";\"),\n origin: \"https://creator.xiaohongshu.com\",\n referer: \"https://creator.xiaohongshu.com/\",\n \"user-agent\":\n \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36\",\n },\n });\n\n // 添加响应拦截器\n http.addResponseInterceptor<CommonResponse>((response) => {\n const responseData = response.data;\n\n // 检查响应中的 errno 字段\n if (responseData?.code && responseData.code !== 0) {\n const errmsg = errnoMap[responseData.code] || response.config.defaultErrorMsg || \"文章发布异常,请稍后重试。\";\n\n return {\n code: errnoMap[responseData.code] ? 200 : 500,\n message: errmsg,\n data: responseData\n };\n }\n });\n\n // 0. 获取上传 token\n const fetchCoverUrl = `/api/media/v1/upload/creator/permit?biz_name=spectrum&scene=image&file_count=${params.banners.length}&version=1&source=web`;\n const xt = Date.now().toString();\n const xs = await xsEncrypt.encryptXs(fetchCoverUrl, a1Cookie, xt);\n const coverIdInfo = await http.api<CommonResponse<{ uploadTempPermits: UploadTempPermit[] }>>({\n method: \"get\",\n baseURL: \"https://creator.xiaohongshu.com\",\n url: fetchCoverUrl,\n defaultErrorMsg: \"获取小红书用户信息失败,请稍后重试发布。\",\n headers: {\"x-s\": xs, \"x-t\": xt},\n });\n\n let uploadInfos: UploadTempPermit<string>[] = [];\n coverIdInfo.data.uploadTempPermits.forEach((item: UploadTempPermit<string[]>) => {\n item.fileIds.forEach(fileId => {\n uploadInfos.push({\n bucket: item.bucket || \"\",\n uploadAddr: item.uploadAddr || \"\",\n fileIds: fileId,\n token: item.token || \"\"\n });\n });\n });\n\n\n if (uploadInfos.length < params.banners.length) return {code: 200, message: \"可用 OSS bucket 数量不足,无法上传所有图片!\", data: \"\"};\n\n if (uploadInfos.length === 0) return {code: 200, message: \"图片上传失败,请稍后重试!\", data: \"\"};\n\n const availableBuckets = Array.from({length: uploadInfos.length}, (_, i) => i);\n\n const uploadFile = async (url: string, index: number): Promise<{\n ossFileId: string;\n ossToken: string;\n }> => {\n const fileName = getFilenameFromUrl(url);\n const localUrl = await downloadImage(url, path.join(tmpCachePath, fileName));\n const fileBuffer = fs.readFileSync(localUrl);\n\n const MAX_RETRIES = uploadInfos.length;\n let attempt = 0;\n\n while (attempt < MAX_RETRIES) {\n // 分配 bucket\n const ossBucketIndex = availableBuckets.shift(); // 移除并获取第一个可用 bucket\n\n if (ossBucketIndex === undefined) {\n return {ossFileId: \"\", ossToken: \"\"}; // 没有可用 bucket\n }\n\n const currentInfo = uploadInfos[ossBucketIndex];\n const ossFileId = currentInfo.fileIds;\n const ossToken = currentInfo.token;\n const ossDomain = currentInfo.uploadAddr;\n\n try {\n await http.api({\n method: \"put\",\n url: `https://${ossDomain}/${ossFileId}`,\n data: fileBuffer,\n headers: {\n \"x-cos-security-token\": ossToken,\n },\n defaultErrorMsg: \"图片上传异常,请稍后重试发布。\",\n });\n return {ossFileId, ossToken};\n } catch (error) {\n attempt++;\n }\n }\n return {ossFileId: \"\", ossToken: \"\"}; // 所有尝试失败\n };\n\n const coverInfos = await Promise.all(params.banners.map((it, idx) => uploadFile(it, idx)));\n const invalidUpload = coverInfos.find((it) => it.ossToken === \"\" || it.ossFileId == \"\")\n if (invalidUpload) return {code: 200, message: \"图片上传异常,请稍后重试发布。\", data: \"\"}\n\n if (params.topic && params.topic.length > 0) {\n await Promise.all(params.topic.map(async (topic) => {\n if (!topic[\"id\"]) {\n const topicData = {topic_names: topic[\"name\"]}\n const topicDataStr = xsEncrypt.dumps(topicData);\n const publishXt = Date.now().toString();\n const publishXs = await xsEncrypt.encryptXs(`/web_api/sns/capa/postgw/topic/batch_customized${topicDataStr}`, a1Cookie, publishXt);\n let createTopic = await http.api({\n method: \"POST\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/capa/postgw/topic/batch_customized\",\n headers: {\n \"x-s\": publishXs,\n \"x-t\": publishXt,\n },\n data: topicData,\n defaultErrorMsg: \"话题创建异常,请稍后重试。\",\n })\n Object.assign(topic, createTopic.data.topic_infos[0])\n }\n }))\n }\n ;\n\n const publishData = {\n common: {\n ats: [],\n biz_relations: [],\n desc: params?.content,\n goods_info: {},\n hash_tag: params.topic || [],\n note_id: \"\",\n source: JSON.stringify({\n type: \"web\",\n ids: \"\",\n extraInfo: '{\"systemId\":\"web\"}',\n }),\n title: params?.title,\n type: \"normal\",\n privacy_info: {\n op_type: 1,\n type: params.visibleRange === \"public\" ? 0 : 1,\n },\n post_loc: params.address\n ? {\n name: params.address?.name,\n poi_id: params.address?.poi_id,\n poi_type: params.address?.poi_type,\n subname: params.address?.full_address,\n }\n : null,\n business_binds: \"\",\n },\n image_info: {\n images: coverInfos.map((it) => ({\n extra_info_json: '{\"mimeType\":\"image/png\"}',\n file_id: it.ossFileId,\n metadata: {source: -1},\n stickers: {floating: [], version: 2},\n })),\n },\n video_info: null,\n };\n\n // 自主声明\n const userDeclarationBind = {\n origin: 2,\n photoInfo: {},\n repostInfo: {},\n };\n\n if (params.selfDeclaration?.type === \"fictional-rendition\") {\n // 虚拟演绎,仅供娱乐\n userDeclarationBind.origin = 1;\n } else if (params.selfDeclaration?.type === \"ai-generated\") {\n // 笔记含AI合成内容\n userDeclarationBind.origin = 2;\n } else if (params.selfDeclaration?.type === \"source-statement\") {\n // 内容来源声明\n if (params.selfDeclaration.childType === \"self-labeling\") {\n // 已自主标注\n userDeclarationBind.origin = 3;\n } else if (params.selfDeclaration.childType === \"self-shooting\") {\n // 自主拍摄\n userDeclarationBind.origin = 4;\n const photoInfo: { photoPlace?: unknown; photoTime?: string } = {};\n\n if (params.selfDeclaration.shootingLocation) {\n // 拍摄地点\n photoInfo.photoPlace = {\n name: params.selfDeclaration.shootingLocation.name,\n poiId: params.selfDeclaration.shootingLocation.poi_id,\n poiType: params.selfDeclaration.shootingLocation.poi_type,\n subname: params.selfDeclaration.shootingLocation.full_address,\n };\n }\n\n if (params.selfDeclaration.shootingDate) {\n // 拍摄日期\n photoInfo.photoTime = params.selfDeclaration.shootingDate;\n }\n\n userDeclarationBind.photoInfo = photoInfo;\n } else if (params.selfDeclaration.childType === \"transshipment\") {\n // 来源转载\n userDeclarationBind.origin = 5;\n\n if (params.selfDeclaration.sourceMedia) {\n // 来源媒体\n userDeclarationBind.repostInfo = {\n source: params.selfDeclaration.sourceMedia,\n };\n }\n }\n }\n \n task._timerRecord['PrePublish']= Date.now();\n\n const business_binds = {\n version: 1,\n bizType: \"\",\n noteId: \"\",\n noteOrderBind: {},\n // 发布时间 - 立即发布/定时发布\n notePostTiming: params.isImmediatelyPublish ? {} : {postTime: params.scheduledPublish},\n noteCollectionBind: {id: \"\"},\n ...(params.selfDeclaration ? {userDeclarationBind} : {}),\n };\n\n publishData.common.business_binds = JSON.stringify(business_binds);\n\n const publishDataStr = xsEncrypt.dumps(publishData);\n const publishXt = Date.now().toString();\n const publishXs = await xsEncrypt.encryptXs(`/web_api/sns/v2/note${publishDataStr}`, a1Cookie, publishXt);\n const xscommon = GenXSCommon(a1Cookie, publishXt, publishXs)\n // 发布\n const publishResult = await http.api<CommonResponse<{ id: string }>>({\n method: \"post\",\n url: \"https://edith.xiaohongshu.com/web_api/sns/v2/note\",\n data: publishData,\n headers: {\n \"x-s\": publishXs,\n \"x-t\": publishXt,\n \"x-s-common\": xscommon\n },\n defaultErrorMsg: \"文章发布异常,请稍后重试。\",\n });\n\n return success(publishResult.data?.id);\n};\n","import path from \"node:path\";\nimport type { CookieMap, Locator, Response } from \"@iflyrpa/share\";\nimport { downloadImage, getFilenameFromUrl, success } from \"@iflyrpa/share\";\nimport { XsEncrypt } from \"../../utils/xhsXsEncrypt\";\nimport type { PublishAction } from \"./index\";\nconst GenXSCommon = require(\"../../utils/XhsXsCommonEnc.js\") as (a1cookie: string, x_t: string|number, x_s:string) => string;\n\n// 小红书参数加密器\nconst xsEncrypt = new XsEncrypt();\n\nexport const rpaAction: PublishAction = async (task, params) => {\n\tconst commonCookies: CookieMap[number] = {\n\t\tpath: \"/\",\n\t\tsameSite: \"lax\",\n\t\tsecure: false,\n\t\tdomain: \"xiaohongshu.com\",\n\t\turl: \"https://creator.xiaohongshu.com\",\n\t\thttpOnly: true,\n\t};\n\n\tconst page = await task.createPage({\n\t\tshow: task.debug,\n\t\turl: params.url || \"https://creator.xiaohongshu.com/publish/publish\",\n\t\tcookies: params.cookies?.map((it) => ({ ...commonCookies, ...it })) || [],\n\t});\n\n\tconst tmpCachePath = task.getTmpPath();\n\n\tconst interceptUrls = [\n\t\t'/api/media/v1/upload/creator/permit',\n\t\t'/api/galaxy/v2/creator/activity_center/list',\n\t\t'/web_api/sns/v5/creator/topic/template/list',\n\t\t'/web_api/sns/v5/creator/file/encryption',\n\t\t'/web_api/sns/capa/postgw/topic/batch_customized',\n\t\t'/web_api/sns/v2/note'\n\t];\n\n\tawait page.route('**', async (route, request) => {\n\t\tconst url = request.url();\n\t\tif (interceptUrls.some(pattern => url.includes(pattern))) {\n\t\t\tconst urlObj = new URL(url);\n\t\t\tconst fetchCoverUrl = urlObj.pathname + urlObj.search;\n\t\t\tconst xt = Date.now().toString();\n\n\t\t\tconst a1Cookie = params.cookies.find((it) => it.name === \"a1\")?.value;\n\t\t\tif (!a1Cookie) {\n\t\t\t\tawait route.fulfill({\n\t\t\t\t\tstatus: 200,\n\t\t\t\t\tcontentType: 'application/json',\n\t\t\t\t\tbody: JSON.stringify({ code: 200, message: \"账号数据异常,请重新绑定账号后重试。\", data: \"\" })\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isNoteRequest = urlObj.pathname.includes(interceptUrls[5]);\n\n\t\t\tconst xs = await (isNoteRequest\n\t\t\t\t? (async () => {\n\t\t\t\t\tconst publishData = JSON.parse(request.postData() || \"\")\n\t\t\t\t\tconst publishDataStr = xsEncrypt.dumps(publishData);\n\t\t\t\t\treturn xsEncrypt.encryptXs(interceptUrls[5]+publishDataStr, a1Cookie, xt);\n\t\t\t\t })(): xsEncrypt.encryptXs(fetchCoverUrl, a1Cookie, xt))\n\n const xscommon = GenXSCommon(a1Cookie, xt, xs)\n\n\t\t\tconst newHeaders = {\n\t\t\t\t...request.headers(),\n\t\t\t\t'x-s': xs,\n 'x-s-common':xscommon\n\t\t\t};\n\n\t\t\tawait route.continue({ headers: newHeaders });\n\t\t}else {\n\t\t\tawait route.continue();\n\t\t}\n\t});\n\n\n\t// 通用的选择地点\n\tconst selectAddress = async (selector: Locator, address: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.locator(\"input\").fill(address);\n\t\tconst poperInstance = page.locator('.d-popover:not([style*=\"display: none\"]) .d-options .d-grid-item');\n\t\tawait poperInstance.first().waitFor();\n\t\tawait poperInstance.first().click();\n\t};\n\n\t// 通用的选择日期\n\tconst selectDate = async (selector: string | Locator, date: string) => {\n\t\tconst instance = typeof selector === \"string\" ? page.locator(selector) : selector;\n\t\tawait instance.click();\n\t\tawait instance.fill(date);\n\t\tawait instance.blur();\n\t};\n\n\t// 查找显示的 popover 弹窗\n\tconst getPoperInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(500);\n\t\tconst elements = page.locator(\".d-popover\");\n\t\tconst count = await elements.count();\n\t\tconst visibleElements: (typeof elements)[] = [];\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst element = elements.nth(i);\n\t\t\tconst style = await element.getAttribute(\"style\");\n\t\t\tif (style && !style.includes(\"display: none\")) {\n\t\t\t\tvisibleElements.push(element);\n\t\t\t}\n\t\t}\n\n\t\tif (visibleElements.length > 0) {\n\t\t\treturn visibleElements[visibleElements.length - 1];\n\t\t}\n\n\t\tthrow new Error(\"未找到 popover 弹窗\");\n\t};\n\n\t// 查找显示的 dialog 弹窗\n\tconst getDialogInstance = async (): Promise<Locator> => {\n\t\tawait page.waitForTimeout(1000);\n\t\tconst elements = page.locator(\".el-dialog\");\n\t\treturn elements.last();\n\t};\n\n\t// 自动化脚本\n\t// ----------------------------------------------------------------------------------\n\n\t// 等待登录成功\n\ttry {\n\t\tawait page.waitForSelector(\"#CreatorPlatform\", { state: \"visible\" });\n\t} catch (error) {\n\t\treturn { code: 400, message: \"登录失效\", data: page.url() };\n\t}\n\n\t// 跳转到发布页面\n\tawait page.locator(\"#content-area .menu-container .publish-video .btn\").click();\n\n\t// 点击上传图文\n\tawait page\n\t\t.locator('.creator-container .header .creator-tab:not([style*=\"-9999px\"]) .title')\n\t\t.filter({ hasText: /^上传图文$/ })\n\t\t.click();\n\n\t// 获取待上传图片的本地路径\n\tconst images = await Promise.all(\n\t\tparams.banners.map((url) => {\n\t\t\tconst fileName = getFilenameFromUrl(url);\n\t\t\treturn downloadImage(url, path.join(tmpCachePath, fileName));\n\t\t}),\n\t);\n\n\t// 选择文件\n\tconst fileChooserPromise = page.waitForEvent(\"filechooser\");\n\tawait page.getByRole(\"textbox\").click();\n\tconst fileChooser = await fileChooserPromise;\n\tawait fileChooser.setFiles(images);\n\n\t// 填写标题\n\tconst titleInstance = page.locator(\".input.titleInput input\");\n\tawait titleInstance.click();\n\tawait titleInstance.fill(params.title);\n\n\t// 填写正文\n\tconst descInstance = page.locator(\".editor-container #quillEditor .ql-editor\");\n\tawait descInstance.click();\n\tawait descInstance.pressSequentially(params.content.replace(/#.*?\\[.*?]\\#/g,\"\"));\n\n\t// 填写话题\n\tif(params.topic && params.topic.length > 0){\n\t\tfor (const it of params.topic) {\n\t\t\tawait descInstance.pressSequentially(`#${it[\"name\"]}`);\n\t\t\tawait page.locator('.ql-mention-loading').waitFor({ state: 'detached' });\n\t\t\tawait page.waitForTimeout(1000);\n\t\t\tawait page.locator('#quill-mention-item-0 .item-view-num').click();\n\t\t};\n\t}\n\n\t// 滚动到底部\n\tconst container = page.locator(\".creator-container .content .scroll-content\");\n\tawait container.focus();\n\tawait page.mouse.wheel(0, 500); // 向下滚动 500 像素\n\n\tif (params.address) {\n\t\t// 填写地点\n\t\tawait selectAddress(\n\t\t\tpage.locator(\".media-extension .address-input\").filter({ hasText: \"添加地点\" }),\n\t\t\tparams.address.name,\n\t\t);\n\t}\n\n\tif (params.selfDeclaration) {\n\t\t// 自主声明\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"内容类型声明\" }).locator(\".d-select-placeholder\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tconst selfDeclarationInstance = poperInstance.locator(\".d-options .d-option\");\n\t\tif (params.selfDeclaration.type === \"fictional-rendition\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"虚构演绎,仅供娱乐\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"ai-generated\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: \"笔记含AI合成内容\" }).click();\n\t\t} else if (params.selfDeclaration.type === \"source-statement\") {\n\t\t\tawait selfDeclarationInstance.filter({ hasText: /内容来源声明/ }).click();\n\t\t\t// 内容来源声明二级菜单\n\t\t\tconst selfDeclarationSecondaryMenuInstance = (await getPoperInstance()).locator(\".d-options .d-option\");\n\t\t\t// 等待元素出现\n\t\t\tawait selfDeclarationSecondaryMenuInstance.first().waitFor();\n\t\t\tif (params.selfDeclaration.childType === \"self-labeling\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"已在正文中自主标注\" }).click();\n\t\t\t} else if (params.selfDeclaration.childType === \"self-shooting\") {\n\t\t\t\tconst { shootingDate, shootingLocation } = params.selfDeclaration;\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"自主拍摄\" }).click();\n\t\t\t\t// 自主拍摄弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\t\t\t\tconst hasCustomContent = shootingDate || shootingLocation;\n\n\t\t\t\t// 选择拍摄地点\n\t\t\t\tif (shootingLocation) {\n\t\t\t\t\tawait selectAddress(selfShootingPopup.locator(\".address-input\"), shootingLocation.name);\n\t\t\t\t}\n\t\t\t\t// 选择拍摄日期\n\t\t\t\tif (shootingDate) {\n\t\t\t\t\tawait selectDate(selfShootingPopup.locator(\".date-picker input\"), shootingDate);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: hasCustomContent ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t} else if (params.selfDeclaration.childType === \"transshipment\") {\n\t\t\t\tawait selfDeclarationSecondaryMenuInstance.filter({ hasText: \"来源转载\" }).click();\n\t\t\t\t// 来源媒体弹窗\n\t\t\t\tconst selfShootingPopup = await getDialogInstance();\n\n\t\t\t\tconst sourceMedia = params.selfDeclaration.sourceMedia;\n\t\t\t\tif (sourceMedia) {\n\t\t\t\t\tawait selfShootingPopup.locator(\".el-input input\").fill(sourceMedia);\n\t\t\t\t}\n\n\t\t\t\tawait selfShootingPopup\n\t\t\t\t\t.locator(\"footer button\")\n\t\t\t\t\t.filter({ hasText: sourceMedia ? \"确认\" : \"取消\" })\n\t\t\t\t\t.click();\n\t\t\t}\n\t\t}\n\t}\n\n\t// 可见范围 - 仅自己可见\n\tif (params.visibleRange === \"private\") {\n\t\tawait page.locator(\".media-settings .flexbox\").filter({ hasText: \"可见范围\" }).locator(\".d-select-wrapper\").click();\n\t\tconst poperInstance = await getPoperInstance();\n\t\tawait poperInstance.locator(\".d-options .custom-option\").filter({ hasText: \"仅自己可见\" }).click();\n\t}\n \n task._timerRecord['PrePublish']= Date.now();\n \n\tconst releaseTimeInstance = page\n\t\t.locator(\"label\")\n\t\t.filter({ hasText: params.isImmediatelyPublish ? \"立即发布\" : \"定时发布\" });\n\tawait releaseTimeInstance.click();\n\n\tif (params.scheduledPublish) {\n\t\t// 自定义发布时间\n\t\tawait selectDate(\".date-picker input\", params.scheduledPublish);\n\t}\n\n\tconst response = await new Promise<string>((resolve) => {\n\t\t// 定义响应处理函数\n\t\tconst handleResponse = async (response: Response) => {\n\t\t\tif (response.url().includes(\"/web_api/sns/v2/note\")) {\n\t\t\t\tconst jsonResponse = await response.json();\n\t\t\t\tpage.off(\"response\", handleResponse);\n\t\t\t\tresolve(jsonResponse?.data?.id);\n\t\t\t}\n\t\t};\n\n\t\t// 开始监听响应事件\n\t\tpage.on(\"response\", handleResponse);\n\n\t\tpage.locator(\".submit .publishBtn\").click();\n\t});\n\n\t// 关闭页面\n\tawait page.close();\n\n\treturn success(response);\n};\n","import type { CommonAction } from \"@iflyrpa/share\";\n\nimport type { ActiomCommonParams, Xiaohongshu } from \"../../types\";\nimport { executeAction } from \"../../utils\";\nimport { mockAction } from \"./mock\";\nimport { rpaAction } from \"./rpa\";\n\ninterface FictionalRendition {\n\ttype: \"fictional-rendition\"; // 虚拟演绎,仅供娱乐\n}\n\ninterface AIGenerated {\n\ttype: \"ai-generated\"; // 笔记含AI合成内容\n}\n\ninterface SourceStatement {\n\ttype: \"source-statement\"; // 内容来源声明\n\tchildType: \"self-labeling\" | \"self-shooting\" | \"transshipment\"; // 已自主标注 / 自助拍摄 / 转载\n\tshootingLocation?: Xiaohongshu.Location; // 拍摄地点\n\tshootingDate?: string; // 拍摄日期\n\tsourceMedia?: string; // 来源媒体\n}\n\ntype SelfDeclaration = FictionalRendition | AIGenerated | SourceStatement;\n\nexport interface XiaohongshuPublishParams extends ActiomCommonParams {\n\tbanners: string[]; // 图片\n\ttitle: string; // 标题\n\tcontent: string; // 正文\n\taddress?: Xiaohongshu.Location; // 地点\n\tselfDeclaration?: SelfDeclaration; // 自主声明\n\ttopic?: Xiaohongshu.Topic[]; //话题\n\tvisibleRange: \"public\" | \"private\"; // 可见范围\n\tisImmediatelyPublish?: boolean; // 是否立即发布\n\tscheduledPublish?: string; // 定时发布时间\n}\n\nexport type PublishAction = CommonAction<XiaohongshuPublishParams, string>;\n\nexport const xiaohongshuPublish: PublishAction = async (task, params) => {\n\tif (params.actionType === \"rpa\") {\n\t\treturn rpaAction(task, params);\n\t}\n\n\tif (params.actionType === \"mockApi\") {\n\t\treturn mockAction(task, params);\n\t}\n\n\treturn executeAction(mockAction, rpaAction)(task, params);\n};\n","import type { AutomateTask, CommonAction, ResponseData } from \"@iflyrpa/share\";\nimport { type BaijiahaoPublishParams, baijiahaoPublish } from \"./actions/baijiahaoPublish\";\nimport { type GetBaijiahaoActivityParams, getBaijiahaoActivity } from \"./actions/getBaijiahaoActivity\";\nimport { type GetToutiaoConfigParams, getToutiaoConfig } from \"./actions/getToutiaoConfig\";\nimport { type GetBaijiahaoConfigParams, getBaijiahaoConfig } from \"./actions/getBaijiaohaoConfig\";\nimport { type SearchToutiaoTopicListParams, searchToutiaoTopicList } from \"./actions/searchToutiaoTopicList\";\nimport { type SearchToutiaoLocationParams, searchToutiaoLocation } from \"./actions/searchToutiaoLocation\";\nimport { type SearchToutiaoUserIDParams, searchToutiaoUserInfo } from \"./actions/searchToutiaoUserID\";\nimport { type searchXiaohongshuLocationParams, searchXiaohongshuLocation } from \"./actions/searchXiaohongshuLocation\";\nimport { type SearchXiaohongshuTopicListParams, searchXiaohongshuTopicList } from \"./actions/searchXiaohongshuTopicList\";\nimport { type ToutiaoPublishParams, toutiaoPublish } from \"./actions/toutiaoPublish\";\nimport { TTFansExport } from \"./actions/common/FansTool\";\nimport { BjhFansExport } from \"./actions/common/FansTool\";\nimport { XhsFansExport } from \"./actions/common/FansTool\";\nimport { type GetWxFansSearchParams, WxFansExport } from \"./actions/common/FansTool\";\n\nimport { TTSessionCheck } from \"./actions/common/sessionCheck\";\nimport { BjhSessionCheck } from \"./actions/common/sessionCheck\";\nimport { XhsSessionCheck } from \"./actions/common/sessionCheck\";\nimport { type wxSessionParams, WxSessionCheck } from \"./actions/common/sessionCheck\";\n\nimport { type SearchAccountInfoParams, SearchAccountInfo} from \"./actions/searchAccountInfo\";\nimport { type FetchArticlesParams, FetchArticles } from \"./actions/searchPublishInfo\"\nimport { type GetWeixinConfigParams, getWeixinConfig } from \"./actions/getWeixinConfig\";\nimport { type WeitoutiaoPublishParams, weitoutiaoPublish } from \"./actions/weitoutiaoPublish\";\nimport { type WeixinPublishParams, weixinPublish } from \"./actions/weixinPublish\";\nimport { type WeixinmpPublishParams, weixinmpPublish } from \"./actions/weixinmpPublish\";\nimport { type XiaohongshuPublishParams, xiaohongshuPublish } from \"./actions/xiaohongshuPublish\";\n\nimport type { ActiomCommonParams } from \"./types\";\nimport { stringifyError } from \"./utils\";\nimport { Http } from \"./utils/http\";\n\nexport const BetaFlag = \"HuiwenCanary\"; // 用于标记是否为测试版本\n\nexport class Action {\n\tconstructor(private task: AutomateTask) {}\n\n\t// 绑定 task, 并处理异常\n\tprivate async bindTask<T extends ActiomCommonParams, R>(func: CommonAction<T, R>, params: T) {\n\t\tlet responseData: ResponseData<R>;\n \n // 检查是否为测试版本\n this.task.isBeta = this.task.isFeatOn( BetaFlag );\n \n // 记录时间消耗\n this.task._timerRecord = { ActionStart: Date.now() };\n\n \n\t\tif (this.task.setArticleId) {\n\t\t\t// 给所有的日志添加 articleId 标签\n\t\t\tthis.task.setArticleId(params.articleId ?? \"\");\n\t\t}\n \n if (this.task.setSaveType) {\n // 给所有的日志添加 saveType 标签\n this.task.setSaveType(params.saveType ?? \"\");\n }\n \n if (this.task.isInitializedGB !== undefined) {\n this.task.setGbInitType(this.task.isInitializedGB)\n }\n \n\t\tif (typeof params === \"object\") {\n\t\t\t// 默认设置 cookies\n\t\t\tparams.cookies = params?.cookies ?? [];\n\t\t}\n\n\t\ttry {\n\t\t\tresponseData = await func(this.task, params);\n\t\t} catch (error) {\n\t\t\tresponseData = Http.handleApiError(error);\n\t\t} finally {\n this.task._timerRecord['ActionEnd']= Date.now();\n }\n \n if(this.task.isBeta && this.task.setTimeConsuming){\n // 收集各时间节点\n this.task.setTimeConsuming(this.task._timerRecord);\n }\n\n\t\tif (responseData.code === 200) {\n\t\t\t// 表示是由于脚本输入信息错误导致的失败,不是脚本问题\n\t\t\tthis.task.logger.info(`${func.name} action params error`, responseData);\n\t\t} else if (responseData.code !== 0) {\n\t\t\tthis.task.logger.error(\n\t\t\t\tresponseData.message || `${func.name} 执行失败`,\n\t\t\t\tstringifyError(responseData.data),\n\t\t\t\tresponseData.extra,\n\t\t\t);\n\t\t\tthis.task.logger.info(`${func.name} action failed`);\n\t\t} else {\n\t\t\tthis.task.logger.info(`${func.name} action success`);\n\t\t}\n\n\t\treturn responseData;\n\t}\n\t// 获取指定平台的文章数据\n\tFetchArticles(params: FetchArticlesParams){\n\t\treturn this.bindTask(FetchArticles, params)\n\t}\n\t\n\t// 获取指定平台的分析数据\n\tSearchAccountInfo(params: SearchAccountInfoParams){\n\t\treturn this.bindTask(SearchAccountInfo, params)\n\t}\n\n\t// 头条Session有效性检测\n\tTTSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(TTSessionCheck, params);\n\t}\n\n\t// 微信Session有效性检测\n\tWxSessionCheck(params: wxSessionParams){\n\t\treturn this.bindTask(WxSessionCheck, params);\n\t}\n\n\t// 小红书Session有效性检测\n\tXhsSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(XhsSessionCheck, params);\n\t}\n\n\t// 百家号Session有效性检测\n\tBjhSessionCheck(params: ActiomCommonParams){\n\t\treturn this.bindTask(BjhSessionCheck, params);\n\t}\n\t\n\t// 搜索头条话题列表\n\tsearchToutiaoTopicList(params: SearchToutiaoTopicListParams) {\n\t\treturn this.bindTask(searchToutiaoTopicList, params);\n\t}\n\n\t// 搜索头条粉丝\n\tTTFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(TTFansExport, params);\n\t}\n\n\t// 搜索小红书粉丝\n\tXhsFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(XhsFansExport, params);\n\t}\n\n\t// 搜索微信粉丝\n\tWxFansExport(params: GetWxFansSearchParams) {\n\t\treturn this.bindTask(WxFansExport, params);\n\t}\n\t\n\t// 搜索百家号粉丝\n\tBjhFansExport(params: ActiomCommonParams) {\n\t\treturn this.bindTask(BjhFansExport, params);\n\t}\n\n\t// 搜索头条用户ID\n\tsearchToutiaoUserID(params: SearchToutiaoUserIDParams) {\n\t\treturn this.bindTask(searchToutiaoUserInfo, params);\n\t}\n\n\t// 搜索头条Location\n\tsearchToutiaoLocation(params: SearchToutiaoLocationParams) {\n\t\treturn this.bindTask(searchToutiaoLocation, params);\n\t}\n\n\t// 获取头条配置\n\tgetToutiaoConfig(params: GetToutiaoConfigParams) {\n\t\treturn this.bindTask(getToutiaoConfig, params);\n\t}\n\n\t// 获取微信配额\n\tgetWeixinConfig(params: GetWeixinConfigParams) {\n\t\treturn this.bindTask(getWeixinConfig, params);\n\t}\n\n\t// 获取百家号配置\n\tgetBaijiahaoConfig(params: GetBaijiahaoConfigParams) {\n\t\treturn this.bindTask(getBaijiahaoConfig, params);\n\t}\n\n\t// 百家号发布\n\tbaijiahaoPublish(params: BaijiahaoPublishParams) {\n\t\treturn this.bindTask(baijiahaoPublish, params);\n\t}\n\n\t// 查询百家号活动投稿\n\tgetBaijiahaoActivity(params: GetBaijiahaoActivityParams) {\n\t\treturn this.bindTask(getBaijiahaoActivity, params);\n\t}\n\n\t// 小红书发布\n\txiaohongshuPublish(params: XiaohongshuPublishParams) {\n\t\treturn this.bindTask(xiaohongshuPublish, params);\n\t}\n\n\t// 搜索小红书话题\n\tsearchXiaohongshuTopicList(params: SearchXiaohongshuTopicListParams) {\n\t\treturn this.bindTask(searchXiaohongshuTopicList, params);\n\t}\n\t// 搜索小红书地址\n\tsearchXiaohongshuLocation(params: searchXiaohongshuLocationParams) {\n\t\treturn this.bindTask(searchXiaohongshuLocation, params);\n\t}\n\n\t// 小绿书发布\n\tweixinmpPublish(params: WeixinmpPublishParams) {\n\t\treturn this.bindTask(weixinmpPublish, params);\n\t}\n\n\t// 微头条发布\n\tweitoutiaoPublish(params: WeitoutiaoPublishParams) {\n\t\treturn this.bindTask(weitoutiaoPublish, params);\n\t}\n\n\t// 头条发布\n\ttoutiaoPublish(params: ToutiaoPublishParams) {\n\t\treturn this.bindTask(toutiaoPublish, params);\n\t}\n\n\t// 微信发布\n\tweixinPublish(params: WeixinPublishParams) {\n\t\treturn this.bindTask(weixinPublish, params);\n\t}\n}\n\ntype ActionInstance = InstanceType<typeof Action>;\n\n// 提取方法的参数类型\ntype MethodParams<T> = {\n\t// biome-ignore lint/suspicious/noExplicitAny: 有使用 any\n\t[K in keyof T]: T[K] extends (...args: any[]) => unknown ? Parameters<T[K]>[0] : never;\n};\n\n// 应用于 Action 类的实例\nexport type ActionMethodParams = MethodParams<ActionInstance>;\n\nexport { version } from \"../package.json\";\n"],"names":["encrypt_lookup","esm_typeof","t","encrypt_b64Encode","e","r","n","o","i","a","u","s","c","l","f","p","h","d","v","g","m","y","w","b","_","E","x","k","T","S","A","L","I","R","O","C","N","P","B","M","j","F","D","q","U","G","H","V","W","a0_0x10f4ac","X","z","Y","K","J","$","Q","Z","tt","encrypt_encodeChunk","encrypt_encodeUtf8","encodeURIComponent","parseInt","sign_common","JSON","encrypt_tripletToBase64","a0_0x3693","encrypt_mcr","GenXSCommon","a1cookie","x_t","x_s","b1","module","a0_0x45db08","a0_0x4b0d","_0x2bd218","_0x316d6","_0x165410","a0_0x1654","_0x4b0d73","_0x5794db","_0x1859e3","_0x1b2596","_0x16c0e0","_0x1227f1","_0x46fb59","_0x383dd4","_0x4fc071","Random","Math","Ts","Date","Sm3DoneTs","xhrParaDoneTs","xhrReqDoneTs","_0x46e031","SM3Hasher","_0x468533","Array","_0x11e792","_0x22d1ef","_0x182388","_0x2ded18","_0x5e491d","_0x12d911","_0x5795ab","_0x22d98b","_0x5659da","_0x357908","String","_0x5c0d1c","_0x2e8583","_0x28f42f","_0x4b2a85","_0xffe4ea","_0x34ff8d","_0xecf9f6","_0x3ddb20","_0x28ac8a","_0x117621","_0x335539","_0x450e58","_0x5b1ad8","_0x46ad66","_0xa844a0","_0x15bc36","_0x4a32f3","_0x36cc0b","_0xd7dcfe","_0x1e530c","_0x3c50af","_0x3da582","_0x14b06e","_0x4ec82e","_0x489962","_0x5dd43e","_0x744660","console","_0x197f71","_0x5e22dd","_0xfc800b","_0x1300f1","_0xed8891","_0x3414cb","_0x2f42fb","_0x326645","_0x2c63af","_0x558c0d","_0x4a902b","_0x493bba","_0x23a9bd","_0x7114f5","_0x49cf1f","_0x698c70","_0xe5328","_0x2b58f2","_0x17c086","_0x3621a2","_0x5959b9","_0x3b42ff","_0x50d411","_0x910e21","_0x459622","EnvData2CharCode","_0x58cd97","_0x23e1e0","_0x3ca6b2","_0x56cb93","_0x2d49d4","_0x3f2013","_0x4b8ded","_0x5bb315","_0x42b4c4","_0x1cdc95","_0x58aa5d","_0x26ee7a","_0xe2d586","_0x571095","_0x4dabdb","_0x4139e6","_0x339170","_0x56e1cd","_0x24b6d5","_0x196cf7","_0x2eb1f3","_0x2171ba","_0x925e58","_0x540dbd","_0x2fbb10","_0x41ebdd","_0x42a240","_0x49ec53","_0x3d9ba0","_0xeaa831","_0x477e24","_0x3bd924","_0xa7bf19","_0x23c273","_0x4d13ab","Base2Data","_0x348aa6","_0x2bc7c7","_0x874207","_0x224d00","_0x31697c","_0x235e4f","_0x29dde1","_0x4a74f1","_0xef36c2","_0x4120e4","_0x39cb62","_0x5cbaf6","_0x29a672","_0x96c5ae","_0x46c34b","_0x5d4cb4","_0x506f4f","Data2A_B","_0x19ca6d","_0x5d8d72","_0x225e7d","_0x4f0a28","_0x251d62","_0x2b8eea","_0x3fca04","_0xb85a46","_0x4e702d","_0x4382e1","_0x225aa0","_0x5607b9","Number","_0x3fb7b7","_0x425784","GenAB","_0x315138","_0x1c32b3","_0x206982","_0x56536b","Http","error","config","axios","findError","response","Promise","Object","errorResponse","serverError","getRandomInRange","min","max","getFileState","filePath","filename","path","fileType","mime","stats","fs","fileSize","lastModifiedDate","calculateCropCoordinates","width","height","aspectRatio","targetRatio","cropWidth","cropHeight","x1","y1","x2","y2","extractImgTag","html","srcList","parser","Parser","name","attributes","TimeFormatter","timestamp","formatStr","date","map","key","replaceImgSrc","callback","lastedHtml","isImageTag","node","traverseDom","DomUtils","child","handler","DomHandler","dom","domSerializer","stringifyError","Error","executeAction","actions","task","params","result","index","action","copyHtmlToClipboard","page","options","htmlContent","format","blob","Blob","navigator","ClipboardItem","div","document","range","selection","window","PopupListener","popupSelector","popKey","buttonSelector","checkInterval","stopAfterClick","popup","button","intervalId","setInterval","clearInterval","err","parseUrlQueryString","url","queryStringObject","queryString","queryWithoutHash","queryStringArray","item","equalIndex","value","decodeURIComponent","defaultParams","defaults","errnoMap","mockAction","baijiahaoSingleCover","baijiahaoMultCover","baijiahaoCoverType","tmpCachePath","http","it","msgType","errmsg","appIdInfo","appId","uploadImages","_images","images","fileName","getFilenameFromUrl","image","downloadImage","formData","FormData","res","originContentImages","targetContentImages","content","idx","horizontalCoverUrl","horizontalCoverRes","cover_images","_cover_images_map","isAi","activityList","cover_layout","activity_list","publishData","isDraft","saveUrl","success","rpaAction","commonCookies","titleInstance","coverFormItem","isSingleCover","coverSelector","coverCount","fileChooserPromise","fileChooser","abstractFormItem","settingFormItem","_settingFormItem","enent2NewsBtn","activity","activityFormItem","findActivity","articleId","message","resolve","handleResponse","jsonResponse","operatorContainer","scrollHourInfo","hourInner","hourElementHeight","hourMapsElem","hourMap","fistHourElem","fistHourElemH","lastHourElem","lastHourElemH","targetTimeH","scrollMinuteInfo","fistMinuteElem","fistMinuteElemH","lastMinuteElem","lastMinuteElemH","targetTimeM","baijiahaoPublish","getBaijiahaoActivity","_task","cookies","getToutiaoConfig","getSuggestWords","getCityDistrict","getUserRights","suggestWords","cityDistrict","userRights","getBaijiahaoConfig","data","_item","searchToutiaoTopicList","searchToutiaoLocation","searchToutiaoUserInfo","searchXiaohongshuLocation","XsEncrypt","crypto","text","textEncoded","Buffer","cipher","Uint8Array","ciphertext","encodedData","decodedData","payload","platform","hexPayload","obj","jsonString","a1","ts","rest","replacer","space","word","xsEncrypt","searchXiaohongshuTopicList","a1Cookie","xt","topicData","topicDataStr","fatchTopic","xs","require","generatorFormData","encodedKey","encodedValue","get3101DetailError","errorList","saveType","toutiaoSingleCover","toutiaoMultCover","toutiaoCoverType","toutiaoOriginal","toutiaoExclusive","toutiaoClaim","coverUrl","coverRes","location","topics","topicContent","topic","sourceData","extraData","COVER_TYPE","getAddTypeValue","msToken","publishOption","postHeaders","postData","a_bogus","publishResult","interceptUrls","route","request","URL","pattern","headers","coverTypeValue","coverContainer","coverUrls","coverUploadEle","coverUploadCount","ele","drawerContainer","confirmBtn","locationContainer","poperInstance","adContainer","isAdOptionVisible","exclusiveContainer","claim","toutiaoAd","toutiaoPublish","TTFansExport","XhsFansExport","WxFansExport","htmlStr","match","BjhFansExport","TTSessionCheck","WxSessionCheck","fingerprint","XhsSessionCheck","BjhSessionCheck","code","getBaijiahaoData","token","yesterday","fansData","readData","incomeData","yesterdayData","bjhData","getToutiaoData","totalData","contentDataYesterday","isReday","undefined","ttData","getWeixinData","userInfo","userInfoHtml","originalMatch","totalUsersMatch","increaseMatch","sign","readMatch","shareMatch","subscribeMatch","wxData","getXiaohongshuData","sevenDataUrl","overAllData","sevenData","xhsData","SearchAccountInfo","handleToutiaoData","pageNum","pageSize","showOriginalData","onlySuccess","visitedUid","articleInfo","articleCell","api_base_info_json","handleWeixinData","cursor","lastPage","ParsePublishPage","body","parsedData","decodeEntities","str","decode","encodeMap","decodeMap","RegExp","finalData","decoded","parsedInfo","fetchArticles","begin","size","rawArticlesInfo","articlesInfo","totalFetched","nextPage","remaining","currentPageSize","_rawArticlesInfo","parsed","filteredList","cursorIndex","nextRawArticlesInfo","nextArticlesInfo","newFiltered","lastMsgId","handleBaijiahaoData","filtered","totalPage","currentPage","usedPages","Set","validItems","final","handleXiaohongshuData","serveUrl","hasNextpage","FetchArticles","getWeixinConfig","userInfoRes","imageList","extra","syncData","descInstance","addressFormItem","declarationFormItem","weitoutiaoPublish","scanRetryMaxCount","QuotaType","GET_QRCODE_DEFAULT_ERROR","ignoreErrno","userTypeMap","URLSearchParams","checkCopyrightStat","resData","client_time_diff","responseData","cloudImages","localImages","ext","fileState","oriWhitelist","_oriWhitelist","white_list","white_list_user","_user","userInfo_res","userInfo_resJson","writerid","reply_id","getWriterList","getRewardText","_type","rewardbind","rewardBuffer","rewardFilePath","task_id","sleep","checkScanResult","_writer","_writer_item","rewardList","matchdID","reward","_reply_item","wxInteractionInfo","_wxInteraction","type","_opt","commentType","replyType","draftData","appMsgId","masssendpage","massSendRes","operation_seq","quota_detail_list","quotaDetail","copyrightStatData","lastData","checkCopyrightStatRes","getTicketResult","getUuidResult","uuid","qrcodeResult","qrcodeBuffer","qrcodeFilePath","randomString","waitQrcodeResultMaxTime","urlParams","urlRewardParams","wxRewardPage","reward_page","isAddRewarder","qrcodeSrc","errorMessage","isAddWord","cover","dialog","pic_msg","ori_dialog","ori_dialog_bd","ori_dialog_ft","_target","search_res","search_res_name","whrite_list","white_td_isadd","btn_isChecked","checkbox","reward_setting","reward_setting_bd","reward_setting_ft","userName","reward_setting_replay","switchAuto","maxAttempts","delayMs","nowCheckTime","attempt","isDisabled","setTimeout","isOneReplay","isCurrentReplay","wxInteraction_setting","wxInteraction_bd","wxInteraction_ft","comment_area","reply_area","commont_rply_opt","poperInput","source","query","dateD","nowD","dropMenu","timeDropMenu","times","originalCheckDialog","popMassend","startTime","reject","imgUrl","weixinPublish","_params","saveDraft","shareImageInfos","cropResult","colorResponseData","themeColor","cropFormData","cropRatios","cropCoordinates","cropCoordinate","cropResponse","sourceText","container","weixinmpPublish","fetchCoverUrl","coverIdInfo","uploadInfos","fileId","availableBuckets","uploadFile","localUrl","fileBuffer","MAX_RETRIES","ossBucketIndex","currentInfo","ossFileId","ossToken","ossDomain","coverInfos","invalidUpload","publishXt","publishXs","createTopic","userDeclarationBind","photoInfo","business_binds","publishDataStr","xscommon","urlObj","isNoteRequest","newHeaders","selectAddress","selector","address","instance","selectDate","getPoperInstance","elements","count","visibleElements","element","style","getDialogInstance","selfDeclarationInstance","selfDeclarationSecondaryMenuInstance","shootingDate","shootingLocation","selfShootingPopup","hasCustomContent","sourceMedia","releaseTimeInstance","xiaohongshuPublish","BetaFlag","Action","func"],"mappings":";;QACA,IAAIA,iBAAiB;YACnB;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QAED,IAAIC,aAAa,CAAC;QAClBA,WAAW,CAAC,GAAG,SAAUC,CAAC;YACxB,OAAO,OAAOA;QAChB;QAEA,SAASC,kBAAkBD,CAAC;YAC1B,IAAIE,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI;gBACJ,OAAO,SAAU7C,CAAC,EAAEE,CAAC;oBACnB,OAAOF,IAAIE;gBACb;gBACA,OAAO,SAAUF,CAAC,EAAEE,CAAC;oBACnB,OAAOF,MAAME;gBACf;gBACA,OAAO,SAAUF,CAAC,EAAEE,CAAC;oBACnB,OAAOF,IAAIE;gBACb;gBACA,OAAO,SAAUF,CAAC,EAAEE,CAAC;oBACnB,OAAOF,IAAIE;gBACb;gBACA,OAAO,SAAUF,CAAC,EAAEE,CA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AACb,GAAG,MAAM,CAACW,CAAC,CAACE,EAAEZ,GAAG,CAACC,GAAG,CAACV,CAAC,CAACsB,IAAI,EAAE,EAAE,IAAI,SAASH,CAAC,CAACE,EAAE,CAACV,GAAG,MAAM,CAACX,CAAC,CAACmB,CAAC,CAACE,EAAE,MAAM,CAACT,GAAG,CAACU,GAAG,GAAG,EAAE,MACjJF,CAAC,CAACC,EAAER,GAAG,IAAI,CAACM,CAAC,CAACE,EAAEP,GAAGC,GAAG,CAACgD,yBAAyB3D;YACpD,OAAOgB,CAAC,CAACC,EAAE,CAACL,GAAG,CAACC,GAAG,CAAC;QACtB;QAEA,SAAS+C,UAAUhE,CAAC,EAAEE,CAAC;YACrB,IAAIC,IAAI;gBACN;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,OAAOA,CAAC,CAACH,KAAK,IAAI;QACpB;QACA,SAAS+C,YAAY/C,CAAC,EAAEE,CAAC;YACvB,OAAO8D,UAAU9D,IAAI,MAAMF;QAC7B;QAEA,IAAIiE,cAAc,SAAUjE,CAAC;YAC3B,IAAIE,IAAI,IACJC,IAAI,IACJC,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,IAAI,IACJC,IAAI,KACJC,IAAI,IACJC,IAAI,IACJC,IAAI,IACJC,IAAI,IACJC,IAAI,IACJC,IAAI,IACJC,IAAI,IACJC,IAAI,IACJC,IAAI,KACJC,IAAI,MACJC,IAAI,KACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,KACJE,IAAI,MACJD,IAAI,MACJE,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,KACJC,IAAI,KACJC,IAAI,CAAC;YACT,SAASE,EAAE5C,CAAC,EAAEE,CAAC;gBACb,OAAO6C,YAAY7C,GAAGF,IAAIyC;YAC5B;YACAC,CAAC,CAACE,EAAE,KAAK,KAAK,GAAG,SAAU5C,CAAC,EAAEE,CAAC;gBAC7B,OAAOF,MAAME;YACf,GAEEwC,CAAC,CAACE,EAAE1C,GAAG,KAAK,GAAG,SAAUF,CAAC,EAAEE,CAAC;gBAC3B,OAAOF,IAAIE;YACb,GAEAwC,CAAC,CAACE,EAAE,CAACzC,GAAG,CAACC,GAAG,GAAG,SAAUJ,CAAC,EAAEE,CAAC;gBAC3B,OAAOF,IAAIE;YACb,GAEAwC,CAAC,CAACE,EAAEzC,GAAG,CAACE,GAAG,GAAG,SAAUL,CAAC,EAAEE,CAAC;gBAC1B,OAAOF,IAAIE;YACb,GAEAwC,CAAC,CAACE,EAAE,CAACtC,GAAG,CAACC,GAAG,GAAG,SAAUP,CAAC,EAAEE,CAAC;gBAC3B,OAAOF,IAAIE;YACb,GAEAwC,CAAC,CAACE,EAAE,MAAM,CAACpC,GAAG,GAAG,SAAUR,CAAC,EAAEE,CAAC;gBAC7B,OAAOF,IAAIE;YACb,GAEAwC,CAAC,CAACE,EAAE,KAAKnC,GAAG,GAAG,SAAUT,CAAC,EAAEE,CAAC;gBAC3B,OAAOF,IAAIE;YACb,GAEAwC,CAAC,CAACE,EAAE,CAAClC,GAAG,CAACC,GAAG,GAAG,SAAUX,CAAC,EAAEE,CAAC;gBAC3B,OAAOF,MAAME;YACf,GAEAwC,CAAC,CAACE,EAAEhC,GAAGC,GAAG,GAAG,SAAUb,CAAC,EAAEE,CAAC;gBACzB,OAAOF,MAAME;YACf;YAEF,IAAK,IAAIyC,GAAGE,GAAGC,IAAIJ,GAAGO,IAAI,YAAYD,IAAI,KAAKE,IAAI,EAAE,EAAEF,KAAKE,CAAC,CAACF,EAAE,GAAGF,CAAC,CAACF,EAAE9B,GAAG,KAAK,CAAC6B,GAAG,GACjF,IAAKE,IAAI,GACPF,IAAIK,GAAGH,KACPF,IAAIG,CAAC,CAACF,EAAEzC,GAAGY,GAAG,CAAC4B,GAAG,KAAKG,CAAC,CAACF,EAAE,IAAI5B,GAAG,CAAC2B,GAAG,KAAKM,IAAIH,CAAC,CAACF,EAAE9B,GAAGG,GAAG,CAAC0B,GAAG;YACjE,OAAO,SAAU3C,CAAC;gBAChB,SAASE,EAAEF,CAAC,EAAEE,CAAC;oBACb,OAAO0C,EAAE1C,IAAI,MAAMF;gBACrB;gBACA,IAAI8C,CAAC,CAAC5C,EAAEgB,GAAG,MAAM,CAAE,IACjBnB,WAAW,CAAC,AAAD,EAAGC,IAAIE,EAAEiB,GAAG,OAAO;oBAC9B,IAAK,IAAIhB,IAAI,GAAGC,IAAI,IAAI0C,CAAC,CAAC5C,EAAEkB,GAAGC,GAAG,CAAClB,GAAGH,CAAC,CAACE,EAAEoB,GAAG,MAAM,GAAG,EAAEnB,EACtDC,IAAI0C,CAAC,CAAC5C,EAAEqB,GAAGC,GAAG,CAAC0B,CAAC,CAACJ,CAAC,CAAC5C,EAAEuB,GAAGC,GAAG,CAACtB,GAAG,OAAOJ,CAAC,CAACE,EAAEyB,GAAGC,KAAK1B,EAAE,MAAM2B,GAAG,CAAC1B,GAAG,EAAEC,MAAM;oBAC3E,OAAO0C,CAAC,CAAC5C,EAAE6B,GAAG,MAAM,CAAC3B,GAAG,MAAM6C;gBAChC;gBACA,IAAK9C,IAAI,GACPC,IAAI,IAAI0C,CAAC,CAAC5C,EAAE4B,GAAG,MAAM,CAAC3B,GAAGH,CAAC,CAACE,EAAE8B,GAAGC,GAAG,GAAG,EAAE9B,EACxCC,IAAI0C,CAAC,CAAC5C,EAAEgC,GAAGC,GAAG,CAACe,CAAC,CAACJ,CAAC,CAAC5C,EAAE,MAAMkC,GAAG,CAACU,CAAC,CAAC5C,EAAEmC,GAAGX,GAAG,CAACtB,GAAG,MAAMJ,CAAC,CAACG,EAAE,EAAE,EAAE2C,CAAC,CAAC5C,EAAEoC,GAAG,MAAM,CAAClC,GAAG;gBAC9E,OAAO0C,CAAC,CAAC5C,EAAEqC,GAAGH,GAAG,CAACU,CAAC,CAAC5C,EAAEsC,GAAG,MAAM,CAACpC,GAAG,KAAK6C;YAC1C;QACF;QAEA,SAASiB,YAAYC,QAAQ,EAAEC,GAAG,EAAEC,GAAG;YACnC,IAAIC,KAAK;YACT,IAAIxD,IAAI;gBACN,IAAM;gBACN,IAAM;gBACN,IAAM;gBACN,IAAM;gBACN,IAAM;gBACN,IAAM;gBACN,IAAM;gBACN,IAAMqD;gBACN,IAAMC;gBACN,IAAMC;gBACN,IAAMC;gBACN,IAAML,YAAYG,MAAMC,MAAMC;gBAC9B,KAAO;YACT;YAEA,OAAOT,YAAY/C;QACvB;QAEAyD,OAAO,OAAO,GAAGL;;;;QC9zBjB,MAAMM,cAAYC;QAAU,SAASA,UAAUC,SAAS,EAACC,QAAQ;YAAE,MAAMC,YAAUC;YAAY,OAAOJ,YAAU,SAASK,SAAS,EAACC,SAAS;gBAAED,aAAoB;gBAAK,IAAIE,YAAUJ,SAAS,CAACE,UAAU;gBAAC,OAAOE;YAAU,GAAEP,UAAUC,WAAUC;QAAU;QAAE,UAASM,SAAS,EAACC,SAAS;YAAE,MAAMC,YAAUV,WAAUW,YAAUH;YAAY,MAAM,KAAM,IAAG;gBAAC,MAAMI,YAAUzB,SAASuB,UAAU,SAAO,MAAI,CAACvB,SAASuB,UAAU,SAAO,MAAK,EAACvB,SAASuB,UAAU,SAAO,GAAE,IAAGvB,SAASuB,UAAU,SAAO,MAAI,CAACvB,SAASuB,UAAU,SAAO,MAAKvB,CAAAA,SAASuB,UAAU,SAAO,GAAE,IAAGvB,SAASuB,UAAU,SAAO,MAAI,CAACvB,SAASuB,UAAU,SAAO,MAAKvB,CAAAA,SAASuB,UAAU,SAAO,GAAE,IAAGvB,SAASuB,UAAU,SAAO;gBAAI,IAAGE,cAAYH,WAAU;gBAAWE,SAAS,CAAC,OAAO,CAACA,SAAS,CAAC,QAAQ;YAAI,EAAC,OAAME,WAAU;gBAACF,SAAS,CAAC,OAAO,CAACA,SAAS,CAAC,QAAQ;YAAI;QAAE,GAAEP,WAAU;QAAU,MAAMU,SAAOC,IAAI,CAAC,SAAS,IAAGC,KAAGC,IAAI,CAAC,MAAM,IAAGC,YAAUF,KAAG,MAAKG,gBAAcH,KAAG,OAAMI,eAAaJ,KAAG;QAAQ,SAASZ;YAAY,MAAMiB,YAAU;gBAAC;gBAAQ;gBAAO;gBAAM;gBAAY;gBAAa;gBAAM;gBAAwC;gBAAQ;gBAAsD;gBAAU;gBAAQ;gBAAa;gBAAe;gBAAU;gBAAc;gBAAQ;gBAAW;gBAAO;gBAAS;gBAAQ;gBAAS;gBAAS;gBAAM;gBAAQ;gBAAgB;gBAAgB;gBAAO;gBAAmE;gBAAU;gBAA2I;gBAAc;gBAAS;gBAAY;gBAAe;gBAAgB;gBAAQ;gBAAS;gBAAU;gBAAO;gBAAQ;gBAAO;gBAAU;gBAAM;gBAAS;gBAAS;aAAe;YAACjB,YAAU;gBAAW,OAAOiB;YAAU;YAAE,OAAOjB;QAAY;QAAC,MAAMkB;YAAU,aAAa;gBAAC,MAAMC,YAAUvB;gBAAU,IAAI,CAACuB,UAAU,MAAM,GAAC,IAAIC,MAAM,MAAK,IAAI,CAACD,UAAU,MAAM,GAAC,EAAE,EAAC,IAAI,CAACA,UAAU,MAAM,GAAC,KAAI,IAAI,CAACA,UAAU,MAAM;YAAG;YAAC,CAACxB,YAAY,MAAM,GAAE;gBAAC,MAAM0B,YAAU1B;gBAAY,IAAI,CAAC0B,UAAU,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAACA,UAAU,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAAC,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAACA,UAAU,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAAC,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAACA,UAAU,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAACA,UAAU,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAACA,UAAU,MAAM,CAAC,IAAI,GAAC,YAAW,IAAI,CAACA,UAAU,MAAM,GAAC,EAAE,EAAC,IAAI,CAACA,UAAU,MAAM,GAAC;YAAI;YAAC,CAAC1B,YAAY,MAAM,CAAC2B,SAAS,EAAC;gBAAC,MAAMC,YAAU5B;gBAAY,IAAI6B,YAAUD,UAAU,SAAO,OAAOD,YAAU,SAASG,SAAS;oBAAE,MAAMC,YAAUH;oBAAU,IAAII,YAAU7C,mBAAmB2C,UAAU,CAACC,UAAU,MAAM,CAAC,mBAAkB,SAASE,SAAS,EAACC,SAAS;wBAAE,MAAMC,YAAUJ;wBAAU,OAAOK,MAAM,CAACD,UAAU,MAAM,CAAC,OAAKD;oBAAW,IAAGG,YAAU,IAAIZ,MAAMO,SAAS,CAAC,SAAS;oBAAE,OAAOP,KAAK,CAACM,UAAU,MAAM,CAACA,UAAU,MAAM,CAAC,OAAO,CAACC,WAAU,SAASM,SAAS,EAACC,SAAS;wBAAE,MAAMC,YAAUT;wBAAUM,SAAS,CAACE,UAAU,GAACD,SAAS,CAACE,UAAU,MAAM,CAAC;oBAAK,IAAGH;gBAAU,EAAEV,aAAWA;gBAAU,IAAI,CAAC,OAAO,IAAEE,SAAS,CAAC,SAAS;gBAAC,IAAIY,YAAU,OAAK,IAAI,CAACb,UAAU,MAAM,CAACA,UAAU,MAAM;gBAAC,IAAGC,SAAS,CAACD,UAAU,MAAM,GAACa,WAAU,IAAI,CAAC,QAAQ,GAAC,IAAI,CAACb,UAAU,MAAM,CAACA,UAAU,MAAM,CAACC;qBAAgB,IAAI,IAAI,CAAC,QAAQ,GAAC,IAAI,CAACD,UAAU,MAAM,CAACA,UAAU,MAAM,CAACC,SAAS,CAACD,UAAU,MAAM,CAAC,KAAIa,aAAY,IAAI,CAACb,UAAU,MAAM,CAAC,SAAS,IAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAACA,UAAU,MAAM,GAAEa,YAAUZ,SAAS,CAACD,UAAU,MAAM,GAAC,IAAI,CAAC,QAAQ,GAACC,SAAS,CAACD,UAAU,MAAM,CAACa,WAAUzB,IAAI,CAACY,UAAU,MAAM,CAACa,YAAU,MAAKZ,SAAS,CAAC,SAAS,KAAG,IAAI,CAACD,UAAU,MAAM,GAAC,EAAE,EAACa,aAAW;YAAM;YAAC,CAACzC,YAAY,MAAM,CAAC0C,SAAS,EAACC,SAAS,EAAC;gBAAC,MAAMC,YAAU5C;gBAAY0C,aAAY,KAAI,CAACE,UAAU,MAAM,IAAG,IAAI,CAACA,UAAU,MAAM,CAACF,UAAS,GAAG,IAAI,CAAC,QAAQ;gBAAG,IAAI,IAAIG,YAAU,KAAIA,YAAU,IAAI,CAACD,UAAU,MAAM,CAACA,UAAU,MAAM,EAACC,aAAW,KAAK,IAAI,CAACD,UAAU,MAAM,CAAC,IAAI,CAACA,UAAU,MAAM,CAAC,QAAQ,CAACC,WAAUA,YAAU;gBAAO,IAAIC,WAAUC,WAAUC,WAAUC,YAAU;gBAAK,IAAG,SAAON,WAAU;oBAACM,YAAU;oBAAG,IAAIJ,YAAU,KAAIA,YAAU,KAAIA,YAAYI,aAAYH,CAAAA,YAAU,IAAI,CAACF,UAAU,MAAM,CAACC,UAAU,CAACD,UAAU,MAAM,CAAC,OAAMG,YAAU,KAAIC,YAAU,KAAIF,SAAS,CAACF,UAAU,MAAM,IAAEG,YAAUD,YAAUE,SAAS,CAACJ,UAAU,MAAM,CAACG,YAAUD,SAAS,CAACF,UAAU,MAAM,IAAEE,SAAQ;gBAAG,OAAM,IAAIG,YAAU,IAAIxB,MAAM,OAAMoB,YAAU,KAAIA,YAAU,KAAIA,YAAY;oBAAC,IAAIK,YAAU,IAAI,CAACN,UAAU,MAAM,CAACC,UAAU;oBAACI,SAAS,CAAC,MAAIJ,YAAU,IAAI,GAAE,QAAKK,SAAQ,MAAK,KAAIA,eAAa,KAAID,SAAS,CAAC,MAAIJ,YAAU,IAAI,GAAE,QAAKK,SAAQ,MAAK,KAAIA,eAAa,KAAID,SAAS,CAAC,MAAIJ,YAAU,IAAI,GAAE,QAAKK,SAAQ,MAAK,KAAIA,eAAa,KAAID,SAAS,CAAC,MAAIJ,UAAU,GAAE,QAAKK,SAAQ,MAAK;gBAAI;gBAAC,OAAO,IAAI,CAACN,UAAU,MAAM,IAAGK;YAAU;YAAC,CAAC,QAAQ,GAAE;gBAAC,MAAME,YAAUnD;gBAAY,IAAIoD,YAAU,MAAI,IAAI,CAACD,UAAU,MAAM,EAACE,YAAU,IAAI,CAAC,QAAQ,CAACF,UAAU,MAAM,CAAC,QAAM;gBAAK,IAAI,OAAKE,YAAU,OAAMA,CAAAA,aAAW,IAAG,GAAGA,YAAU,MAAKA,YAAY,IAAI,CAACF,UAAU,MAAM,CAACA,UAAU,MAAM,CAAC;gBAAK,IAAI,IAAIG,YAAU,KAAIA,YAAU,KAAIA,YAAY;oBAAC,IAAIC,YAAUvC,IAAI,CAACmC,UAAU,MAAM,CAACC,YAAU;oBAAa,IAAI,CAAC,QAAQ,CAACD,UAAU,MAAM,CAACI,cAAY,MAAK,OAAID,SAAQ,IAAG;gBAAM;gBAAC,IAAIA,YAAU,KAAIA,YAAU,KAAIA,YAAY,IAAI,CAACH,UAAU,MAAM,CAACA,UAAU,MAAM,CAACC,cAAY,MAAK,OAAIE,SAAQ,IAAG;YAAM;YAAC,CAACtD,YAAY,MAAM,CAACwD,SAAS,EAAC;gBAAC,MAAMC,YAAUzD;gBAAY,SAAS0D,UAAUC,SAAS,EAACC,SAAS;oBAAE,OAAOD,AAAAA,CAAAA,aAAYC,CAAAA,aAAW,IAAG,IAAGD,cAAY,OAAKC,SAAQ,MAAK;gBAAI;gBAAC,SAASC,UAAUC,SAAS;oBAAE,MAAMC,YAAU9D;oBAAU,OAAO,OAAK6D,aAAWA,YAAU,OAAK,aAAW,QAAMA,aAAWA,YAAU,OAAK,aAAW,KAAKE,OAAO,CAACD,UAAU,MAAM,CAACA,UAAU;gBAAO;gBAAC,SAASE,UAAUC,SAAS,EAACC,SAAS,EAACC,SAAS,EAACC,SAAS;oBAAE,MAAMC,YAAUrE;oBAAU,OAAO,OAAKiE,aAAWA,YAAU,OAAMC,AAAAA,CAAAA,YAAUC,YAAUC,SAAQ,MAAK,MAAI,QAAMH,aAAWA,YAAU,OAAMC,AAAAA,CAAAA,YAAUC,YAAUD,YAAUE,YAAUD,YAAUC,SAAQ,MAAK,MAAKL,CAAAA,OAAO,CAACM,UAAU,MAAM,CAAC,kDAAiD,GAAE;gBAAG;gBAAC,SAASC,UAAUC,SAAS,EAACC,SAAS,EAACC,SAAS,EAACC,SAAS;oBAAE,MAAMC,YAAU3E;oBAAU,OAAO,OAAKuE,aAAWA,YAAU,OAAMC,AAAAA,CAAAA,YAAUC,YAAUC,SAAQ,MAAK,MAAI,QAAMH,aAAWA,YAAU,OAAMC,AAAAA,CAAAA,YAAUC,YAAU,CAACD,YAAUE,SAAQ,MAAK,MAAKX,CAAAA,OAAO,CAACY,UAAU,MAAM,CAAC,kDAAiD,GAAE;gBAAG;gBAAC,IAAGpB,SAAS,CAACC,UAAU,MAAM,GAAC,MAAK;oBAACO,OAAO,CAACP,UAAU,MAAM,CAAC;oBAA+C;gBAAO;gBAAM,IAAI,IAAIoB,YAAU,SAASC,SAAS;oBAAE,IAAI,IAAIC,YAAU,IAAItD,MAAM,OAAMuD,YAAU,KAAIA,YAAU,MAAKA,YAAYD,SAAS,CAACC,UAAU,GAACF,SAAS,CAAC,MAAIE,UAAU,IAAE,MAAKD,SAAS,CAACC,UAAU,IAAEF,SAAS,CAAC,MAAIE,YAAU,IAAI,IAAE,MAAKD,SAAS,CAACC,UAAU,IAAEF,SAAS,CAAC,MAAIE,YAAU,IAAI,IAAE,KAAID,SAAS,CAACC,UAAU,IAAEF,SAAS,CAAC,MAAIE,YAAU,IAAI,EAACD,SAAS,CAACC,UAAU,MAAI;oBAAI,IAAI,IAAIC,WAAS,MAAKA,WAAS,MAAKA,WAAW;wBAAC,IAAIC,YAAUH,SAAS,CAACE,WAAS,KAAK,GAACF,SAAS,CAACE,WAAS,IAAI,GAACvB,UAAUqB,SAAS,CAACE,WAAS,IAAI,EAAC;wBAAKC,YAAUA,YAAUxB,UAAUwB,WAAU,OAAKxB,UAAUwB,WAAU,OAAMH,SAAS,CAACE,SAAS,GAAEC,AAAAA,CAAAA,YAAUxB,UAAUqB,SAAS,CAACE,WAAS,IAAI,EAAC,OAAKF,SAAS,CAACE,WAAS,IAAG,MAAK;oBAAI;oBAAC,IAAIA,WAAS,KAAIA,WAAS,MAAKA,WAAWF,SAAS,CAACE,WAAS,KAAK,GAAEF,AAAAA,CAAAA,SAAS,CAACE,SAAS,GAACF,SAAS,CAACE,WAAS,IAAG,MAAK;oBAAI,OAAOF;gBAAU,EAAEvB,YAAW2B,YAAU,IAAI,CAAC1B,UAAU,MAAM,CAACA,UAAU,MAAM,CAAC,MAAK2B,YAAU,KAAIA,YAAU,MAAKA,YAAY;oBAAC,IAAIC,YAAU3B,UAAUyB,SAAS,CAAC,IAAI,EAAC,OAAKA,SAAS,CAAC,IAAI,GAACzB,UAAUG,UAAUuB,YAAWA,YAAWE,YAAW,AAACD,CAAAA,CAAAA,YAAU3B,UAAU2B,YAAW,cAAWA,SAAQ,MAAK,KAAI,IAAG,IAAG3B,UAAUyB,SAAS,CAAC,IAAI,EAAC,IAAG,MAAK,KAAII,YAAUtB,UAAUmB,WAAUD,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI;oBAAEI,YAAW,cAAYA,CAAAA,YAAUA,YAAUJ,SAAS,CAAC,IAAI,GAACG,YAAUT,SAAS,CAACO,YAAU,KAAI,OAAM;oBAAI,IAAII,YAAUjB,UAAUa,WAAUD,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI;oBAAEK,YAAW,cAAYA,CAAAA,YAAUA,YAAUL,SAAS,CAAC,IAAI,GAACE,YAAUR,SAAS,CAACO,UAAS,OAAM,KAAID,SAAS,CAAC,IAAI,GAACA,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI,GAACzB,UAAUyB,SAAS,CAAC,IAAI,EAAC,MAAKA,SAAS,CAAC,IAAI,GAACA,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI,GAACI,WAAUJ,SAAS,CAAC,IAAI,GAACA,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI,GAACzB,UAAUyB,SAAS,CAAC,IAAI,EAAC,OAAMA,SAAS,CAAC,IAAI,GAACA,SAAS,CAAC,IAAI,EAACA,SAAS,CAAC,IAAI,GAAEK,AAAAA,CAAAA,YAAU9B,UAAU8B,WAAU,OAAK9B,UAAU8B,WAAU,KAAI,MAAK;gBAAI;gBAAC,IAAI,IAAIC,YAAU,KAAIA,YAAU,KAAIA,YAAY,IAAI,CAAC,MAAM,CAACA,UAAU,GAAE,KAAI,CAAChC,UAAU,MAAM,CAACgC,UAAU,GAACN,SAAS,CAACM,UAAS,MAAK;YAAK;QAAC;QAAC,SAASC,iBAAiBC,SAAS,EAACC,SAAS,EAACC,SAAS;YAAE,MAAMC,YAAU9F;YAAY,IAAI+F,YAAUhF,AAAO,OAAPA,UAAa,MAAI,OAAMA,AAAAA,CAAAA,AAAO,OAAPA,UAAa,GAAE,IAAG,MAAIA,AAAO,OAAPA,UAAa,KAAIiF,YAAUjF,AAAO,OAAPA,UAAa,MAAI,OAAjBA,KAAyCkF,YAAU;gBAAQ,SAAPlF,SAAAA,MAAwB,AAAiD,OAAjD;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAAC+E,UAAU,MAAM,CAAC,KAAI,IAAI,CAAC,IAAI;gBAAa,SAAP/E,SAAAA,KAAwB,AAAiD,OAAjD;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAAC+E,UAAU,MAAM,CAAC,KAAI,IAAI,CAAC,IAAI;gBAAa,SAAP/E,UAAe,MAAI,OAAK,AAAyC,OAAzC;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAAC,QAAQ,CAAC,KAAI,IAAI,CAAC,IAAI;gBAAa,SAAPA,UAAe,MAAI,OAAK,AAAiD,OAAjD;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAAC+E,UAAU,MAAM,CAAC,KAAI,IAAI,CAAC,IAAI;gBAAgB,OAAVC,YAAe,AAAiD,OAAjD;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAACD,UAAU,MAAM,CAAC,KAAI,IAAI,CAAC,IAAI;gBAAgB,OAAVC,YAAe,AAAiD,OAAjD;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAACD,UAAU,MAAM,CAAC,KAAI,IAAI,CAAC,IAAI;gBAAgB,OAAVE,YAAe,AAAiD,OAAjD;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAACF,UAAU,MAAM,CAAC,KAAI,IAAI,CAAC,IAAI;gBAAgB,OAAVE,YAAe,AAAiD,OAAjD;oBAAC;oBAAI;oBAAI;oBAAI;iBAAI,CAACF,UAAU,MAAM,CAAC,KAAI,IAAI,CAAC,IAAI;aAAM,EAACI,YAAUJ,UAAU,KAAK,CAAC,QAAQ,CAAC,GAAG,CAACA,UAAU,MAAM,CAACK,CAAAA,YAAWA,SAAS,CAACL,UAAU,MAAM,CAAC,OAAMM,YAAW,AAAChE,CAAAA,CAAAA,AAA0B,OAA1BA,OAAOhB,gBAAc,IAAQ,IAAG,GAAE,CAAE,CAAC0E,UAAU,MAAM,CAAC,GAAG,CAACA,UAAU,MAAM,CAACO,CAAAA,YAAWA,SAAS,CAACP,UAAU,MAAM,CAAC;YAAM,MAAMQ,YAAU,IAAI/E,aAAYgF,YAAUD,SAAS,CAACR,UAAU,MAAM,CAACQ,SAAS,CAAC,MAAM,CAACX,YAAUG,UAAU,SAAQU,YAAUF,SAAS,CAACR,UAAU,MAAM,CAACQ,SAAS,CAACR,UAAU,MAAM,CAACF,YAAU,UAASa,YAAUH,SAAS,CAACR,UAAU,MAAM,CAACD;YAAW,IAAIa,YAAU;gBAAC;gBAAMrF,CAAAA,eAAa,aAAY,IAAG,QAAM,OAAK,OAAK,OAAK,OAAK;gBAAI;gBAAID,gBAAcH,KAAG,MAAI;gBAAmB,OAAdG;gBAAmBA,iBAAe,MAAI;gBAAKA,iBAAe,OAAK;gBAAKA,iBAAe,OAAK;gBAAKA,gBAAc,QAAM,QAAM,QAAM,QAAM;gBAAKA,gBAAc,QAAM,QAAM,QAAM,QAAM,QAAM;gBAAKA,gBAAc,QAAM,QAAM,QAAM,QAAM,QAAtCA;gBAA4DA,gBAAc,QAAM,QAAM,QAAM,QAAM,QAAtCA;gBAAuE;gBAAgC;gBAAsC;gBAA+B;gBAA+B;gBAA+B;gBAAc;gBAAS;gBAAc;gBAAe;gBAAemF,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAAC;gBAAIA,SAAS,CAAC,IAAI;gBAACC,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAAC;gBAAIA,SAAS,CAAC,IAAI;gBAACC,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAAC;gBAAIA,SAAS,CAAC,IAAI;gBAAW,OAAVtF;gBAAeA,aAAW,MAAI;gBAAKA,aAAW,OAAK;gBAAKA,aAAW,OAAK;gBAAKA,YAAU,QAAM,QAAM,QAAM,QAAM;gBAAKA,YAAU,QAAM,QAAM,QAAM,QAAM,QAAM;gBAAK;gBAAI;gBAAY;gBAAiB;gBAAkB;gBAAkB;gBAAW;gBAAgB;gBAAiB;gBAAiB+E,SAAS,CAAC,SAAS;gBAACA,SAAS,CAAC,SAAS;gBAAC;gBAAIE,SAAS,CAACN,UAAU,MAAM;gBAACM,SAAS,CAACN,UAAU,MAAM;gBAAC;aAAI,EAACa,YAAU;gBAACD,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,IAAI;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;gBAACA,SAAS,CAAC,KAAK;aAAC;YAAC,SAASE,UAAUC,SAAS,EAACC,SAAS;gBAAE,MAAMC,YAAUjB;gBAAU,OAAOgB,SAAS,CAACC,UAAU,MAAM,CAAC,CAACC,WAAUC,YAAYA,YAAUD,UAAU,CAACD,UAAU,MAAM,CAACG,CAAAA;oBAAY,MAAMC,YAAUJ;oBAAUG,aAAW,OAAKA,YAAUL,SAAS,CAACM,UAAU,MAAM,IAAEN,SAAS,CAACM,UAAU,MAAM,CAACD,WAAU;gBAAK,IAAGL;YAAU;YAAC,IAAIO,YAAUnB,SAAS,CAACH,UAAU,MAAM,CAACc,UAAUF,WAAU;gBAAC;gBAAK;gBAAK;gBAAK;gBAAK;aAAK,IAAGW,YAAUD,SAAS,CAACtB,UAAU,MAAM,CAAC,CAACwB,WAAUC,YAAYD,YAAUC,YAAWC,YAAUb,SAAS,CAAC,SAAS,CAACT,WAAUE,WAAUiB,YAAWI,YAAU,EAAE,EAACC,YAAU;YAAI,IAAI,IAAIC,YAAU,KAAIA,YAAU,MAAIH,SAAS,CAAC1B,UAAU,MAAM,EAAG2B,SAAS,CAAC3B,UAAU,MAAM,CAAC/E,AAAO,QAAPA,SAAAA,MAAuByG,AAAuB,OAAvBA,SAAS,CAACG,YAAY,GAAOF,SAAS,CAAC,OAAO,CAAC1G,AAAO,QAAPA,SAAAA,KAAuByG,AAAuB,OAAvBA,SAAS,CAACG,YAAY,GAAOF,SAAS,CAAC3B,UAAU,MAAM,CAAC/E,AAAO,QAAPA,SAAAA,KAAuByG,AAAuB,OAAvBA,SAAS,CAACG,YAAY,GAAOF,SAAS,CAAC3B,UAAU,MAAM,CAAC0B,AAAyB,OAAzBA,SAAS,CAACG,YAAU,IAAI,GAAMH,AAAyB,OAAzBA,SAAS,CAACG,YAAU,IAAI,GAAMH,AAAyB,OAAzBA,SAAS,CAACG,YAAU,IAAI,GAAOD,aAAW;YAAK,IAAIE,YAAU3B,SAAS,CAACH,UAAU,MAAM,CAAC2B,WAAUD,SAAS,CAAC1B,UAAU,MAAM,CAAC4B,WAAUF,SAAS,CAAC1B,UAAU,MAAM;YAAG,OAAO8B,SAAS,CAAC9B,UAAU,MAAM,CAAC+B,CAAAA,YAAWzF,MAAM,CAAC,eAAe,CAACyF,WAAW,CAAC/B,UAAU,MAAM,CAAC;QAAI;QAAC,SAASgC,UAAUC,SAAS;YAAE,MAAMC,YAAUhI;YAAY,IAAIiI,YAAU;gBAAQ,SAAPlH,SAAAA,MAAwB,AAAgB,OAAhB;oBAAC;oBAAI;iBAAK,CAAC,IAAI;gBAAa,SAAPA,SAAAA,KAAwB,AAAgB,OAAhB;oBAAC;oBAAI;iBAAK,CAAC,IAAI;gBAAa,OAAPA,UAAa,MAAI,OAAK,AAAgB,OAAhB;oBAAC;oBAAI;iBAAK,CAAC,IAAI;gBAAa,OAAPA,UAAa,MAAI,OAAK,AAAgB,OAAhB;oBAAC;oBAAI;iBAAK,CAAC,IAAI;aAAM,CAACiH,UAAU,MAAM,CAACE,CAAAA;gBAAY,MAAMC,YAAUH;gBAAU,OAAO5F,MAAM,CAAC+F,UAAU,MAAM,CAACD;YAAW,EAAE,CAACF,UAAU,MAAM,CAAC,KAAII,YAAU;gBAAC;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;gBAAI;aAAI;YAAC,MAAMC,YAAU,GAAG,CAACL,UAAU,MAAM,CAAC;YAAK,IAAIM,YAAU;YAAI,IAAI,IAAIC,YAAU,KAAIA,YAAUH,SAAS,CAACJ,UAAU,MAAM,EAACO,YAAY;gBAAC,IAAIC,YAAUJ,SAAS,CAACG,UAAU;gBAACD,YAAWA,AAAAA,CAAAA,YAAUE,YAAUF,YAAUD,SAAQ,IAAG,OAAM,CAACD,SAAS,CAACG,UAAU,EAACH,SAAS,CAACE,UAAU,CAAC,GAAC;oBAACF,SAAS,CAACE,UAAU;oBAACF,SAAS,CAACG,UAAU;iBAAC;YAAC;YAAC,IAAIE,YAAU,KAAIC,YAAU;YAAG,IAAI,IAAIC,YAAU,KAAIA,YAAUZ,SAAS,CAACC,UAAU,MAAM,EAACW,YAAY;gBAAC,IAAIC,YAAUb,SAAS,CAACC,UAAU,MAAM,CAACW,YAAWE,YAAUF,YAAU,KAAIG,YAAUV,SAAS,CAACS,UAAU;gBAAC,CAACT,SAAS,CAACS,UAAU,EAACT,SAAS,CAAEK,AAAAA,CAAAA,YAAUK,SAAQ,IAAG,MAAM,CAAC,GAAC;oBAACV,SAAS,CAAEK,AAAAA,CAAAA,YAAUK,SAAQ,IAAG,MAAM;oBAACV,SAAS,CAACS,UAAU;iBAAC;gBAAC,IAAIE,YAAUX,SAAS,CAAEA,AAAAA,CAAAA,SAAS,CAACS,UAAU,GAACC,SAAQ,IAAG,MAAM;gBAACL,YAAWA,AAAAA,CAAAA,YAAUK,SAAQ,IAAG,OAAMJ,aAAWtG,MAAM,CAAC,eAAe,CAACwG,YAAUG;YAAW;YAAC,OAAOd,YAAUS;QAAU;QAAC,SAASM,SAASC,SAAS;YAAE,MAAMC,YAAUlJ;YAAY,IAAImJ,YAAUD,UAAU,OAAME,YAAU,IAAGC,YAAU;gBAAC;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAS;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAQ;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAM;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAM;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAI;gBAAI;gBAAK;gBAAK;gBAAK;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAK;gBAAI;gBAAK;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;gBAAI;gBAAI;gBAAK;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"}
|