fix: 根据点赞去重(#64)

This commit is contained in:
shanmiteko 2021-11-06 11:06:38 +08:00
parent d1c2c61626
commit 4accd2df2b
2 changed files with 41 additions and 11 deletions

View File

@ -1,7 +1,7 @@
const utils = require('../utils');
const bili = require('../net/bili');
const { send } = require("../net/http");
const config = require("../data/config");
const { article_scan_page, not_check_article, get_dynamic_detail_wait, uid_scan_page, search_wait, tag_scan_page } = require("../data/config");
const { log } = utils
@ -218,9 +218,7 @@ class Searcher {
*/
async getLotteryInfoByUID(UID) {
log.info('获取动态', `开始获取用户${UID}的动态信息`);
const
{ uid_scan_page, search_wait, get_dynamic_detail_wait } = config,
{ allModifyDynamicResArray } = await Searcher.checkAllDynamic(UID, uid_scan_page, search_wait);
const { allModifyDynamicResArray } = await Searcher.checkAllDynamic(UID, uid_scan_page, search_wait);
let { length } = allModifyDynamicResArray
@ -239,7 +237,7 @@ class Searcher {
const results = await pre
, { origin_dynamic_id } = cur;
log.info('获取动态', `查看源动态(${origin_dynamic_id})的细节 (${length--})`)
log.info('获取动态', `查看源动态(${origin_dynamic_id})是否点赞 (${length--})`)
const card = await bili.getOneDynamicByDyid(origin_dynamic_id)
@ -279,7 +277,6 @@ class Searcher {
*/
async getLotteryInfoByTag(tag_name) {
const
{ tag_scan_page, search_wait } = config,
tag_id = await bili.getTagIDByTagName(tag_name),
hotdy = await bili.getHotDynamicInfoByTagID(tag_id),
modDR = modifyDynamicRes(hotdy);
@ -334,9 +331,7 @@ class Searcher {
*/
async getLotteryInfoByArticle(key_words) {
log.info('获取动态', `开始获取含关键词${key_words}的专栏信息`);
const
{ article_scan_page, not_check_article, get_dynamic_detail_wait } = config,
cvs = (await bili.searchArticlesByKeyword(key_words)).slice(0, article_scan_page);
const cvs = (await bili.searchArticlesByKeyword(key_words)).slice(0, article_scan_page);
/**存储所有专栏中的dyid */
let dyinfos = [];
@ -359,7 +354,7 @@ class Searcher {
/**遍历某专栏中的dyids */
for (const dyid of dyids_set) {
if (dyid.length === utils.dyid_length) {
log.info('获取动态', `查看专栏中所提及动态(${dyid})的细节 (${length--})`)
log.info('获取动态', `查看专栏中所提及动态(${dyid})是否点赞 (${length--})`)
const card = await bili.getOneDynamicByDyid(dyid)
@ -416,6 +411,7 @@ class Searcher {
getLotteryInfoByAPI(api) {
return new Promise((resolve) => {
if (api) {
const { strToJson } = utils;
log.info('获取动态', `开始获取链接(${api})中的抽奖信息`)
send({
url: api,
@ -428,7 +424,40 @@ class Searcher {
log.error("从API响应数据中获取抽奖信息", body.err_msg)
resolve(null)
} else {
resolve(JSON.parse(body).lottery_info)
const raw_lottery_info = strToJson(body).lottery_info;
if (raw_lottery_info) {
let { length } = raw_lottery_info;
if (length) {
const lottery_info = raw_lottery_info
.reduce(async (pre, cur) => {
const results = await pre
, { dyid } = cur;
log.info('获取动态', `查看动态(${dyid})是否点赞 (${length--})`)
const card = await bili.getOneDynamicByDyid(dyid)
if (card) {
await utils.delay(get_dynamic_detail_wait)
const { is_liked } = parseDynamicCard(card)
cur.is_liked = is_liked
return [...results, cur]
}
return results
}, Promise.resolve([]))
resolve(lottery_info)
return
}
}
log.error("从API响应数据中获取抽奖信息", "非Json数据或没有lottery_info或lottery为空")
resolve(null)
}
},
failure: err => {

View File

@ -372,6 +372,7 @@ const bili_client = {
log.warn('获取一个动态的细节', `动态(${dynamic_id})不存在`);
return;
}
log.info('获取一个动态的细节', `动态id(${dynamic_id})`);
return card;
},
/**