From 7868a0110cd2913cd5a32d0c2b5014495a263ffb Mon Sep 17 00:00:00 2001 From: Hex Date: Thu, 13 Apr 2023 23:03:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E5=E7=A2=8E=E9=93=B6=E5=AD=90?= =?UTF-8?q?=E6=8A=BD=E5=A5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++- smzdm_task.js | 72 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 3b2b6fb..8b3ff26 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ * 点赞文章 * 评论文章 * 分享 - * 免费抽奖 + * 抽奖 + * 免费抽奖 + * 5 碎银子抽奖 * 关注用户 * 关注栏目 * 关注品牌 @@ -49,6 +51,7 @@ ql repo https://github.com/hex-ci/smzdm_script.git "" "env.js|bot.js|sendNotify. * SMZDM_COOKIE: 抓包抓到的 Cookie 内容,需要所有 Cookie 内容,多用户可以用 `&` 分隔,或者使用多个同名环境变量。 * SMZDM_SK: 这个值是可选值,是从安卓 App 的 `https://user-api.smzdm.com/checkin` 请求参数中抓包抓到的,如果抓到这个值可以填写(强烈建议填写),如果没抓到可以忽略,多用户可以用 `&` 分隔,或者使用多个同名环境变量,顺序要保持与 `SMZDM_COOKIE` 多用户顺序一致。 * SMZDM_COMMENT: 如果要完成评论文章的任务请设置这个环境变量,环境变量的内容是评论的文案,文案要大于 10 个汉字,建议用比较个性化的文案,脚本发布评论后会删除这条评论,但是为防止删除失败的情况,请尽量用好一点的文案,防止被判定为恶意灌水。 +* SMZDM_CROWD_SILVER_5: 每日抽奖任务默认只进行免费抽奖,如要进行 5 碎银子的抽奖,请设置这个环境变量的值为 `yes`。 ## 交流群 diff --git a/smzdm_task.js b/smzdm_task.js index 14c8bee..dba6ac6 100644 --- a/smzdm_task.js +++ b/smzdm_task.js @@ -554,13 +554,27 @@ class SmzdmTaskBot extends SmzdmBot { async doCrowdTask(task) { $.log(`开始任务: ${task.task_name}`); - const { isSuccess, data } = await this.getFreeCrowd(); + let { isSuccess, data } = await this.getCrowd('免费', 0); if (!isSuccess) { - return { - isSuccess, - code: 99 - }; + if (process.env.SMZDM_CROWD_SILVER_5 == 'yes') { + ({ isSuccess, data } = await this.getCrowd('5碎银子', 5)); + + if (!isSuccess) { + return { + isSuccess, + code: 99 + }; + } + } + else { + $.log('🟡请设置 SMZDM_CROWD_SILVER_5 环境变量值为 yes 后才能进行5碎银子抽奖!'); + + return { + isSuccess, + code: 99 + }; + } } $.log('等候 5 秒'); @@ -841,38 +855,46 @@ class SmzdmTaskBot extends SmzdmBot { }; } - // 获取免费抽奖信息 - async getFreeCrowd() { + // 获取抽奖信息 + async getCrowd(name, price) { const { isSuccess, data, response } = await requestApi('https://zhiyou.smzdm.com/user/crowd/', { sign: false, parseJSON: false, headers: this.getHeadersForWeb() }); + const re = new RegExp(`]+?)>\\s+?]+?>\\s*${name}(?:抽奖)?\\s*<\\/div>\\s+-${price}<\\/span>[\\s\\S]+?<\\/button>`, 'ig'); + if (isSuccess) { - const match = data.match(/]+?)>\s+?]+?>\s*免费抽奖\s*<\/div>\s+-0<\/span>[\s\S]+?<\/button>/i); + const crowds = []; + let match; - if (match) { - const matchCrowd = match[1].match(/data-crowd_id="(\d+)"/i); + while ((match = re.exec(data)) !== null) { + crowds.push(match[1]); + } - if (matchCrowd) { - $.log(`免费抽奖ID: ${matchCrowd[1]}`); + if (crowds.length < 1) { + $.log(`未找到${name}抽奖`); - return { - isSuccess: true, - data: matchCrowd[1] - }; - } - else { - $.log(`未找到免费抽奖ID`); + return { + isSuccess: false + }; + } - return { - isSuccess: false - }; - } + const crowd = this.getOneByRandom(crowds); + + const matchCrowd = crowd.match(/data-crowd_id="(\d+)"/i); + + if (matchCrowd) { + $.log(`${name}抽奖ID: ${matchCrowd[1]}`); + + return { + isSuccess: true, + data: matchCrowd[1] + }; } else { - $.log(`未找到免费抽奖`); + $.log(`未找到${name}抽奖ID`); return { isSuccess: false @@ -880,7 +902,7 @@ class SmzdmTaskBot extends SmzdmBot { } } else { - $.log(`获取免费抽奖失败: ${response}`); + $.log(`获取${name}抽奖失败: ${response}`); return { isSuccess: false