fix: 增加dyid长度校验

This commit is contained in:
shanmite 2021-07-27 23:34:10 +08:00
parent f5a8ad75d2
commit 8bc053b352
5 changed files with 36 additions and 22 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

@ -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 + ',', () => {

View File

@ -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 => {

View File

@ -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

View File

@ -10,7 +10,7 @@ const metainfo = [
` __/ | | | `,
` |___/ |_| `,
` `,
` v1.9.0 by shanmite`,
` v1.9.5 by shanmite`,
]
/**多账号存储 */
let multiple_account = [];