From 6c84eb496c7c3b8c21bdd3b59eea998755aa3f11 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Mon, 25 Nov 2019 15:41:11 +0800 Subject: [PATCH] feat: optimize bilibili ranking api --- lib/routes/bilibili/ranking.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/routes/bilibili/ranking.js b/lib/routes/bilibili/ranking.js index 3e20bbd83d..7a0c070a45 100644 --- a/lib/routes/bilibili/ranking.js +++ b/lib/routes/bilibili/ranking.js @@ -1,5 +1,4 @@ const got = require('@/utils/got'); -const utils = require('./utils'); module.exports = async (ctx) => { const rid = ctx.params.rid || '0'; @@ -28,11 +27,28 @@ module.exports = async (ctx) => { list = list.concat(list[i].others); } } - list = list.map((i) => i.aid); - const resultItems = await utils.ProcessFeed(list, ctx.cache); + list = list.map((i) => i.aid).slice(0, 100); + const detailsResponse = await got({ + method: 'get', + url: `https://api.bilibili.com/x/article/archives?ids=${list.join(',')}`, + }); ctx.state.data = { title: `bilibili ${day}日排行榜-${rid_type}-${arc_type1}`, link: `https://www.bilibili.com/ranking/all/${rid}/0/${day}`, - item: resultItems, + item: list.map((aid) => { + const data = detailsResponse.data.data[aid]; + if (data) { + return { + title: data.title, + description: `${data.desc}
`, + pubDate: new Date(data.pubdate * 1000).toUTCString(), + author: data.owner.name, + link: `https://www.bilibili.com/video/av${aid}`, + guid: `https://www.bilibili.com/video/av${aid}`, + }; + } else { + return null; + } + }), }; };