diff --git a/docs/finance.md b/docs/finance.md index 27440fb3d..7143b52b4 100644 --- a/docs/finance.md +++ b/docs/finance.md @@ -4,6 +4,44 @@ pageClass: routes # 金融 +## AI 财经社 + +### 最新文章 + + + +### 封面文章 + + + +### 推荐资讯 + + + +### 热点 & 深度 + + + +| 栏目 id | 栏目 | +| ----- | ------- | +| 14 | 热点 - 最新 | +| 5 | 热点 - 科技 | +| 9 | 热点 - 消费 | +| 7 | 热点 - 出行 | +| 13 | 热点 - 文娱 | +| 10 | 热点 - 教育 | +| 25 | 热点 - 地产 | +| 11 | 热点 - 更多 | +| 28 | 深度 - 出行 | +| 29 | 深度 - 科技 | +| 31 | 深度 - 消费 | +| 33 | 深度 - 教育 | +| 34 | 深度 - 更多 | +| 8 | 深度 - 地产 | +| 6 | 深度 - 文娱 | + + + ## BigQuant ### 专题报告 diff --git a/lib/v2/aicaijing/index.js b/lib/v2/aicaijing/index.js new file mode 100644 index 000000000..7ce5d7a39 --- /dev/null +++ b/lib/v2/aicaijing/index.js @@ -0,0 +1,73 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); + +module.exports = async (ctx) => { + const category = ctx.params.category ?? 'latest'; + const id = ctx.params.id ?? 14; + + const titles = { + 14: '热点 - 最新', + 5: '热点 - 科技', + 9: '热点 - 消费', + 7: '热点 - 出行', + 13: '热点 - 文娱', + 10: '热点 - 教育', + 25: '热点 - 地产', + 11: '热点 - 更多', + 28: '深度 - 出行', + 29: '深度 - 科技', + 31: '深度 - 消费', + 33: '深度 - 教育', + 34: '深度 - 更多', + 8: '深度 - 地产', + 6: '深度 - 文娱', + }; + + const categories = { + latest: { + url: '', + title: '最新文章', + }, + recommend: { + url: '&isRecommend=true', + title: '推荐资讯', + }, + cover: { + url: '&position=1', + title: '封面文章', + }, + information: { + url: `&categoryId=${id}`, + title: titles[id], + }, + }; + + const rootUrl = 'https://www.aicaijing.com.cn'; + const apiRootUrl = 'https://api.aicaijing.com.cn'; + const apiUrl = `${apiRootUrl}/article/detail/list?size=${ctx.query.limit ?? 50}&page=1${categories[category].url}`; + + const response = await got({ + method: 'get', + url: apiUrl, + }); + + const items = response.data.data.items.map((item) => ({ + title: item.title, + link: `${rootUrl}/article/${item.articleId}`, + author: item.userInfo.nickname, + pubDate: parseDate(item.createTime), + category: [item.category.name].concat(item.tags.map((t) => t.name)), + description: art(path.join(__dirname, 'templates/description.art'), { + image: item.cover, + description: item.content, + }), + })); + + ctx.state.data = { + title: `AI 财经社 - ${categories[category].title}`, + link: rootUrl, + item: items, + }; +}; diff --git a/lib/v2/aicaijing/maintainer.js b/lib/v2/aicaijing/maintainer.js new file mode 100644 index 000000000..22423b834 --- /dev/null +++ b/lib/v2/aicaijing/maintainer.js @@ -0,0 +1,6 @@ +module.exports = { + '/cover': ['nczitzk'], + '/information/:id?': ['nczitzk'], + '/latest': ['nczitzk'], + '/recommend': ['nczitzk'], +}; diff --git a/lib/v2/aicaijing/radar.js b/lib/v2/aicaijing/radar.js new file mode 100644 index 000000000..2fd76cfd5 --- /dev/null +++ b/lib/v2/aicaijing/radar.js @@ -0,0 +1,31 @@ +module.exports = { + 'aicaijing.com': { + _name: 'AI 财经社', + www: [ + { + title: '最新文章', + docs: 'https://docs.rsshub.app/finance.html#ai-cai-jing-she-zui-xin-wen-zhang', + source: ['/'], + target: '/aicaijing/latest', + }, + { + title: '封面文章', + docs: 'https://docs.rsshub.app/finance.html#ai-cai-jing-she-feng-mian-wen-zhang', + source: ['/'], + target: '/aicaijing/cover', + }, + { + title: '推荐资讯', + docs: 'https://docs.rsshub.app/finance.html#ai-cai-jing-she-tui-jian-zi-xun', + source: ['/'], + target: '/aicaijing/recommend', + }, + { + title: '热点 & 深度', + docs: 'https://docs.rsshub.app/finance.html#ai-cai-jing-she-re-dian-shen-du', + source: ['/information/:id', '/'], + target: '/aicaijing/information/:id?', + }, + ], + }, +}; diff --git a/lib/v2/aicaijing/router.js b/lib/v2/aicaijing/router.js new file mode 100644 index 000000000..ae85a3d07 --- /dev/null +++ b/lib/v2/aicaijing/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/:category?/:id?', require('./')); +}; diff --git a/lib/v2/aicaijing/templates/description.art b/lib/v2/aicaijing/templates/description.art new file mode 100644 index 000000000..c823516c9 --- /dev/null +++ b/lib/v2/aicaijing/templates/description.art @@ -0,0 +1,4 @@ +{{ if image }} + +{{ /if }} +{{@ description }} \ No newline at end of file