feat(route): `/bangumi/tv/subject` 添加显示原名称参数 (#13139)
* feat(route): /bangumi/tv/subject add param showOriginalName * Update lib/v2/bangumi/tv/subject/index.js ---------
This commit is contained in:
parent
37574030e7
commit
06e67d6219
|
|
@ -12,6 +12,7 @@ module.exports = {
|
|||
'/tv/subject/:id/blogs': ['ylc395'],
|
||||
'/tv/subject/:id/comments': ['ylc395'],
|
||||
'/tv/subject/:id/topics': ['ylc395'],
|
||||
'/tv/subject/:id/:type?/:showOriginalName?': ['JimenezLi'],
|
||||
'/tv/topic/:id': ['ylc395'],
|
||||
'/tv/user/blog/:id': ['nczitzk'],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,55 +3,55 @@ const bangumiTV = {
|
|||
'.': [
|
||||
{
|
||||
title: '小组话题',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/group/:id',
|
||||
target: '/bangumi/tv/group/:id',
|
||||
},
|
||||
{
|
||||
title: '小组话题的新回复',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/group/topic/:id',
|
||||
target: '/bangumi/tv/topic/:id',
|
||||
},
|
||||
{
|
||||
title: '现实人物的新作品',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/person/:id',
|
||||
target: '/bangumi/tv/person/:id',
|
||||
},
|
||||
{
|
||||
title: '用户日志',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/user/:id',
|
||||
target: '/bangumi/tv/user/blog/:id',
|
||||
},
|
||||
{
|
||||
title: '条目的讨论',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/subject/:id',
|
||||
target: '/bangumi/tv/subject/:id/topics',
|
||||
},
|
||||
{
|
||||
title: '条目的评论',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/subject/:id',
|
||||
target: '/bangumi/tv/subject/:id/blogs',
|
||||
},
|
||||
{
|
||||
title: '条目的章节',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/subject/:id',
|
||||
target: '/bangumi/tv/subject/:id',
|
||||
},
|
||||
{
|
||||
title: '条目的吐槽箱',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/subject/:id',
|
||||
target: '/bangumi/tv/subject/:id/comments',
|
||||
},
|
||||
{
|
||||
title: '放送列表',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi',
|
||||
docs: 'https://docs.rsshub.app/routes/anime#bangumi-fan-zu-ji-hua',
|
||||
source: '/calendar',
|
||||
target: '/bangumi/tv/calendar/today',
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,8 +7,7 @@ module.exports = function (router) {
|
|||
router.get('/tv/calendar/today', require('./tv/calendar/today'));
|
||||
router.get('/tv/group/:id', require('./tv/group/topic'));
|
||||
router.get('/tv/person/:id', require('./tv/person'));
|
||||
router.get('/tv/subject/:id', require('./tv/subject'));
|
||||
router.get('/tv/subject/:id/:type', require('./tv/subject'));
|
||||
router.get('/tv/subject/:id/:type?/:showOriginalName?', require('./tv/subject'));
|
||||
router.get('/tv/topic/:id', require('./tv/group/reply'));
|
||||
router.get('/tv/user/blog/:id', require('./tv/user/blog'));
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@ const got = require('@/utils/got');
|
|||
const { parseDate } = require('@/utils/parse-date');
|
||||
const { art } = require('@/utils/render');
|
||||
const path = require('path');
|
||||
const { getLocalName } = require('./utils');
|
||||
|
||||
module.exports = async (subjectID) => {
|
||||
module.exports = async (subjectID, showOriginalName) => {
|
||||
const url = `https://api.bgm.tv/subject/${subjectID}?responseGroup=large`;
|
||||
const { data: epsInfo } = await got(url);
|
||||
const activeEps = [];
|
||||
|
|
@ -15,11 +16,11 @@ module.exports = async (subjectID) => {
|
|||
});
|
||||
|
||||
return {
|
||||
title: epsInfo.name_cn || epsInfo.name,
|
||||
title: getLocalName(epsInfo, showOriginalName),
|
||||
link: `https://bgm.tv/subject/${subjectID}`,
|
||||
description: epsInfo.summary,
|
||||
item: activeEps.map((e) => ({
|
||||
title: `ep.${e.sort} ${e.name_cn || e.name}`,
|
||||
title: `ep.${e.sort} ${getLocalName(e, showOriginalName)}`,
|
||||
description: art(path.resolve(__dirname, '../../templates/tv/ep.art'), {
|
||||
e,
|
||||
epsInfo,
|
||||
|
|
|
|||
|
|
@ -1,26 +1,28 @@
|
|||
const getComments = require('./comments.js');
|
||||
const getFromAPI = require('./offcial-subject-api.js');
|
||||
const getEps = require('./ep.js');
|
||||
const { queryToBoolean } = require('@/utils/readable-social');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const id = ctx.params.id;
|
||||
const type = ctx.params.type || 'ep';
|
||||
const showOriginalName = queryToBoolean(ctx.params.showOriginalName);
|
||||
let response;
|
||||
if (ctx.params.type) {
|
||||
switch (ctx.params.type) {
|
||||
case 'comments':
|
||||
response = await getComments(id, Number(ctx.query.minLength) || 0);
|
||||
break;
|
||||
case 'blogs':
|
||||
response = await getFromAPI('blog')(id);
|
||||
break;
|
||||
case 'topics':
|
||||
response = await getFromAPI('topic')(id);
|
||||
break;
|
||||
default:
|
||||
throw Error(`暂不支持对${ctx.params.type}的订阅`);
|
||||
}
|
||||
} else {
|
||||
response = await getEps(id);
|
||||
switch (type) {
|
||||
case 'ep':
|
||||
response = await getEps(id, showOriginalName);
|
||||
break;
|
||||
case 'comments':
|
||||
response = await getComments(id, Number(ctx.query.minLength) || 0);
|
||||
break;
|
||||
case 'blogs':
|
||||
response = await getFromAPI('blog')(id, showOriginalName);
|
||||
break;
|
||||
case 'topics':
|
||||
response = await getFromAPI('topic')(id, showOriginalName);
|
||||
break;
|
||||
default:
|
||||
throw Error(`暂不支持对${type}的订阅`);
|
||||
}
|
||||
ctx.state.data = response;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
const got = require('@/utils/got');
|
||||
const { parseDate } = require('@/utils/parse-date');
|
||||
const { getLocalName } = require('./utils');
|
||||
|
||||
module.exports = (type) => {
|
||||
const mapping = {
|
||||
|
|
@ -13,12 +14,12 @@ module.exports = (type) => {
|
|||
},
|
||||
};
|
||||
|
||||
return async (subjectID) => {
|
||||
return async (subjectID, showOriginalName) => {
|
||||
// 官方提供的条目API文档见 https://github.com/bangumi/api/blob/3f3fa6390c468816f9883d24be488e41f8946159/docs-raw/Subject-API.md
|
||||
const url = `https://api.bgm.tv/subject/${subjectID}?responseGroup=large`;
|
||||
const { data: subjectInfo } = await got(url);
|
||||
return {
|
||||
title: `${subjectInfo.name_cn || subjectInfo.name}的 Bangumi ${mapping[type].cn}`,
|
||||
title: `${getLocalName(subjectInfo, showOriginalName)}的 Bangumi ${mapping[type].cn}`,
|
||||
link: `https://bgm.tv/subject/${subjectInfo.id}/${mapping[type].en}`,
|
||||
item: subjectInfo[type].map((article) => ({
|
||||
title: `${article.user.nickname}:${article.title}`,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
const getLocalName = (obj, showOriginalName) => (showOriginalName ? obj.name || obj.name_cn : obj.name_cn || obj.name);
|
||||
|
||||
module.exports = {
|
||||
getLocalName,
|
||||
};
|
||||
|
|
@ -159,6 +159,18 @@ For more tags, please go to [Search torrent](https://bangumi.moe/search/index)
|
|||
|
||||
<Route author="magic-akari" example="/bangumi/tv/calendar/today" path="/bangumi/tv/calendar/today" radar="1"/>
|
||||
|
||||
### 条目的通用路由格式 {#bangumi-fan-zu-ji-hua-tiao-mu-di-tong-yong-lu-you-ge-shi}
|
||||
|
||||
<Route author="JimenezLi" example="/bangumi/tv/subject/328609/ep/true" path="/bangumi/tv/subject/:id/:type?/:showOriginalName?" paramsDesc={['条目 id, 在条目页面的地址栏查看', '条目类型,可选值为 `ep`, `comments`, `blogs`, `topics`,默认为 `ep`', '显示番剧标题原名,可选值 0/1/false/true,默认为 false']}>
|
||||
|
||||
:::caution
|
||||
|
||||
此通用路由仅用于对路由参数的描述,具体信息请查看下方与条目相关的路由
|
||||
|
||||
:::
|
||||
|
||||
</Route>
|
||||
|
||||
### 条目的章节 {#bangumi-fan-zu-ji-hua-tiao-mu-di-zhang-jie}
|
||||
|
||||
<Route author="SettingDust" example="/bangumi/tv/subject/240038" path="/bangumi/tv/subject/:id" paramsDesc={['条目 id, 在条目页面的地址栏查看']} radar="1"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue