diff --git a/docs/new-media.md b/docs/new-media.md index e72d61b40..b7e34b040 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -114,6 +114,18 @@ pageClass: routes +## CBNData + +### 看点 + + + +| 看点 | 餐饮零售 | 美妆个护 | 服饰鞋包 | 家电数码 | 宠物 | 营销 | +| ---- | -------- | -------- | -------- | -------- | ---- | ---- | +| | 2560 | 1 | 2559 | 59 | 2419 | 2484 | + + + ## cfan ### 新闻 diff --git a/lib/router.js b/lib/router.js index fb31bba26..89152ddf2 100644 --- a/lib/router.js +++ b/lib/router.js @@ -4130,6 +4130,9 @@ router.get('/caus/:category?', require('./routes/caus')); // 摩点 router.get('/modian/zhongchou/:category?/:sort?/:status?', require('./routes/modian/zhongchou')); +// CBNData +router.get('/cbndata/information/:category?', require('./routes/cbndata/information')); + // TANC 艺术新闻 router.get('/tanchinese/:category?', require('./routes/tanchinese')); diff --git a/lib/routes/cbndata/information.js b/lib/routes/cbndata/information.js new file mode 100644 index 000000000..db3bf21d0 --- /dev/null +++ b/lib/routes/cbndata/information.js @@ -0,0 +1,53 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const category = ctx.params.category || ''; + + const rootUrl = 'https://www.cbndata.com'; + const apiUrl = `${rootUrl}/api/v3/informations?page=1&per_page=10${category ? `&tag_id=${category}` : ''}`; + + const response = await got({ + method: 'get', + url: apiUrl, + }); + + const list = response.data.data.map((item) => ({ + title: item.id, + link: `${rootUrl}/api/v3/informations/show?id=${item.id}`, + pubDate: Date.parse(item.date), + })); + + 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, + }); + + item.link = `${rootUrl}/information/${item.title}`; + + item.title = detailResponse.data.data.title; + item.author = detailResponse.data.data.author; + item.description = detailResponse.data.data.content; + + return item; + }) + ) + ); + + let title = '看点'; + + for (const tag of response.data.home_tags) { + if (tag.id.toString() === category) { + title = tag.name; + break; + } + } + ctx.state.data = { + title: `${title} - CBNData消费站`, + link: `${rootUrl}/information${category ? `?tag_id=${category}` : ''}`, + item: items, + }; +};