feat(route): 增加bilibili合集的订阅 (#10470)

* Add files via upload

* style: auto format

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* style: auto format

* 这里是注释

* 更新collections.js为shininome

* 增加collection

* 修补分号

* 修补括号

我是傻子

* style: auto format

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
shininome 2022-08-16 23:24:22 +08:00 committed by GitHub
parent 4877301f23
commit a627bd6eb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 49 additions and 0 deletions

View File

@ -340,6 +340,10 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
</Route>
### 合集更新
<Route author="shininome" example="/bilibili/collection/245645656/529166" path="/bilibili/collection/:uid/:sid/:disableEmbed?" :paramsDesc="['用户 id可在 UP 主主页中找到','合集的id合集上面有','默认为开启内嵌视频,任意值为关闭']"/>
## Dev.to
### 最高职位

View File

@ -0,0 +1,34 @@
const got = require('@/utils/got');
const cache = require('./cache');
const utils = require('./utils');
const { parseDate } = require('@/utils/parse-date');
module.exports = async (ctx) => {
const uid = ctx.params.uid;
const sid = ctx.params.sid;
const disableEmbed = ctx.params.disableEmbed;
const [name, face] = await cache.getUsernameAndFaceFromUID(ctx, uid);
const response = await got({
method: 'get',
url: `https://api.bilibili.com/x/polymer/space/seasons_archives_list?mid=${uid}&season_id=${sid}&sort_reverse=false&page_num=1&page_size=30`,
headers: {
Referer: `https://space.bilibili.com/${uid}/channel/collectiondetail?sid=${sid}`,
},
});
const data = response.data;
ctx.state.data = {
title: `${name}${data.data.meta.name}`,
link: `https://space.bilibili.com/${uid}/channel/collectiondetail?sid=${sid}`,
description: `${name} 的 bilibili 合集`,
logo: face,
icon: face,
item: data.data.archives.map((item) => ({
title: item.title,
description: `${!disableEmbed ? `<br><br>${utils.iframe(item.aid)}` : ''}<br><img src="${item.pic}">`,
pubDate: parseDate(item.pubdate * 1000),
link: item.pubdate > utils.bvidTime && item.bvid ? `https://www.bilibili.com/video/${item.bvid}` : `https://www.bilibili.com/video/av${item.aid}`,
author: name,
})),
};
};

View File

@ -4,6 +4,7 @@ module.exports = {
'/blackboard': ['Qixingchen'],
'/bangumi/:seasonid': ['DIYgod'],
'/bangumi/media/:mediaid': ['DIYgod'],
'/collection/:uid/:sid/:disableEmbed?': ['shininome'],
'/fav/:uid/:fid/:disableEmbed?': ['Qixingchen'],
'/followings/article/:uid': ['woshiluo'],
'/followings/dynamic/:uid/:disableEmbed?': ['TigerCubDen'],

View File

@ -90,6 +90,15 @@ module.exports = {
source: '/:uid',
target: '/bilibili/user/bangumi/:uid',
},
{
title: '当前合集',
docs: 'https://docs.rsshub.app/social-media.html#bilibili',
source: '/:uid/channel/collectiondetail',
target: (params, url) => {
const sid = new URL(url).searchParams.get('sid');
return `/bilibili/collection/:uid/${sid}`;
},
},
],
manga: [
{

View File

@ -4,6 +4,7 @@ module.exports = (router) => {
router.get('/blackboard', require('./blackboard'));
router.get('/bangumi/:seasonid', require('./bangumi')); // 弃用
router.get('/bangumi/media/:mediaid', require('./bangumi'));
router.get('/collection/:uid/:sid/:disableEmbed?', require('./collection'));
router.get('/fav/:uid/:fid/:disableEmbed?', require('./fav'));
router.get('/followings/article/:uid', require('./followings_article'));
router.get('/followings/dynamic/:uid/:disableEmbed?', require('./followings_dynamic'));