From 8c0d96afc6b3909b893e92e02c961c0bf9f96aea Mon Sep 17 00:00:00 2001 From: shanmite Date: Wed, 17 Nov 2021 16:42:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=A3=80=E6=B5=8B=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=B7=B2=E7=BB=8F=E5=8F=91=E9=80=81=E8=BF=87=E9=9A=8F?= =?UTF-8?q?=E6=9C=BA=E5=8A=A8=E6=80=81(#71)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 优化随机动态发送逻辑 * 修复随机动态的部分bug --- lib/helper/randomDynamic.js | 42 ++++++++++++++++++++----------------- lib/lottery.js | 6 ++++-- lib/net/bili.js | 7 ++++++- 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/lib/helper/randomDynamic.js b/lib/helper/randomDynamic.js index 183389e..5576cc6 100644 --- a/lib/helper/randomDynamic.js +++ b/lib/helper/randomDynamic.js @@ -8,32 +8,36 @@ const utils = require("../utils"); * @returns */ async function randomDynamic(num) { - const { create_dy_type, dy_contents, random_dynamic_wait } = config; + let dynamics = [] + const + { create_dy_type, dy_contents, random_dynamic_wait } = config, + hasShareVideo = create_dy_type === -1 || create_dy_type === 1, + hasRandomCreate = create_dy_type === -1 || create_dy_type === 0 || typeof create_dy_type === 'undefined'; - if (create_dy_type === -1 || create_dy_type === 0 || typeof create_dy_type === 'undefined') { + if (hasShareVideo) { + dynamics = await bili.getTopRcmd() + for (let index = 0; dynamics.length < num; index++) { + dynamics.push(...await bili.getTopRcmd()) + } + } + + if (hasRandomCreate) { for (let index = 0; index < num; index++) { - await bili.createDynamic(utils.getRandomOne(dy_contents)); - await utils.delay(random_dynamic_wait); + dynamics.push(utils.getRandomOne(dy_contents)) } } - if (create_dy_type === -1 || create_dy_type === 1) { - let videos = await bili.getTopRcmd() - for (let index = 0; videos.length < num; index++) { - videos.push(...await bili.getTopRcmd()) - } - - await utils.try_for_each(videos, async ([uid, aid]) => { - if (num--) { - await bili.shareVideo(uid, aid) - await utils.delay(random_dynamic_wait) - return false + await utils.try_for_each( + utils.shuffle(dynamics).slice(0, num), + async (dynamic) => { + await utils.delay(random_dynamic_wait) + if (dynamic instanceof Array && dynamic.length === 2 && typeof dynamic[0] === "number") { + return await bili.shareVideo(...dynamic) } else { - return true + return await bili.createDynamic(utils.getRandomOne(dy_contents)) } - }) - } + } + ) } - module.exports = { randomDynamic } \ No newline at end of file diff --git a/lib/lottery.js b/lib/lottery.js index c152519..c19a727 100644 --- a/lib/lottery.js +++ b/lib/lottery.js @@ -10,8 +10,10 @@ const { log } = utils; async function createRandomDynamic(num) { if (config.create_dy) { log.info('随机动态', `准备创建${num}条随机动态`); - const Dynamic = await Searcher.checkAllDynamic(global_var.get("myUID"), 1); - if ((Dynamic.allModifyDynamicResArray[0] || { type: 0 }).type === 1) { + const + { allModifyDynamicResArray } = await Searcher.checkAllDynamic(global_var.get("myUID"), 1), + { type, orig_type } = allModifyDynamicResArray[0] || {}; + if (type === 1 && orig_type !== 8) { await randomDynamic(num) } else { log.info('随机动态', '已有非抽奖动态故无需创建'); diff --git a/lib/net/bili.js b/lib/net/bili.js index b22ce5d..ff1121d 100644 --- a/lib/net/bili.js +++ b/lib/net/bili.js @@ -760,7 +760,7 @@ const bili_client = { * @property {number} img_height * 发布一条动态 * @param { string | Picture[] } content - * @return {Promise} + * @return {Promise} isError true */ async createDynamic(content) { let @@ -790,8 +790,10 @@ const bili_client = { }); if (/^{"code":0/.test(responseText)) { log.info('发布动态', `成功创建一条随机内容的动态\n${JSON.stringify(content)}\n`); + return false } else { log.error('发布动态', `发布动态失败\n${JSON.stringify(content)}\n${responseText}`); + return true } }, /** @@ -820,6 +822,7 @@ const bili_client = { * 分享视频 * @param {number} uid * @param {number} aid + * @return {boolean} isError true */ async shareVideo(uid, aid) { const responseText = await post({ @@ -836,8 +839,10 @@ const bili_client = { }); if (/^{"code":0/.test(responseText)) { log.info('转发视频', `成功转发视频(av${aid})`); + return false } else { log.error('转发视频', `转发失败\n${responseText}`); + return true } }, /**