diff --git a/docs/traditional-media.md b/docs/traditional-media.md index 981664ada2..aec2736010 100644 --- a/docs/traditional-media.md +++ b/docs/traditional-media.md @@ -385,6 +385,10 @@ Category 列表: +### 财新数据通 + + + ### 财新一线 diff --git a/lib/router.js b/lib/router.js index 3ebd3a5ea9..25a2eabf6e 100644 --- a/lib/router.js +++ b/lib/router.js @@ -394,12 +394,10 @@ router.get('/cctv-special/:id?', require('./routes/cctv/special')); // 财新博客 router.get('/caixin/blog/:column', require('./routes/caixin/blog')); -// 财新 -router.get('/caixin/:column/:category', require('./routes/caixin/category')); -// 财新首页 router.get('/caixin/article', require('./routes/caixin/article')); -// 财新一线 +router.get('/caixin/database', require('./routes/caixin/database')); router.get('/caixin/yxnews', require('./routes/caixin/yxnews')); +router.get('/caixin/:column/:category', require('./routes/caixin/category')); // 草榴社区 router.get('/t66y/post/:tid', require('./routes/t66y/post')); diff --git a/lib/routes/caixin/database.js b/lib/routes/caixin/database.js new file mode 100644 index 0000000000..228ee7cb07 --- /dev/null +++ b/lib/routes/caixin/database.js @@ -0,0 +1,49 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const rootUrl = 'https://database.caixin.com'; + const currentUrl = `${rootUrl}/news`; + const response = await got({ + method: 'get', + url: currentUrl, + }); + + const $ = cheerio.load(response.data); + + const list = $('h4 a') + .map((_, item) => { + item = $(item); + return { + title: item.text(), + link: item.attr('href'), + }; + }) + .get(); + + const items = await Promise.all( + list.map( + async (item) => + await ctx.cache.tryGet(item.link, async () => { + const detailResponse = await got({ + method: 'get', + url: item.link, + }); + const content = cheerio.load(detailResponse.data); + + item.pubDate = timezone(parseDate(content('#pubtime_baidu').text()), +8); + item.description = `

${content('#subhead').html()}

`; + + return item; + }) + ) + ); + + ctx.state.data = { + title: '财新数据通 - 专享资讯', + link: currentUrl, + item: items, + }; +};