@asunajs/caiyun
Version:
移动云盘签到
1,561 lines (1,534 loc) • 109 kB
JavaScript
import{createRequire}from'module';if(!globalThis.require)globalThis.require=createRequire(import.meta.url);
import {
__commonJS,
__toESM,
init_esm_shims
} from "./chunk-ZWSCLKPB.js";
// ../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js
var require_dayjs_min = __commonJS({
"../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js"(exports, module) {
init_esm_shims();
(function(t, e) {
typeof exports == "object" && typeof module < "u" ? module.exports = e() : typeof define == "function" && define.amd ? define(e) : (t = typeof globalThis < "u" ? globalThis : t || self).dayjs = e();
})(exports, function() {
"use strict";
var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) {
var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100;
return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]";
} }, m = function(t2, e2, n2) {
var r2 = String(t2);
return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2;
}, v = { s: m, z: function(t2) {
var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60;
return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0");
}, m: function t2(e2, n2) {
if (e2.date() < n2.date()) return -t2(n2, e2);
var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), c);
return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0);
}, a: function(t2) {
return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
}, p: function(t2) {
return { M: c, y: h, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: f }[t2] || String(t2 || "").toLowerCase().replace(/s$/, "");
}, u: function(t2) {
return t2 === void 0;
} }, g = "en", D = {};
D[g] = M;
var p = "$isDayjsObject", S = function(t2) {
return t2 instanceof _ || !(!t2 || !t2[p]);
}, w = function t2(e2, n2, r2) {
var i2;
if (!e2) return g;
if (typeof e2 == "string") {
var s2 = e2.toLowerCase();
D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2);
var u2 = e2.split("-");
if (!i2 && u2.length > 1) return t2(u2[0]);
} else {
var a2 = e2.name;
D[a2] = e2, i2 = a2;
}
return !r2 && i2 && (g = i2), i2 || !r2 && g;
}, O = function(t2, e2) {
if (S(t2)) return t2.clone();
var n2 = typeof e2 == "object" ? e2 : {};
return n2.date = t2, n2.args = arguments, new _(n2);
}, b = v;
b.l = w, b.i = S, b.w = function(t2, e2) {
return O(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
};
var _ = function() {
function M2(t2) {
this.$L = w(t2.locale, null, !0), this.parse(t2), this.$x = this.$x || t2.x || {}, this[p] = !0;
}
var m2 = M2.prototype;
return m2.parse = function(t2) {
this.$d = function(t3) {
var e2 = t3.date, n2 = t3.utc;
if (e2 === null) return /* @__PURE__ */ new Date(NaN);
if (b.u(e2)) return /* @__PURE__ */ new Date();
if (e2 instanceof Date) return new Date(e2);
if (typeof e2 == "string" && !/Z$/i.test(e2)) {
var r2 = e2.match($);
if (r2) {
var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3);
return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2);
}
}
return new Date(e2);
}(t2), this.init();
}, m2.init = function() {
var t2 = this.$d;
this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
}, m2.$utils = function() {
return b;
}, m2.isValid = function() {
return this.$d.toString() !== l;
}, m2.isSame = function(t2, e2) {
var n2 = O(t2);
return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
}, m2.isAfter = function(t2, e2) {
return O(t2) < this.startOf(e2);
}, m2.isBefore = function(t2, e2) {
return this.endOf(e2) < O(t2);
}, m2.$g = function(t2, e2, n2) {
return b.u(t2) ? this[e2] : this.set(n2, t2);
}, m2.unix = function() {
return Math.floor(this.valueOf() / 1e3);
}, m2.valueOf = function() {
return this.$d.getTime();
}, m2.startOf = function(t2, e2) {
var n2 = this, r2 = !!b.u(e2) || e2, f2 = b.p(t2), l2 = function(t3, e3) {
var i2 = b.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2);
return r2 ? i2 : i2.endOf(a);
}, $2 = function(t3, e3) {
return b.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2);
}, y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : "");
switch (f2) {
case h:
return r2 ? l2(1, 0) : l2(31, 11);
case c:
return r2 ? l2(1, M3) : l2(0, M3 + 1);
case o:
var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2;
return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3);
case a:
case d:
return $2(v2 + "Hours", 0);
case u:
return $2(v2 + "Minutes", 1);
case s:
return $2(v2 + "Seconds", 2);
case i:
return $2(v2 + "Milliseconds", 3);
default:
return this.clone();
}
}, m2.endOf = function(t2) {
return this.startOf(t2, !1);
}, m2.$set = function(t2, e2) {
var n2, o2 = b.p(t2), f2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = f2 + "Date", n2[d] = f2 + "Date", n2[c] = f2 + "Month", n2[h] = f2 + "FullYear", n2[u] = f2 + "Hours", n2[s] = f2 + "Minutes", n2[i] = f2 + "Seconds", n2[r] = f2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2;
if (o2 === c || o2 === h) {
var y2 = this.clone().set(d, 1);
y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d;
} else l2 && this.$d[l2]($2);
return this.init(), this;
}, m2.set = function(t2, e2) {
return this.clone().$set(t2, e2);
}, m2.get = function(t2) {
return this[b.p(t2)]();
}, m2.add = function(r2, f2) {
var d2, l2 = this;
r2 = Number(r2);
var $2 = b.p(f2), y2 = function(t2) {
var e2 = O(l2);
return b.w(e2.date(e2.date() + Math.round(t2 * r2)), l2);
};
if ($2 === c) return this.set(c, this.$M + r2);
if ($2 === h) return this.set(h, this.$y + r2);
if ($2 === a) return y2(1);
if ($2 === o) return y2(7);
var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3;
return b.w(m3, this);
}, m2.subtract = function(t2, e2) {
return this.add(-1 * t2, e2);
}, m2.format = function(t2) {
var e2 = this, n2 = this.$locale();
if (!this.isValid()) return n2.invalidDate || l;
var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = b.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, c2 = n2.months, f2 = n2.meridiem, h2 = function(t3, n3, i3, s3) {
return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3);
}, d2 = function(t3) {
return b.s(s2 % 12 || 12, t3, "0");
}, $2 = f2 || function(t3, e3, n3) {
var r3 = t3 < 12 ? "AM" : "PM";
return n3 ? r3.toLowerCase() : r3;
};
return r2.replace(y, function(t3, r3) {
return r3 || function(t4) {
switch (t4) {
case "YY":
return String(e2.$y).slice(-2);
case "YYYY":
return b.s(e2.$y, 4, "0");
case "M":
return a2 + 1;
case "MM":
return b.s(a2 + 1, 2, "0");
case "MMM":
return h2(n2.monthsShort, a2, c2, 3);
case "MMMM":
return h2(c2, a2);
case "D":
return e2.$D;
case "DD":
return b.s(e2.$D, 2, "0");
case "d":
return String(e2.$W);
case "dd":
return h2(n2.weekdaysMin, e2.$W, o2, 2);
case "ddd":
return h2(n2.weekdaysShort, e2.$W, o2, 3);
case "dddd":
return o2[e2.$W];
case "H":
return String(s2);
case "HH":
return b.s(s2, 2, "0");
case "h":
return d2(1);
case "hh":
return d2(2);
case "a":
return $2(s2, u2, !0);
case "A":
return $2(s2, u2, !1);
case "m":
return String(u2);
case "mm":
return b.s(u2, 2, "0");
case "s":
return String(e2.$s);
case "ss":
return b.s(e2.$s, 2, "0");
case "SSS":
return b.s(e2.$ms, 3, "0");
case "Z":
return i2;
}
return null;
}(t3) || i2.replace(":", "");
});
}, m2.utcOffset = function() {
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
}, m2.diff = function(r2, d2, l2) {
var $2, y2 = this, M3 = b.p(d2), m3 = O(r2), v2 = (m3.utcOffset() - this.utcOffset()) * e, g2 = this - m3, D2 = function() {
return b.m(y2, m3);
};
switch (M3) {
case h:
$2 = D2() / 12;
break;
case c:
$2 = D2();
break;
case f:
$2 = D2() / 3;
break;
case o:
$2 = (g2 - v2) / 6048e5;
break;
case a:
$2 = (g2 - v2) / 864e5;
break;
case u:
$2 = g2 / n;
break;
case s:
$2 = g2 / e;
break;
case i:
$2 = g2 / t;
break;
default:
$2 = g2;
}
return l2 ? $2 : b.a($2);
}, m2.daysInMonth = function() {
return this.endOf(c).$D;
}, m2.$locale = function() {
return D[this.$L];
}, m2.locale = function(t2, e2) {
if (!t2) return this.$L;
var n2 = this.clone(), r2 = w(t2, e2, !0);
return r2 && (n2.$L = r2), n2;
}, m2.clone = function() {
return b.w(this.$d, this);
}, m2.toDate = function() {
return new Date(this.valueOf());
}, m2.toJSON = function() {
return this.isValid() ? this.toISOString() : null;
}, m2.toISOString = function() {
return this.$d.toISOString();
}, m2.toString = function() {
return this.$d.toUTCString();
}, M2;
}(), k = _.prototype;
return O.prototype = k, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h], ["$D", d]].forEach(function(t2) {
k[t2[1]] = function(e2) {
return this.$g(e2, t2[0], t2[1]);
};
}), O.extend = function(t2, e2) {
return t2.$i || (t2(e2, _, O), t2.$i = !0), O;
}, O.locale = w, O.isDayjs = S, O.unix = function(t2) {
return O(1e3 * t2);
}, O.en = D[g], O.Ls = D, O.p = {}, O;
});
}
});
// ../../core/caiyun/index.ts
init_esm_shims();
// ../../core/caiyun/service/ai-cloud.ts
init_esm_shims();
// ../../packages/utils-pure/index.ts
init_esm_shims();
function randomHex(length, pad = "-") {
return Array.isArray(length) ? length.map((l) => randomHex(l, pad)).join(pad) : Array.from({
length
}).map(() => Math.floor(Math.random() * 16).toString(16)).join("");
}
function randomNumber(low, high = low) {
return Math.floor(Math.random() * (high - low) + low);
}
function randomString(length) {
return Array.from({
length
}).reduce((str) => {
let num = Math.floor(Math.random() * 62);
return str + String.fromCharCode(num + (num < 10 ? 48 : num < 36 ? 55 : 61));
}, "");
}
function getXmlElement(xml, tag) {
if (!xml.match) return "";
let m = xml.match(`<${tag}>(.*)</${tag}>`);
return m ? m[1] : "";
}
async function asyncForEach(array, task, cb) {
let len = array.length;
for (let index = 0; index < len; index++) {
let item = array[index];
await task(item), index < len - 1 && cb && await cb();
}
}
function setStoreArray(store, key, values) {
return Reflect.has(store, key) ? Reflect.set(store, key, Reflect.get(store, key).concat(values)) : Reflect.set(store, key, values);
}
function getAuthInfo(auth) {
auth = auth.replace("Basic ", ""), auth = padBase64(auth);
let rawToken = Buffer.from(auth, "base64").toString("utf-8"), [platform, phone, token] = rawToken.split(":");
return {
phone,
token,
auth: `Basic ${auth}`,
platform,
expire: Number(token.split("|")[3])
};
}
function padBase64(str) {
return str.length % 4 === 0 ? str : str + "=".repeat(4 - str.length % 4);
}
function hashCode(str) {
if (typeof str != "string")
return 0;
let hash = 0, char = null;
if (str.length == 0)
return hash;
for (let i = 0; i < str.length; i++)
char = str.charCodeAt(i), hash = (hash << 5) - hash + char, hash = hash & hash;
return hash;
}
function isWps() {
try {
return globalThis.URLSearchParams === void 0 && globalThis.HTTP;
} catch {
return !1;
}
}
function createTime() {
let now = /* @__PURE__ */ new Date();
return now.getUTCFullYear() + pad2(now.getUTCMonth() + 1) + pad2(now.getUTCDate()) + pad2(now.getUTCHours() + 8) + pad2(now.getUTCMinutes()) + pad2(now.getUTCSeconds());
}
function pad2(num) {
return num < 10 ? `0${num}` : `${num}`;
}
function sleepSync(time) {
let start = Date.now();
for (; Date.now() - start < time; )
;
return time;
}
function getTimestamp() {
let now = /* @__PURE__ */ new Date();
return now.getUTCFullYear() + "", +pad2(now.getUTCMonth() + 1) + "", +pad2(now.getUTCDate()) + "", // +8 时区
+pad2(now.getUTCHours() + 8) + "", +pad2(now.getUTCMinutes()) + "", +pad2(now.getUTCSeconds());
}
function isCurrentMonth(time) {
return new Date(time).getMonth() === (/* @__PURE__ */ new Date()).getMonth();
}
function isString(val) {
return typeof val == "string";
}
function isUndefined(val) {
return typeof val > "u";
}
function isNullish(val) {
return val == null;
}
function hidePhone(phone) {
return phone.substring(0, 3) + "*******" + phone.substring(9);
}
// ../../core/caiyun/api/ai-cloud.ts
init_esm_shims();
// ../../core/caiyun/constant/index.ts
init_esm_shims();
var caiyunUrl = "https://caiyun.feixin.10086.cn", marketUrl = "https://caiyun.feixin.10086.cn/market", mw2TogetherUrl = "https://html5.mail.10086.cn/mw2/together/s", riddlesUrl = "https://caiyun.feixin.10086.cn/market/lanternriddles/answeredPuzzles", aiUrl = "https://ai.yun.139.com", aiXtUrl = "https://yun.139.com/mrpInfo/ycloud/aixt", cloudPhoneMarketUrl = "https://cpactiv.buy.139.com/cloudphone-market", DB_KEYS = {
/** AI 云朵获得数量 */
AI_CLOUND_NUM: "ai_cloud_num",
/** 用户ID */
USER_ID: "user_id",
/** 分享视频 */
SHARE_FIND: "share_find"
};
// ../../core/caiyun/api/ai-cloud.ts
function getCloudRewardApi(http, options) {
return http.post(`${aiXtUrl}/playAiClouds/getCloudReward`, options);
}
function getPreCloudRewardApi(http, options) {
return http.post(`${aiXtUrl}/playAiClouds/getPreCloudReward`, { type: 0, ...options }, {
headers: {
"X-Requested-With": "com.chinamobile.mcloud",
Referer: "https://yun.139.com/ai-helper/"
}
});
}
// ../../core/caiyun/utils/index.ts
init_esm_shims();
async function request($, api, options, ...args) {
let name = typeof options == "string" ? options : options.name;
try {
let { code, message, msg, result } = await api(...args);
return code !== 0 ? ($.logger.fatal(`${name}失败`, code, message || msg), typeof options == "object" ? options.isArray === !1 ? {} : [] : {}) : result;
} catch (error) {
$.logger.error(`${name}异常`, error);
}
return typeof options == "object" ? options.isArray === !1 ? {} : [] : {};
}
function getMarketName(marketId) {
return {
newsign_139mail: "139 邮箱",
sign_in_3: "移动云盘"
}[marketId] || "未知应用";
}
function getGroupName(groupId) {
return {
day: "每日任务",
month: "每月任务",
new: "新用户任务",
time: "热门任务",
hiddenabc: "隐藏任务",
hidden: "隐藏任务",
beiyong1: "临时任务"
}[groupId] || "未知任务";
}
// ../../core/caiyun/utils/store.ts
init_esm_shims();
async function setDataNum($, key, num) {
$.localStorage && num && await $.localStorage.setItem(key, {
count: num,
lastUpdate: /* @__PURE__ */ new Date()
});
}
async function addDataNum($, key, num) {
if (num)
return await setDataNum($, key, num += await getDataNum($, key)), num;
}
async function getDataNum($, key) {
if (!$.localStorage) return;
let data = await $.localStorage.getItem(key);
return data && isCurrentMonth(data.lastUpdate) ? data.count : 0;
}
// ../../core/caiyun/service/ai-cloud.ts
async function aiCloudTask($) {
if ($.logger.start("------【玩AI小天得云朵】------"), isWps()) {
$.logger.fail("AI云朵", "当前环境为WPS,跳过");
return;
}
if (!$.store.aiSession || !$.store.aiSession.length) {
$.logger.fail("AI云朵", "没有AI云朵对话记录,请确定AI红包任务已经运行");
return;
}
try {
if (!$.config.userId) {
$.logger.fatal("AI云朵", "获取用户ID失败");
return;
}
let userId = $.node.encryptAiUserId($.config.userId), num = await getDataNum($, DB_KEYS.AI_CLOUND_NUM);
if (num || await setDataNum($, DB_KEYS.AI_CLOUND_NUM, num = await getCloudRecordByAi($) || 0), $.logger.info(`本月获取云朵数量: ${num}`), num > 250) return;
if (num >= 197)
return await addCloudNum($, { ...$.store.aiSession[0], userId });
for (let index = 0; index < 10; index++) {
let data = $.store.aiSession[randomNumber(0, $.store.aiSession.length - 1)];
await addCloudNum($, { ...data, userId }), await $.sleep(2e3);
}
} catch (error) {
$.logger.error("AI红包", error);
}
}
async function addCloudNum($, ops) {
return await addDataNum($, DB_KEYS.AI_CLOUND_NUM, await getCloudRewardRecord($, ops));
}
async function getCloudRewardRecord($, options) {
try {
let recordId = await getPreCloudReward($, options);
return recordId ? await getCloudReward($, { userId: options.userId, recordId }) : void 0;
} catch (error) {
$.logger.error("AI云朵异常", error);
}
}
async function getPreCloudReward({ http, logger }, options) {
try {
let { code, msg, result } = await getPreCloudRewardApi(http, options);
if (code === 52105)
return logger.debug("僵尸打开你的脑子,摇了摇头走了");
if (code !== 0) {
logger.fail("抽取奖励失败", code, msg);
return;
}
return logger.debug("抽取奖励成功, 抽取", result.cloudNum), result.recordId;
} catch (error) {
logger.error("抽取奖励异常", error);
}
}
async function getCloudReward({ http, logger }, options) {
try {
let { msg, code, result } = await getCloudRewardApi(http, options);
if (code !== 0) {
logger.fail("领取奖励失败", code, msg);
return;
}
return logger.success("领取奖励成功, 获取", result, "云朵"), result;
} catch (error) {
logger.error("领取奖励异常", error);
}
}
async function getCloudRecordByAi($) {
let records = await request($, $.api.getCloudRecord, "获取云朵记录", 1, 300);
return records ? records.records.filter((el) => el.mark === "PlayAiodd" && isCurrentMonth(el.inserttime)).reduce((acc, cur) => acc + cur.num, 0) : 0;
}
// ../../core/caiyun/service/app.ts
init_esm_shims();
// ../../core/caiyun/api/file.ts
init_esm_shims();
function getFileList(http) {
return http.post("https://personal-kd-njs.yun.139.com/hcy/file/list", {
pageInfo: {
pageSize: 100,
pageCursor: null
},
orderBy: "updated_at",
orderDirection: "DESC",
parentFileId: "/",
imageThumbnailStyleList: [
"Small",
"Large"
]
}, {
headers: {
"x-yun-api-version": "v1",
"x-yun-app-channel": "10000034",
"x-yun-client-info": "||9|7.13.6|edge||||linux unknow||zh-CN|||ZWRnZQ==||"
}
});
}
function getDisk(http, account, catalogID) {
return http.post(
"https://yun.139.com/orchestration/personalCloud/catalog/v1.0/getDisk",
{
commonAccountInfo: { account: String(account) },
catalogID,
catalogType: -1,
sortDirection: 1,
catalogSortType: 0,
contentSortType: 0,
filterType: 0,
startNumber: 1,
endNumber: 100
}
);
}
// ../../core/caiyun/constant/task-list.ts
init_esm_shims();
var emailTaskList = {
/**
* 从固定入口签到
*/
// 1005: {
// id: 1005,
// group: 'time',
// },
/**
* 去“发现广场”浏览精彩内容
*/
// 1008: {
// id: 1008,
// group: 'month',
// },
/**
* 前往“云盘”查看个人动态
*/
1009: {
id: 1009,
group: "month"
},
/**
* 浏览限免影视大片
*/
1010: {
id: 1010,
group: "month"
},
/**
* 查看“我的附件”
*/
1013: {
id: 1013,
group: "month"
},
/**
* 体验“PDF转换”功能
*/
// 1014: {
// id: 1014,
// group: 'month',
// },
/**
* 体验“云笔记”功能
*/
1016: {
id: 1016,
group: "month"
},
/**
* 登录移动云盘APP云朵中心
*/
// 1017: {
// id: 1017,
// group: 'month',
// },
/** 月月开通 月月有礼 */
1021: {
id: 1021,
group: "month",
runner: !0
}
}, cloudTaskList = {
/**
* 手动上传一个文件
*/
106: {
id: 106,
runner: !0,
group: "day"
},
/**
* 创建一篇云笔记
*/
107: {
id: 107,
runner: !0,
group: "day"
},
/**
* 当月上传容量满1G
*/
110: {
id: 110,
runner: !0,
group: "month"
},
/**
* 使用PC客户端
*/
113: {
id: 113,
group: "month"
},
/**
* 浏览APP-我的-活动中心
*/
115: {
id: 115,
group: "month"
},
/**
* 从固定入口访问云朵中心
*/
// 409: {
// id: 409,
// group: 'month',
// },
/**
* 去发现频道看大片
*/
// 426: {
// id: 426,
// group: 'month',
// },
/**
* 使用移动云手机
*/
431: {
id: 431,
group: "month"
},
/**
* 分享文件有好礼
*/
434: {
id: 434,
runner: void 0,
group: "day"
},
/**
* 体验云盘AI功能
*/
435: {
id: 435,
group: "month"
},
/**
* 当月上传个文件满100个
*/
522: {
id: 522,
group: "month",
runner: !0
}
}, hotTaskList = {
/**
* 分享文件有好礼
*/
434: {
id: 434,
group: "time"
},
/**
* 去中国移动APP领好礼
*/
447: {
id: 447,
group: "time"
}
}, TASK_LIST = {
...emailTaskList,
...cloudTaskList,
...hotTaskList
}, SKIP_TASK_LIST = [
/** 邀请新用户 */
117,
/** 邀请好友看电影 */
437,
/** 组团领现金 */
991,
/** 开启通知领云朵 */
406,
/** 月月备份领好礼 */
385,
/** 30G流量0元领 */
120
];
// ../../core/caiyun/service/index.ts
init_esm_shims();
// ../../core/caiyun/service/ai-redpack.ts
init_esm_shims();
// ../../core/caiyun/service/auth.ts
init_esm_shims();
async function _getSsoTokenApi($, phone) {
try {
let { success, data, code, message } = await $.api.querySpecToken(phone);
if (!success) {
$.logger.debug("获取 ssoToken 失败", code, message, data);
return;
}
return data.token;
} catch (error) {
$.logger.error("获取 ssoToken 异常", error);
}
}
async function getSsoTokenApi($, phone) {
let token;
for (let index = 0; index < 5; index++) {
if (token = await _getSsoTokenApi($, phone), token) return token;
await $.sleep(2e3);
}
$.logger.fatal("获取 ssoToken 失败,请查看 debug 信息");
}
async function loginEmail($) {
let ssoToken = await getSsoTokenApi($, $.config.phone);
if (ssoToken)
try {
let { code, summary, var: data } = await $.api.loginMail(ssoToken);
if (code !== "S_OK") {
$.logger.fatal("获取 sid 失败", code, summary);
return;
}
return data;
} catch (error) {
$.logger.error("获取 sid 异常", error);
}
}
async function refreshToken($) {
try {
let { token, phone } = $.config, tokenXml = await $.api.authTokenRefresh(token, phone);
if (!tokenXml)
return $.logger.error("authTokenRefresh 失败");
let newToken = getXmlElement(tokenXml, "token");
if (newToken) return newToken;
$.logger.error(tokenXml);
} catch (error) {
$.logger.error("刷新 token 失败", error);
}
}
async function getJwtTokenApi($, ssoToken) {
return (await request($, $.api.tyrzLogin, "获取 ssoToken ", ssoToken)).token;
}
async function getJwtToken($) {
let ssoToken = await getSsoTokenApi($, $.config.phone);
if (ssoToken)
return await getJwtTokenApi($, ssoToken);
}
async function getNoteAuthToken($) {
try {
return $.api.getNoteAuthToken($.config.token, $.config.phone);
} catch (error) {
$.logger.error("获取云笔记 Auth Token 异常", error);
}
}
async function getUserId($) {
let { body } = await getNoteAuthToken($);
if (!body) return;
let match = body.match(/"userId":(\d+)/);
if (match)
return match[1];
}
async function setUserId($) {
let userId = await $.localStorage?.getItem(DB_KEYS.USER_ID);
if (userId) {
$.config.userId = userId;
return;
}
(userId = await getUserId($)) && ($.config.userId = userId, await $.localStorage?.setItem(DB_KEYS.USER_ID, userId));
}
function isNeedRefresh(expireTime, day) {
return expireTime - Date.now() < day * 864e5;
}
async function createNewAuth($) {
let { config, logger } = $;
if (logger.debug("------【检测账号有效期】------"), logger.debug(`token 有效期 ${Math.floor((config.expire - Date.now()) / 864e5)} 天`), !!isNeedRefresh(config.expire, config.剩余多少天刷新token))
return logger.info("尝试生成新的 auth"), await getNewAuth($);
}
function formatAuth(token, phone, platform) {
return Buffer.from(`${platform}:${phone}:${token}`).toString("base64");
}
async function getNewAuth($) {
let token = await refreshToken($);
if (token) {
let { config } = $;
return formatAuth(token, config.phone, config.platform);
}
$.logger.error("生成新 auth 失败");
}
// ../../core/caiyun/service/ai-redpack.ts
async function aiRedPackTask($) {
if ($.logger.start("------【AI红包】------"), isWps()) {
$.logger.fail("AI红包", "当前环境为WPS,跳过");
return;
}
try {
if (await blindboxJournaling($), !await init($)) return;
await setUserId($);
let count = 4;
for (; !await _task($) && count > 0; )
count--;
} catch (error) {
$.logger.error("AI红包", error);
}
}
async function blindboxJournaling({ api, sleep: sleep2 }) {
let marketName = "&marketName=National_LanternRiddlesal_LanternRiddles";
await api.journaling("National_LanternRiddles_client_all", "1008", marketName), await sleep2(200), await api.journaling("National_LanternRiddles_pv", "1008", marketName), await sleep2(200), await api.journaling("National_LanternRiddles_client_isApp", "1008", marketName), await sleep2(200);
}
function saveSession($, { sessionId, dialogueId }) {
$.store.aiSession || ($.store.aiSession = []), $.store.aiSession.push({ sessionId, dialogueId }), $.logger.debug("保存会话", sessionId, dialogueId);
}
async function _task($) {
let sleep2 = $.sleep;
await sleep2(1e3);
let puzzleCards = await getPuzzleCards($);
if (!puzzleCards) return;
let puzzleCard = puzzleCards[randomNumber(0, puzzleCards.length - 1)];
$.logger.debug("谜面 -> ", puzzleCard.puzzle), await sleep2(200);
let { msg, exitMsg, needMatch, failMsg } = await getMailChatMsg($, puzzleCard.puzzle);
if (exitMsg) throw new Error(exitMsg);
if (failMsg) return $.logger.fail("AI红包", failMsg);
if (!msg) return $.logger.debug("获取AI聊天消息失败");
let tip = needMatch ? matchResult(msg) : msg;
if (!tip) return $.logger.fail("AI红包", "未获取到谜底", msg);
$.logger.debug("谜底 -> ", tip), await sleep2(400);
let answered = await submitAnswered($, puzzleCard.id, tip);
if (answered === -1) return !0;
if (answered !== 0) return;
await sleep2(400);
let prizeName = await openRedPack($, puzzleCard.id);
if (prizeName === -1) return !0;
if (typeof prizeName != "number") {
if (prizeName !== "谢谢参与")
return $.logger.success("获得", prizeName), !0;
$.logger.debug("获得", prizeName);
}
}
async function init($) {
try {
let loginInfo = await loginEmail($);
if (!loginInfo)
return;
let { sid, rmkey } = loginInfo;
if (sid)
return $.http.setCookie("sid", sid, caiyunUrl), $.http.setCookie("RMKEY", rmkey, mw2TogetherUrl), sid;
} catch (error) {
$.logger.error("邮箱登录异常", error);
}
}
async function getPuzzleCards($) {
let puzzleCards = await request($, $.api.getIndexPuzzleCard, { name: "获取谜底列表" });
if (!puzzleCards.length) {
$.logger.fail("未获取到谜底列表,跳过任务");
return;
}
return puzzleCards.filter(({ puzzleTitleContext }) => puzzleTitleContext && puzzleTitleContext.length < 6).map((item) => ({
puzzle: item.puzzleTitleContext,
id: item.id
}));
}
async function getMailChatMsg($, dialogue) {
try {
let { code, success, message, data } = await $.api.addChat(dialogue, $.config.userId);
return success ? (data.sessionId && saveSession($, data), data.flowResult ? {
msg: data.flowResult.outContent,
needMatch: !0
} : data.leadCopy ? {
msg: data.leadCopy.linkName
} : { failMsg: JSON.stringify({ code, message, success, data }) }) : ($.logger.fail("获取AI聊天消息失败", code, message), code === "10000007" || code === "01000004" ? { exitMsg: message } : {});
} catch (error) {
$.logger.error("获取AI聊天消息异常", error);
}
}
function matchResult(result) {
if (!result.includes("<p>") || !result.includes("——"))
return;
let [, r1] = result.split("<p>"), [r2] = r1.split(/<\/p\s?>/);
if (!r2) return;
let [, r3] = r2.trim().split(/—+/), r4 = r3 && r3.trim().replace(/<br\s?\/>/, "");
return r4 && r4.split("/")[0];
}
async function submitAnswered($, id, a) {
try {
let { code, msg } = await $.api.submitAnswered(id, a);
switch (code) {
case 0:
return $.logger.debug("回答问题成功"), 0;
case 201:
return $.logger.fail("回答问题成功,但", msg), -1;
default:
return $.logger.fail("回答问题失败", code, msg), 1;
}
} catch (error) {
$.logger.error("回答答案异常", error);
}
return 2;
}
async function openRedPack($, puzzleId) {
try {
let { code, msg, result } = await $.api.getAwarding(puzzleId);
switch (code) {
case 0:
return result.prizeName;
case 10010020:
return $.logger.fail("可能你需要去 APP 手动完成一次", code, msg), -1;
default:
return $.logger.fail("打开红包失败", code, msg), 1;
}
} catch (error) {
$.logger.error("打开红包", error);
}
return 2;
}
// ../../core/caiyun/service/cloud-day.ts
init_esm_shims();
// ../../core/caiyun/api/cloud-day.ts
init_esm_shims();
function getCloudDayList(http) {
return http.get(
caiyunUrl + "/ycloud/mcloudday/gift/list"
);
}
function verifyCloudDay(http, prizeId) {
return http.post(
caiyunUrl + "/ycloud/mcloudday/gift/verify",
{
prizeId
}
);
}
function receiveCloudDayGift(http, prizeId, smsCode) {
return http.post(
caiyunUrl + "/ycloud/mcloudday/gift/receive",
{
prizeId,
smsCode
}
);
}
// ../../core/caiyun/service/cloud-day.ts
async function getCloudDayList2({ logger, http }) {
try {
let { code, msg, result } = await getCloudDayList(http);
if (code === 0)
return result.nationalPrizeList;
logger.fatal("获取会员日列表失败", code, msg);
} catch (error) {
logger.error("获取会员日列表异常", error);
}
return [];
}
async function verifyCloudDay2({ logger, http }, prizeId) {
try {
let { code, msg } = await verifyCloudDay(http, prizeId);
if (code === 0)
return logger.info("验证会员日礼物成功,因该可以兑换"), !0;
logger.fatal("验证会员日礼物失败", code, msg);
} catch (error) {
logger.error("验证会员日礼物异常", error);
}
}
async function receiveCloudDayGift2({ logger, http, md5: md52 }, prizeId, smsCode) {
try {
let { code, msg } = await receiveCloudDayGift(http, prizeId, md52(String(smsCode)));
if (code === 0)
return logger.success("礼物领取成功!"), !0;
logger.fatal("礼物领取失败", code, msg);
} catch (error) {
logger.error("礼物领取异常", error);
}
}
// ../../core/caiyun/service/index.ts
async function uploadFileRequest($, parentCatalogID, {
ext = ".png",
digest,
contentSize,
manualRename = 2,
contentName,
createTime: createTime2,
...options
} = {}, needUpload) {
try {
digest || (digest = randomHex(32).toUpperCase()), createTime2 || (createTime2 = createTime()), contentSize || (contentSize = randomNumber(1, 1e3)), contentName || (contentName = "asign-" + randomHex(4) + ext);
let xml = await $.api.uploadFileRequest(
{
phone: $.config.phone,
parentCatalogID,
contentSize,
createTime: createTime2,
digest,
manualRename,
contentName,
...options
}
), isNeedUpload = getXmlElement(xml, "isNeedUpload"), contentID = getXmlElement(xml, "contentID");
if (isNeedUpload === "1")
return needUpload ? {
redirectionUrl: getXmlElement(xml, "redirectionUrl"),
uploadTaskID: getXmlElement(xml, "uploadTaskID"),
contentName: getXmlElement(xml, "contentName"),
contentID
} : ($.logger.fail("未找到该文件,该文件需要手动上传"), {});
if (contentID)
return contentID && setStoreArray($.store, "files", [contentID]), {
contentID
};
$.logger.error("上传文件请求失败", xml);
} catch (error) {
$.logger.error("上传文件请求异常", error);
}
return {};
}
async function uploadFile($, parentCatalogID, {
ext = ".png",
digest,
contentSize,
manualRename = 2,
contentName,
createTime: createTime2,
...options
} = {}, file) {
try {
let { redirectionUrl, uploadTaskID, contentID } = await uploadFileRequest($, parentCatalogID, {
ext,
digest,
contentSize,
manualRename,
contentName,
createTime: createTime2,
...options
}, !0);
if (!redirectionUrl || !file)
return !!contentID;
let size = typeof file == "string" ? file.length : file.byteLength;
$.logger.debug("别着急,文件上传中。。。");
let xml = await $.api.uploadFile(redirectionUrl.replace(/&/g, "&"), uploadTaskID, file, size);
switch (getXmlElement(xml, "resultCode")) {
case "0":
return contentID && setStoreArray($.store, "files", [contentID]), $.logger.debug("上传文件成功"), !0;
case "9119":
return $.logger.fail("上传文件失败:md5校验失败"), !1;
default:
return $.logger.error("上传文件失败", xml), !1;
}
} catch (error) {
$.logger.error("上传文件异常", error);
}
return !1;
}
async function uploadRandomFile($, options) {
try {
if (isWps()) {
let map = [
{ key: "1", value: "c4ca4238a0b923820dcc509a6f75849b" },
{ key: "2", value: "c81e728d9d4c2f636f067f89cc14862c" },
{ key: "3", value: "eccbc87e4b5ce2fe28308fd9f2a7baf3" },
{ key: "123", value: "202cb962ac59075b964b07152d234b70" }
], r = randomNumber(0, map.length);
return await uploadFile($, $.config.catalog, { digest: map[r].value }, map[r].key);
}
let buffer = randomHex(32);
return await uploadFile($, $.config.catalog, { ...options, digest: $.md5(buffer) }, buffer);
} catch (error) {
$.logger.error("uploadRandomFile 异常", error);
}
}
function getBackParentCatalogID() {
return "00019700101000000043";
}
// ../../core/caiyun/service/app.ts
async function _handleClick($, task, doingList) {
await _clickTask($, task.id, task.currstep) && (await _handleAppTask($, task), doingList.push(task.id), await $.sleep(500));
}
async function _switchAppTask($, task, doingList) {
switch (task.id === 434 && ($.store.shareCount = getShareCount(task.name), $.logger.debug("shareCount", $.store.shareCount)), task.groupid) {
case "beiyong1":
if (await _handleClick($, task, doingList), task.name.includes("上传") && (task.name.includes("图") || task.name.includes("照"))) {
$.logger.debug("尝试完成", task.name), await uploadRandomFile($);
return;
}
case "month":
if (task.marketname === "sign_in_3" && $.store.curMonthBackup === !1 && (/* @__PURE__ */ new Date()).getDate() < 20) {
$.logger.debug("跳过任务(未开启备份)", task.name);
return;
}
default: {
if (TASK_LIST[task.id]) {
await _handleClick($, task, doingList);
return;
}
if (!SKIP_TASK_LIST.includes(task.id)) {
await clickTask($, task.id);
return;
}
}
}
}
function getShareCount(str) {
return +str.replace("分享文件得云朵<span id='share_title'>", "").replace("/7</span>", "");
}
function printShareCount($, name) {
let count = getShareCount(name);
count > $.store.shareCount && $.logger.success("分享文件有好礼", count, "天");
}
async function appTask($) {
$.logger.start("------【任务列表】------");
let taskList = await getAllAppTaskList($), doingList = [];
taskList.sort((a, b) => a.id - b.id);
for (let task of taskList)
$.config.tasks?.skipTasks?.includes(task.id) || task.state === "FINISH" || task.enable !== 1 || await _switchAppTask($, task, doingList);
let skipCheck = [1021];
for (let task of await getAllAppTaskList($)) {
if (skipCheck.includes(task.id)) continue;
if (task.id === 434) {
printShareCount($, task.name);
continue;
}
task.id === 481 && task.currstep === 2 && await clickTask($, 481, "randomCloudTask"), task.id === 478 && task.state !== "FINISH" && await clickTask($, 478, "randomCloudTask");
let printFail = (msg) => $.logger.fail(
msg,
`请前往${getMarketName(task.marketname)}手动完成${getGroupName(task.groupid)}:${task.name}(${task.id})`
);
if (doingList.includes(task.id)) {
if (task.state === "FINISH") {
$.logger.success("成功", task.name);
continue;
}
if (task.id === 522) {
task.process === 0 ? printFail("失败") : $.logger.info(task.name, "本月已经完成", task.process, "次");
continue;
}
printFail("失败");
continue;
}
(task.groupid === "month" || task.groupid === "day" || task.groupid === "cloudEmail") && task.state !== "FINISH" && printFail("未完成");
}
}
async function _handleAppTask($, task) {
let taskRunner = getTaskRunner($);
switch (task.id) {
case 110:
case 522:
return await taskRunner[task.id]?.($, task.process);
default:
return await taskRunner[task.id]?.($, task);
}
}
function getTaskRunner($) {
return {
113: async ($2) => {
await refreshToken($2), sleepSync(1e3), await uploadRandomFile($2, { channelSrc: "10200153" });
},
106: ($2) => uploadRandomFile($2, { uploadSrc: "1" }),
107: createNoteDaily,
434: shareTime,
110: $.node && $.node.uploadTask,
522: update100,
1021: emailNotice
};
}
async function getAllAppTaskList($) {
let list1 = await getAppTaskList($, "sign_in_3"), list2 = await getAppTaskList($, "newsign_139mail");
return list1.concat(list2);
}
async function emailNotice($, task) {
try {
let { out } = task.button;
if (!out) return;
if (out.canReceive === 1) {
$.logger.debug("可以领取通知奖励", task.id), await request($, $.api.receiveTask, "领取邮件通知奖励", task.id);
return;
}
out.day && $.logger.debug("邮箱通知已经开启", out.day, "天");
} catch (error) {
$.logger.error("邮件通知异常", error);
}
}
async function update100($, progressNum) {
$.logger.info("开始执行每月100次上传任务");
for (let i = 0; i < $.config.tasks.每月上传任务单日数量 && !(progressNum >= 100); i++)
await uploadRandomFile($, { uploadSrc: "1" }), await $.sleep(500);
}
async function getAppTaskList($, marketname = "sign_in_3") {
let data = await request(
$,
$.api.getTaskList,
"获取任务列表",
marketname
);
return Object.values(data).flat();
}
async function createNoteDaily($) {
if (!$.config.token) {
$.logger.info("未配置 authToken,跳过云笔记任务执行");
return;
}
let { headers } = await getNoteAuthToken($);
if (!headers || !headers.app_auth) {
$.logger.info("获取鉴权信息失败,跳过云笔记任务执行");
return;
}
try {
let id = randomHex(32);
await $.api.createNote(id, `${randomHex(3)}`, $.config.phone, headers), await $.sleep(2e3), await $.api.deleteNote(id, headers);
} catch (error) {
$.logger.error("创建云笔记异常", error);
}
}
async function _clickTask($, id, currstep = 0) {
let idCurrstepMap = {
434: 22
};
return idCurrstepMap[id] && currstep === idCurrstepMap[id] ? (await clickTask($, id), !0) : currstep === 0 ? await clickTask($, id) : !0;
}
async function _getFileList($) {
try {
let { message, code, data, success } = await getFileList($.http);
if (success)
return $.logger.debug("测试 file/list"), data.items.filter((item) => item.type === "file").map((item) => ({
name: item.name,
id: item.fileId
}));
if (code === "04510001") return !1;
$.logger.fail("获取文件列表失败", code, message);
} catch (error) {
$.logger.error("获取文件列表异常", error);
}
}
async function _getFileList2($) {
try {
let { message, code, data, success } = await getDisk($.http, $.config.phone, $.config.catalog);
if (success)
return $.logger.debug("测试 file/list"), (data.getDiskResult?.contentList).map((item) => ({
name: item.contentName,
id: item.contentID
}));
if (code === "04510001") return !1;
$.logger.fail("获取文件列表失败", code, message);
} catch (error) {
$.logger.error("获取文件列表异常", error);
}
}
async function getShareFile($) {
let files = $.config.文件获取方式 === 1 ? await _getFileList($) : await _getFileList2($);
if (files) {
let file = files.find(
(item) => item.name === "中国移动云盘产品手册.pdf" || item.name === "欢迎使用彩云.pdf" || item.name.startsWith("asign-")
) || files[randomNumber(0, files.length - 1)];
return file ? {
id: file.id,
name: file.name
} : { id: void 0 };
}
return {
id: $.config.tasks.shareFile || $.store.files?.[0]
};
}
async function delShareFile($, linkIDs) {
try {
let { code, message, data } = await $.api.delOutLink($.config.phone, linkIDs);
if (code === "0")
return $.logger.debug("删除分享成功", linkIDs, message), !0;
$.logger.debug("分享文件失败", code, message, data.result);
} catch (error) {
$.logger.debug("删除分享文件失败", error);
}
}
async function shareTime($) {
try {
let { id, name } = await getShareFile($);
if (!id) {
$.logger.debug("本次没有上传任务,跳过分享任务");
return;
}
$.logger.debug("分享", id, name || "");
let { code, message, data } = await $.api.getOutLink(
$.config.phone,
[id],
""
);
if (code === "0") {
$.logger.success("分享文件成功(分享成功不等于任务完成)", message);
try {
await delShareFile($, [data.getOutLinkRes.getOutLinkResSet[0].linkID]);
} catch {
}
return !0;
}
$.logger.fail("分享文件失败", code, message, data && data.result);
} catch (error) {
$.logger.error("分享文件异常", error);
}
}
async function clickTask($, id, taskStr) {
try {
let { code, msg, result } = await $.api.clickTask(id, taskStr);
if (code === 0)
return result && result.msg && $.logger.info(id, result.msg), !0;
$.logger.fail(`点击任务${id}失败`, msg);
} catch (error) {
$.logger.error(`点击任务${id}异常`, error);
}
return !1;
}
// ../../core/caiyun/service/backup-gift.ts
init_esm_shims();
async function backupGiftTask($) {
$.logger.start("------【备份好礼】------");
try {
let { state, curMonth } = await request($, $.api.getBackupGift, "backupGiftTask");
if (!curMonth) return;
switch (state) {
case -1:
$.logger.warn("未开启备份,请前往 APP 手动开启");
return;
case 1:
$.logger.success("本月已领取");
return;
case 0:
$.logger.info("领取备份奖励");
let result = await request($, $.api.receiveBackupGift, "backupGiftTask");
typeof result == "number" && $.logger.success("领取成功,获得云朵", result);
return;
default:
$.logger.warn("未知状态", state);
}
} catch (error) {
$.logger.error("备份好礼", error);
}
}
// ../../core/caiyun/service/blind-box.ts
init_esm_shims();
async function openBlindbox($) {
try {
$.logger.debug("开盲盒");
let { code, msg, result } = await $.api.openBlindbox();
switch (code) {
case 0:
return $.logger.info("获得", result.prizeName);
case 200103:
return $.logger.fail("本月奖励已领完", code, msg);
case 200105:
return $.logger.debug("什么都没有哦");
case 200106:
return $.logger.error("异常", code, msg);
default:
return $.logger.warn("未知原因失败", code, msg);
}
} catch (error) {
$.logger.error("openBlindbox 异常", error);
}
}
async function openBlindboxAfterGetCount($) {
try {
let { chanceNum } = await request($, $.api.blindboxUser, "获取盲盒任务");
if (!chanceNum) return;
await $.sleep(666);
for (let i = 0; i < chanceNum; i++)
await openBlindbox($), await $.sleep(666);
} catch (error) {
$.logger.error("开盒异常", error);
}
}
async function registerBlindboxTask($, taskId) {
await request($, $.api.registerBlindboxTask, "注册盲盒", taskId);
}
async function openMoreBlindbox($) {
try {
let taskList = await request($, $.api.getBlindboxTask, "获取盲盒任务");
if (!Array.isArray(taskList)) return;
let tasks2 = taskList.filter((task) => task.memo && !task.memo.includes("isLimit") && task.status === 0);
if (tasks2.length <= 0)
return;
for (let { taskName, taskId } of tasks2)
$.logger.debug("注册盲盒任务", taskName), await registerBlindboxTask($, taskId), await $.sleep(666), await openBlindboxAfterGetCount($);
} catch (error) {
$.logger.error(error);
}
}
async function blindboxJournaling2({ api, sleep: sleep2 }) {
await api.journaling("National_BlindBox_userLogin"), await sleep2(200), await api.journaling("National_BlindBox_login"), await sleep2(200), await api.journaling("National_BlindBox_loginAppOuterEnd"), await sleep2(200);
}
async function blindboxTask($) {
$.logger.start("------【开盲盒】------");
try {
await blindboxJournaling2($);
let r1 = await request($, $.api.blindboxUser, "获取盲盒用户信息");
if (typeof r1.chanceNum != "number")
return $.logger.debug(r1.chanceNum), await openBlindbox($);
if (r1.chanceNum === 0 && r1.taskNum >= 2) {
$.logger.info("今日已完成");
return;
}
r1.firstTime && $.logger.success("今日首次登录,获取次数 +1");
for (let i = 0; i < r1.chanceNum; i++)
await openBlindbox($), await $.sleep(666);
await openMoreBlindbox($);
} catch (error) {
$.logger.error("开盲盒任务异常", error);
}
}
// ../../core/caiyun/service/cloud-phone-redpack.ts
init_esm_shims();
// ../../core/caiyun/api/cloud-phone-redpack.ts
init_esm_shims();
function userAccountInfo(http, headers) {
return http.post(`${cloudPhoneMarketUrl}/redpacket/userAccountInfo`, {}, { headers });
}
function configTaskList(http, headers) {
return http.post(`${cloudPhoneMarketUrl}/redpacket/configTaskList`, {}, { headers });
}
function userSign(http, headers) {
return http.post(`${cloudPhoneMarketUrl}/redpacket/userSign`, {}, { headers });
}
function getTyrzToken(http) {
return http.get(
`${caiyunUrl}/portal/auth/getTyrzToken.action?sourceId=001216&_=${Date.now()}`
);
}
function tokenValidate(http, token, headers) {
return http.post(
`${cloudPhoneMarketUrl}/user/tokenValidate`,
{ version: "1.0", pintype: 13, token },
{
headers
}
);
}
// ../../core/caiyun/service/cloud-phone-redpack.ts
function getHeader(md52, token) {
let appId = "12345681", requestId = createTime() + Date.now() + randomString(8), timestamp = Date.now();
return {
sign: getSign(md52, { requestId, appId, token }, timestamp),
requestId,
appId,
token,
timestamp: String(timestamp)
};
}
function getSign(md52, params, timestamp) {
let code = "e10adc3949ba59abbe56e057f20f883e", paramsStr = Object.values(params).reduce(
(acc, value) => acc + (isNullish(value) ? "" : typeof value == "object" ? JSON.stringify(value) : value),
""
);
return md52(paramsStr + code + timestamp).toLowerCase();
}
async function cloudPhoneRedpackTask($) {
$.logger.start("------【云手机红包派对】------");
try {
if (await login($), !$.store?.cloudPhoneToken) {
$.logger.error("云手机红包派对", "登录失败");
return;
}
await printUser($), await $.sleep(1e3), await sign($);
} catch (error) {
$.logger.error("云手机红包派对", error);
}
}
async function getConfigTaskList({ http, logger, md5: md52, store }) {
try {
let { header, data } = await configTaskList(http, getHeader(md52, store.cloudPhoneToken));
if (header.status !== "200") {
logger.error("getConfigTaskList 失败", header);
return;
}
return data;
} catch (error) {
logger.error("getConfigTaskList", error);
}
}
async function sign($) {
let task = await getConfigTaskList($);
if (!task) return;
let { configTaskSignList } = task, today