diff --git a/assets/radar-rules.js b/assets/radar-rules.js index 438da9bd17..5d11f5397b 100644 --- a/assets/radar-rules.js +++ b/assets/radar-rules.js @@ -43,6 +43,14 @@ target: '/bilibili/user/video/:uid', }, ], + manga: [ + { + title: '漫画更新', + docs: 'https://docs.rsshub.app/social-media.html#bilibili-man-hua-geng-xin', + source: '/detail/:comicid', + target: '/bilibili/manga/update/:comicid', + }, + ], }, 'weibo.com': { _name: '微博', diff --git a/docs/social-media.md b/docs/social-media.md index 3fc33648a8..0ae93bf827 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -258,6 +258,10 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性 +### 漫画更新 + + + ## Disqus ### 评论 diff --git a/lib/router.js b/lib/router.js index bdf9ea10f5..5488be3359 100644 --- a/lib/router.js +++ b/lib/router.js @@ -75,6 +75,7 @@ router.get('/bilibili/followings/video/:uid/:disableEmbed?', require('./routes/b 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')); +router.get('/bilibili/manga/update/:comicid', require('./routes/bilibili/manga_update')); // bangumi router.get('/bangumi/calendar/today', require('./routes/bangumi/calendar/today')); diff --git a/lib/routes/bilibili/manga_update.js b/lib/routes/bilibili/manga_update.js new file mode 100644 index 0000000000..34eb3d5db6 --- /dev/null +++ b/lib/routes/bilibili/manga_update.js @@ -0,0 +1,33 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const comic_id = ctx.params.comicid.startsWith('mc') ? ctx.params.comicid.replace('mc', '') : ctx.params.comicid; + const link = `https://manga.bilibili.com/detail/mc${comic_id}`; + + const response = await got({ + method: 'POST', + url: `https://manga.bilibili.com/twirp/comic.v2.Comic/ComicDetail?device=pc&platform=web`, + json: { + comic_id: Number(comic_id), + }, + headers: { + Referer: link, + }, + }); + const data = response.data.data; + const author = data.author_name.join(', '); + + ctx.state.data = { + title: `${data.title} - 哔哩哔哩漫画`, + link: link, + image: data.vertical_cover, + description: data.classic_lines, + item: data.ep_list.slice(0, 20).map((item) => ({ + title: item.short_title === item.title ? item.short_title : `${item.short_title} ${item.title}`, + author: author, + description: ``, + pubDate: new Date(item.pub_time + ' +0800'), + link: `https://manga.bilibili.com/mc${comic_id}/${item.id}`, + })), + }; +};