diff --git a/docs/README.md b/docs/README.md
index eef4ac897..faf2efb5b 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -825,6 +825,8 @@ GitHub 官方也提供了一些 RSS:
+
+
diff --git a/router.js b/router.js
index 7e72dd8cc..83df06ea3 100644
--- a/router.js
+++ b/router.js
@@ -119,6 +119,7 @@ router.get('/bangumi/subject/:id/:type', require('./routes/bangumi/subject'));
router.get('/bangumi/person/:id', require('./routes/bangumi/person'));
router.get('/bangumi/topic/:id', require('./routes/bangumi/group/reply.js'));
router.get('/bangumi/group/:id', require('./routes/bangumi/group/topic.js'));
+router.get('/bangumi/subject/:id', require('./routes/bangumi/subject'));
// 微博
router.get('/weibo/user/:uid', require('./routes/weibo/user'));
diff --git a/routes/bangumi/subject/ep.js b/routes/bangumi/subject/ep.js
new file mode 100644
index 000000000..3b6d16ffa
--- /dev/null
+++ b/routes/bangumi/subject/ep.js
@@ -0,0 +1,26 @@
+const axios = require('../../../utils/axios');
+const DateTime = require('luxon').DateTime;
+
+module.exports = async (subjectID) => {
+ const url = `https://api.bgm.tv/subject/${subjectID}/ep`;
+ const epsInfo = (await axios.get(url)).data;
+ const activeEps = [];
+
+ epsInfo.eps.map((e) => {
+ if (e.status !== 'NA') {
+ activeEps.push(e);
+ }
+ });
+
+ return {
+ title: `${epsInfo.name_cn}的Bangumi章节`,
+ link: `https://bgm.tv/subject/${subjectID}`,
+ item: activeEps.map((e) => ({
+ title: e.name_cn,
+ description: e.desc,
+ pubDate: DateTime.fromFormat(e.airdate, 'yyyy-L-dd'),
+ guid: e.id,
+ link: e.url,
+ })),
+ };
+};
diff --git a/routes/bangumi/subject/index.js b/routes/bangumi/subject/index.js
index 3b111e8d1..8eb61a088 100644
--- a/routes/bangumi/subject/index.js
+++ b/routes/bangumi/subject/index.js
@@ -1,22 +1,27 @@
const getComments = require('./comments.js');
const getFromAPI = require('./offcial-subject-api.js');
+const getEps = require('./ep.js');
+
module.exports = async (ctx) => {
const id = ctx.params.id;
let response;
- switch (ctx.params.type) {
- case 'comments':
- response = await getComments(id, Number(ctx.request.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}的订阅`);
+ if (ctx.params.type) {
+ switch (ctx.params.type) {
+ case 'comments':
+ response = await getComments(id, Number(ctx.request.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);
}
-
ctx.state.data = response;
};