diff --git a/docs/README.md b/docs/README.md index 4b9b57eef..6f0bbd4e2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -31,14 +31,14 @@ RSSHub 是一个轻量、易于扩展的 RSS 生成器,可以给任何奇奇 ### 输出格式 -RSSHub 同时支持 RSS 2.0、Atom 和 json 输出格式,在路由末尾添加 `.rss` `.atom` 或 `.json` 即可请求对应输出格式,缺省为 RSS 2.0 +RSSHub 同时支持 RSS 2.0、Atom 和 [JSON Feed](https://jsonfeed.org/) 输出格式,在路由末尾添加 `.rss` `.atom` 或 `.json` 即可请求对应输出格式,缺省为 RSS 2.0 举例: * 缺省 RSS 2.0 - [https://rsshub.app/jianshu/home](https://rsshub.app/jianshu/home) * RSS 2.0 - [https://rsshub.app/jianshu/home.rss](https://rsshub.app/jianshu/home.rss) * Atom - [https://rsshub.app/jianshu/home.atom](https://rsshub.app/jianshu/home.atom) -* json - [https://rsshub.app/jianshu/home.json](https://rsshub.app/jianshu/home.json) +* JSON Feed - [https://rsshub.app/jianshu/home.json](https://rsshub.app/jianshu/home.json) * 和 filter 或其他 URL query 一起使用 [https://rsshub.app/bilibili/user/coin/2267573.atom?filter=微小微|赤九玖|暴走大事件](https://rsshub.app/bilibili/user/coin/2267573.atom?filter=微小微|赤九玖|暴走大事件) ## RSSHub diff --git a/middleware/template.js b/middleware/template.js index bdfc29a66..2691d6fc6 100644 --- a/middleware/template.js +++ b/middleware/template.js @@ -20,6 +20,10 @@ module.exports = async (ctx, next) => { template = path.resolve(__dirname, '../views/rss.art'); break; case 'json': + template = path.resolve(__dirname, '../views/json.art'); + ctx.set({ + 'Content-Type': 'application/json; charset=UTF-8', + }); break; default: template = path.resolve(__dirname, '../views/rss.art'); @@ -34,11 +38,6 @@ module.exports = async (ctx, next) => { }; if (template) { ctx.body = art(template, data); - } else { - ctx.set({ - 'Content-Type': 'application/json; charset=UTF-8', - }); - ctx.body = JSON.stringify(data); } } }; diff --git a/views/json.art b/views/json.art new file mode 100644 index 000000000..a4fb8c1ff --- /dev/null +++ b/views/json.art @@ -0,0 +1,28 @@ +{ + "version": "https://jsonfeed.org/version/1", + "title": "{{ title || 'RSSHub' }}", + "home_page_url": "{{ link || 'https://github.com/DIYgod/RSSHub' }}", + "description": "{{ description || title }} - 使用 RSSHub(https://github.com/DIYgod/RSSHub) 构建", + "author": { + "name": "{{@ author || 'RSSHub' }}" + }, + "items": [ + {{each item}} + { + "id": "{{ $value.guid || $value.link }}", + "url": "{{ $value.link }}", + "external_url": "", + "title": "{{ $value.title }}", + "content_html": "", + "content_text": "", + "summary": "{{ $value.description }}", + "image": "{{ $value.image }}", + "banner_image": "", + "date_published": "{{ $value.pubDate }}", + "date_modified": "", + "tags": [], + "attachments": [] + }, + {{ /each }} + ] +} \ No newline at end of file