diff --git a/docs/social-media.md b/docs/social-media.md index cdd3f22567..53d133b2c5 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -254,6 +254,10 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性 +### B 站每周必看 + + + ## Disqus ### 评论 diff --git a/lib/router.js b/lib/router.js index 72d6ff8154..4c2dbea1b4 100644 --- a/lib/router.js +++ b/lib/router.js @@ -65,6 +65,7 @@ router.get('/bilibili/vsearch/:kw/:order?/:disableEmbed?', require('./routes/bil router.get('/bilibili/followings/video/:uid/:disableEmbed?', require('./routes/bilibili/followings_video')); router.get('/bilibili/followings/article/:uid', require('./routes/bilibili/followings_article')); router.get('/bilibili/readlist/:listid', require('./routes/bilibili/readlist')); +router.get('/bilibili/weekly', require('./routes/bilibili/weekly_recommend')); // bangumi router.get('/bangumi/calendar/today', require('./routes/bangumi/calendar/today')); diff --git a/lib/routes/bilibili/weekly_recommend.js b/lib/routes/bilibili/weekly_recommend.js new file mode 100644 index 0000000000..029c2ff447 --- /dev/null +++ b/lib/routes/bilibili/weekly_recommend.js @@ -0,0 +1,36 @@ +const got = require('@/utils/got'); +const utils = require('./utils'); + +module.exports = async (ctx) => { + const disableEmbed = ctx.params.disableEmbed; + + const status_response = await got({ + method: 'get', + url: 'https://app.bilibili.com/x/v2/show/popular/selected/series?type=weekly_selected', + headers: { + Referer: 'https://www.bilibili.com/h5/weekly-recommend', + }, + }); + const weekly_number = status_response.data.data[0].number; + const weekly_name = status_response.data.data[0].name; + + const response = await got({ + method: 'get', + url: `https://app.bilibili.com/x/v2/show/popular/selected?type=weekly_selected&number=${weekly_number}`, + headers: { + Referer: `https://www.bilibili.com/h5/weekly-recommend?num=${weekly_number}&navhide=1`, + }, + }); + const data = response.data.data.list; + + ctx.state.data = { + title: 'B站每周必看', + link: 'https://www.bilibili.com/h5/weekly-recommend', + description: 'B站每周必看', + item: data.map((item) => ({ + title: item.title, + description: `${weekly_name} ${item.title}
${item.rcmd_reason}
${!disableEmbed ? `${utils.iframe(item.param)}` : ''}`, + link: `https://www.bilibili.com/video/av${item.param}`, + })), + }; +};