diff --git a/doc/pic/lottery_start.png b/doc/pic/lottery_start.png index 85fce76..83284e3 100644 Binary files a/doc/pic/lottery_start.png and b/doc/pic/lottery_start.png differ diff --git a/lib/MyStorage.js b/lib/MyStorage.js index cba8695..3997d7d 100644 --- a/lib/MyStorage.js +++ b/lib/MyStorage.js @@ -32,6 +32,9 @@ const MyStorage = { */ updateDyid: (dyid) => { log.info('更新dyid', `写入${dyid}`); + if (dyid.length !== Util.dyid_length) { + log.error('更新dyid', `dyid(${dyid})长度不为18 若出现此问题请即时通知开发者`) + } return new Promise((resolve) => { const ws = Util.writeDyidFile(Number(process.env.NUMBER)); ws.write(dyid + ',', () => { diff --git a/lib/Public.js b/lib/Public.js index cd84e3e..4486367 100644 --- a/lib/Public.js +++ b/lib/Public.js @@ -303,31 +303,38 @@ class Public { let { length } = dyids, /**判断此专栏是否查看过的权重 */ weight = 8; - log.info('获取动态', `提取专栏中提及的dyid(${length})`) + log.info('获取动态', `提取专栏(${cv})中提及的dyid(${length})`) for (const dyid of dyids) { - if (await MyStorage.searchDyid(dyid)) weight--; - if (weight >= 0) { - log.info('获取动态', `查看动态(${dyid})的细节 (${length--})`) - const res = await BiliAPI.getOneDynamicByDyid(dyid) - , { code, data } = Util.strToJson(res) - , { card } = data; - - if (code !== 0) { - log.error('获取动态', '获取动态数据出错,可能是访问太频繁 \n' + res) - break - } - - await Util.delay(2000) - - if (card) { - dyinfos.push(parseDynamicCard(card)); - } - } else { - log.info('获取动态', '其中已有8条动态曾经转过, 该专栏或已查看, 故中止') + const isRelayed = await MyStorage.searchDyid(dyid); + weight = isRelayed ? weight - 1 : 8; + if (weight < 0) { + log.info('获取动态', '连续8条动态曾经转过,该专栏或已查看,故中止') dyinfos = [] break } + if (dyid.length === Util.dyid_length) { + if (!isRelayed) { + log.info('获取动态', `查看动态(${dyid})的细节 (${length--})`) + const res = await BiliAPI.getOneDynamicByDyid(dyid) + , { code, data } = Util.strToJson(res) + , { card } = data; + if (code !== 0) { + log.error('获取动态', '获取动态数据出错,可能是访问太频繁 \n' + res) + break + } + + await Util.delay(2000) + + if (card) { + dyinfos.push(parseDynamicCard(card)); + } + } else { + log.info('获取动态', `动态(${dyid})已转发过 (${length--})`) + } + } else { + log.warn('获取动态', `动态(${dyid})无效 (${length--})`) + } } } const fomatdata = dyinfos.map(o => { diff --git a/lib/Util.js b/lib/Util.js index c09030a..b3cc72e 100644 --- a/lib/Util.js +++ b/lib/Util.js @@ -229,6 +229,10 @@ const Util = { }) }); }, + /** + * dyid长度 + */ + dyid_length: 18, /** * 读取dyid文件 * @param {number} num @@ -236,7 +240,7 @@ const Util = { */ readDyidFile(num) { const fpath = num < 2 ? path.join(this.dyids_dir, 'dyid.txt') : path.join(this.dyids_dir, `dyid${num}.txt`); - return fs.createReadStream(fpath, { encoding: 'utf8', highWaterMark: 19 * 1000 }) + return fs.createReadStream(fpath, { encoding: 'utf8', highWaterMark: (this.dyid_length + 1) * 1000 }) }, /** * 追加dyid diff --git a/main.js b/main.js index b85a3ab..adc3009 100644 --- a/main.js +++ b/main.js @@ -10,7 +10,7 @@ const metainfo = [ ` __/ | | | `, ` |___/ |_| `, ` `, - ` v1.9.0 by shanmite`, + ` v1.9.5 by shanmite`, ] /**多账号存储 */ let multiple_account = [];