diff --git a/docs/social-media.md b/docs/social-media.md index 914cf8e39a..47340ead3c 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -238,6 +238,10 @@ pageClass: routes +### 专栏文集 + + + ## Disqus ### 评论 diff --git a/lib/router.js b/lib/router.js index 6bbfb7dd67..18812f588e 100644 --- a/lib/router.js +++ b/lib/router.js @@ -41,6 +41,7 @@ router.get('/bilibili/audio/:id', require('./routes/bilibili/audio')); router.get('/bilibili/vsearch/:kw/:order?', require('./routes/bilibili/vsearch')); router.get('/bilibili/followings/video/:uid', 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')); // bangumi router.get('/bangumi/calendar/today', require('./routes/bangumi/calendar/today')); diff --git a/lib/routes/bilibili/readlist.js b/lib/routes/bilibili/readlist.js new file mode 100644 index 0000000000..382133ef22 --- /dev/null +++ b/lib/routes/bilibili/readlist.js @@ -0,0 +1,31 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const listid = ctx.params.listid; + const listurl = `https://www.bilibili.com/read/readlist/${listid}`; + + const response = await got({ + method: 'get', + url: `https://api.bilibili.com/x/article/list/web/articles?id=${listid}&jsonp=jsonp`, + headers: { + Referer: listurl, + }, + }); + const data = response.data.data; + + ctx.state.data = { + title: `bilibili 专栏文集 - ${data.list.name}`, + link: `https://www.bilibili.com/read/readlist/${listid}`, + image: data.list.image_url, + description: data.list.summary ? data.list.summary : '作者很懒,还木有写简介.....((/- -)/', + item: + data.articles && + data.articles.map((item) => ({ + title: item.title, + author: data.author.name, + description: `${item.summary}…
`, + pubDate: new Date(item.publish_time * 1000).toUTCString(), + link: listurl, + })), + }; +};