From 4accd2df2b970cd87375235f11ff489db60e3e25 Mon Sep 17 00:00:00 2001 From: shanmiteko Date: Sat, 6 Nov 2021 11:06:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A0=B9=E6=8D=AE=E7=82=B9=E8=B5=9E?= =?UTF-8?q?=E5=8E=BB=E9=87=8D(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/searcher.js | 51 ++++++++++++++++++++++++++++++++++---------- lib/net/bili.js | 1 + 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/lib/core/searcher.js b/lib/core/searcher.js index 2b5ee2c..52531e3 100644 --- a/lib/core/searcher.js +++ b/lib/core/searcher.js @@ -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 => { diff --git a/lib/net/bili.js b/lib/net/bili.js index e88b427..ec51e73 100644 --- a/lib/net/bili.js +++ b/lib/net/bili.js @@ -372,6 +372,7 @@ const bili_client = { log.warn('获取一个动态的细节', `动态(${dynamic_id})不存在`); return; } + log.info('获取一个动态的细节', `动态id(${dynamic_id})`); return card; }, /**