diff --git a/docs/bbs.md b/docs/bbs.md index 631aaa0e2..26bbdaed9 100644 --- a/docs/bbs.md +++ b/docs/bbs.md @@ -673,6 +673,12 @@ pageClass: routes +## 火线 + +### Zone + + + ## 集思录 ### 广场 diff --git a/lib/v2/huoxian/maintainer.js b/lib/v2/huoxian/maintainer.js new file mode 100644 index 000000000..862efe52f --- /dev/null +++ b/lib/v2/huoxian/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/zone': ['p7e4'], +}; diff --git a/lib/v2/huoxian/radar.js b/lib/v2/huoxian/radar.js new file mode 100644 index 000000000..2c9218585 --- /dev/null +++ b/lib/v2/huoxian/radar.js @@ -0,0 +1,11 @@ +module.exports = { + 'huoxian.cn': { + _name: '火线', + zone: [ + { + title: 'Zone', + docs: 'https://docs.rsshub.app/bbs.html#huo-xian', + }, + ], + }, +}; diff --git a/lib/v2/huoxian/router.js b/lib/v2/huoxian/router.js new file mode 100644 index 000000000..da6f81bf0 --- /dev/null +++ b/lib/v2/huoxian/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/zone', require('./zone')); +}; diff --git a/lib/v2/huoxian/zone.js b/lib/v2/huoxian/zone.js new file mode 100644 index 000000000..3ecd56a65 --- /dev/null +++ b/lib/v2/huoxian/zone.js @@ -0,0 +1,19 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const { data } = await got('https://zone.huoxian.cn/api/discussions?sort=-createdAt'); + const items = data.data.map((item) => ({ + title: item.attributes.title, + link: `https://zone.huoxian.cn/d/${item.attributes.slug}`, + description: data.included.find((i) => i.id === item.relationships.firstPost.data.id).attributes.contentHtml, + pubDate: parseDate(item.attributes.createdAt), + author: data.included.find((i) => i.id === item.relationships.user.data.id).attributes.displayName, + category: data.included.filter((i) => item.relationships.tags.data.map((t) => t.id).includes(i.id) && i.type === 'tags').map((i) => i.attributes.name), + })); + ctx.state.data = { + title: '火线 Zone-安全攻防社区', + link: 'https://zone.huoxian.cn/', + item: items, + }; +};