diff --git a/docs/traditional-media.md b/docs/traditional-media.md index 57f21f0243f9f9..5a6e83bfc8063d 100644 --- a/docs/traditional-media.md +++ b/docs/traditional-media.md @@ -514,6 +514,92 @@ Type 栏目: ## 经济观察网 +### 栏目 + + + +::: tip 提示 + +以下小标题即栏目 `column`,标题下表格中为对应栏目的分类 `category`,两者需要配合使用。 + +如订阅 **时事・政策・宏观** 栏目中的 **大宗商品** 分类,填入 [`/eeo/yaowen/dzsp`](http://rsshub.app/eeo/yaowen/dzsp)。 + +若栏目下没有分类,如 **商业产业** 栏目,直接填入 [`/eeo/shangyechanye`](http://rsshub.app/eeo/shangyechanye)。 + +或者欲订阅该栏目下的所有分类,如订阅 **时事・政策・宏观** 中的所有分类,则直接将分类 `category` 留空,即 [`/eeo/yaowen`](http://rsshub.app/eeo/yaowen)。 + +::: + +商业产业 shangyechanye [`/eeo/shangyechanye`](http://rsshub.app/eeo/shangyechanye) + +财经 caijing [`/eeo/caijing`](http://rsshub.app/eeo/caijing) + +上市公司 ssgsn [`/eeo/ssgsn`](http://rsshub.app/eeo/ssgsn) + +地产 dichan [`/eeo/dichan`](http://rsshub.app/eeo/dichan) + +汽车 qiche [`/eeo/qiche`](http://rsshub.app/eeo/qiche) + +TMT tmt [`/eeo/tmt`](http://rsshub.app/eeo/tmt) + +评论 pinglun [`/eeo/pinglun`](http://rsshub.app/eeo/pinglun) + +研究院 yanjiuyuan [`/eeo/yanjiuyuan`](http://rsshub.app/eeo/yanjiuyuan) + +::: tip 建议 + +请优先选择订阅以上栏目,下面的栏目大部分已经很久没有更新。 + +::: + +两会 lianghui [`/eeo/lianghui`](http://rsshub.app/eeo/lianghui) + +时事・政策・宏观 yaowen [`/eeo/yaowen`](http://rsshub.app/eeo/yaowen) + +| 时事 | 政策 | 宏观 | 智库 | 首席观点 | 大宗商品 | +| ----- | ------ | ------- | ---------- | -------- | -------- | +| dashi | hfggzc | hfshuju | hfdongjian | sxgd | dzsp | + +证券・资本・理财 jinrong [`/eeo/jinrong`](http://rsshub.app/eeo/jinrong) + +| 债市 | 资本 | 理财 | 证券 | 银行 | +| ------- | ----- | ----- | --------- | ----- | +| zhaishi | ziben | licai | zhengquan | jijin | + +| 保险 | PE / 创投 | 科创板 | 新三板 | 互联网金融 | +| ------- | --------- | ----------- | --------- | ---------- | +| jinkong | chuangtou | kechuangban | xinsanban | hlwjr | + +新科技・互联网・O2O shangye [`/eeo/shangye`](http://rsshub.app/eeo/shangye) + +| 新科技 | 互联网 | 大健康 | O2O | 花蕾之约 | 创业家笔记 | 环境 | +| ----------- | --------- | ------ | ----- | ------------ | ---------- | -------- | +| xinnengyuan | dianshang | yiliao | wuliu | hualeizhiyue | cyjbj | huanjing | + +房产・汽车・消费 fcqcxf [`/eeo/fcqcxf`](http://rsshub.app/eeo/fcqcxf) + +| 房产 | 汽车 | 消费 | +| ------ | ----- | ------- | +| dichan | qiche | xiaofei | + +影视・体育・娱乐 yule [`/eeo/yule`](http://rsshub.app/eeo/yule) + +| 娱乐 | 影视 | 体育 | 教育 | +| ---- | ------- | ---- | ------ | +| yule | yingshi | tiyu | jiaoyu | + +观察家・书评・思想 gcj [`/eeo/gcj`](http://rsshub.app/eeo/gcj) + +| 观察家 | 专栏 | 个人历史 | 书评 | +| ---------- | -------- | -------- | ------- | +| guanchajia | zhuanlan | lishi | shuping | + +| 纵深 | 文化 | 领读 | +| -------- | ------ | ------ | +| zongshen | wenhua | lingdu | + + + ### 分类资讯 diff --git a/lib/router.js b/lib/router.js index dd3156f9c99329..ece0ed9ce34a74 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1121,7 +1121,7 @@ router.get('/xiachufang/user/created/:id', require('./routes/xiachufang/user/cre router.get('/xiachufang/popular/:timeframe?', require('./routes/xiachufang/popular')); // 经济观察报 -router.get('/eeo/:category?', require('./routes/eeo/index')); +router.get('/eeo/:column?/:category?', require('./routes/eeo/index')); // 腾讯视频 router.get('/tencentvideo/playlist/:id', require('./routes/tencent/video/playlist')); diff --git a/lib/routes/eeo/index.js b/lib/routes/eeo/index.js index 14cd4f22cc6601..9dad9d582c3e3d 100644 --- a/lib/routes/eeo/index.js +++ b/lib/routes/eeo/index.js @@ -1,47 +1,84 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); + +const legacyUrls = { + 1: '/yaowen/dashi', + 2: '/yaowen/hfggzc', + 3: '/jinrong/zhengquan', + 4: '/jinrong/ziben', + 5: '/jinrong/licai', + 6: '/shangye/xinnengyuan', + 7: '/shangye/yiliao', + 8: '/fcqcxf/dichan', + 9: '/fcqcxf/qiche', + 10: '/fcqcxf/xiaofei', + 11: '/yule/yingshi', + 12: '/yule/yule', + 13: '/yule/tiyu', + 14: '/yule/jiaoyu', + 15: '/gcj/guanchajia', + 16: '/gcj/zhuanlan', + 17: '/gcj/shuping', + 18: '/gcj/lishi', + 19: '/yaowen/hfshuju', +}; module.exports = async (ctx) => { - const category = ctx.params.category || '观察家'; - const category_url_relation = { - '01': 'http://www.eeo.com.cn/yaowen/dashi/', - '02': 'http://www.eeo.com.cn/yaowen/hfggzc/', - '03': 'http://www.eeo.com.cn/jinrong/zhengquan/', - '04': 'http://www.eeo.com.cn/jinrong/ziben/', - '05': 'http://www.eeo.com.cn/jinrong/licai/', - '06': 'http://www.eeo.com.cn/shangye/xinnengyuan/', - '07': 'http://www.eeo.com.cn/shangye/yiliao/', - '08': 'http://www.eeo.com.cn/fcqcxf/dichan/', - '09': 'http://www.eeo.com.cn/fcqcxf/qiche/', - 10: 'http://www.eeo.com.cn/fcqcxf/xiaofei/', - 11: 'http://www.eeo.com.cn/yule/yingshi/', - 12: 'http://www.eeo.com.cn/yule/yule/', - 13: 'http://www.eeo.com.cn/yule/tiyu/', - 14: 'http://www.eeo.com.cn/yule/jiaoyu/', - 15: 'http://www.eeo.com.cn/gcj/guanchajia/', - 16: 'http://www.eeo.com.cn/gcj/zhuanlan/', - 17: 'http://www.eeo.com.cn/gcj/shuping/', - 18: 'http://www.eeo.com.cn/gcj/lishi/', - 19: 'http://www.eeo.com.cn/yaowen/hfshuju/', - }; + const column = ctx.params.column || 'shangyechanye'; + const category = ctx.params.category || ''; + + const rootUrl = 'http://www.eeo.com.cn'; + let currentUrl = rootUrl; + + if (parseInt(column)) { + currentUrl += legacyUrls[parseInt(column)]; + } else { + currentUrl += `/${column}/${category}`; + } const response = await got({ method: 'get', - url: category_url_relation[category], + url: currentUrl, }); - const data = response.data; - const $ = cheerio.load(data); - const list = $('#lyp_article li').get(); - const result = list.map((item) => ({ - title: $(item).find('div span a').text(), - description: $(item).find('div p').text(), - pubDate: new Date().toUTCString(), - link: $(item).find('>a').attr('href'), - })); + + const $ = cheerio.load(response.data); + + const list = $('#lyp_article li div span a') + .slice(0, 15) + .map((_, item) => { + item = $(item); + return { + 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); + + content('.xd-xd-xd-rwm, .xd_zuozheinfo, .xd-lj, .xd-gg').remove(); + + item.title = content('h1').text(); + item.description = content('.xd-nr').html(); + item.pubDate = timezone(new Date(content('.thiszihao-box-add').nextUntil('.cls').find('span').eq(0).text()), +8); + + return item; + }) + ) + ); + ctx.state.data = { - title: '经济观察网', - link: 'http://www.eeo.com.cn', - description: '经济观察网是《经济观察报》社倾力制作的全新商业资讯平台', - item: result, + title: $('title').text().replace('_', ' - '), + link: currentUrl, + item: items, + description: '经济观察网是《经济观察报》社倾力制作的全新商业资讯平台,经济观察网冷静理智的报道风格,并糅合最新的网络技术,拥有专业的采编力量以及独家的新闻报道,为您提供及时、便捷、专业的信息服务。', }; };