From 89aef168688f8fee471f794090a1aaf85a3d08b3 Mon Sep 17 00:00:00 2001 From: Yubin Bai Date: Mon, 27 Apr 2020 20:02:02 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20new=20route=20=E6=96=B0=E6=B5=AA?= =?UTF-8?q?=E8=B4=A2=E7=BB=8F=EF=BC=8D=E5=9B=BD=E5=85=A7=20(#4558)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/finance.md | 6 ++++++ lib/router.js | 3 +++ lib/routes/sina/finance.js | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 lib/routes/sina/finance.js diff --git a/docs/finance.md b/docs/finance.md index 3902b3a531..44885feed1 100644 --- a/docs/finance.md +++ b/docs/finance.md @@ -10,6 +10,12 @@ pageClass: routes +## 新浪财经 + +### 新浪财经-国內 + + + ## WEEX 华尔街见闻旗下全球投资线上品牌 ### 资讯 diff --git a/lib/router.js b/lib/router.js index 0253f93a41..559689c80a 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1200,6 +1200,9 @@ router.get('/sina/rollnews', require('./routes/sina/rollnews')); // 新浪专栏创事记 router.get('/sina/csj', require('./routes/sina/chuangshiji')); +// 新浪财经-国內 +router.get('/sina/finance', require('./routes/sina/finance')); + // Animen router.get('/animen/news/:type', require('./routes/animen/news')); diff --git a/lib/routes/sina/finance.js b/lib/routes/sina/finance.js new file mode 100644 index 0000000000..b8f56805cd --- /dev/null +++ b/lib/routes/sina/finance.js @@ -0,0 +1,37 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const url = 'http://feed.sina.com.cn/api/roll/get?pageid=155&lid=1686&num=20&versionNumber=1.2.8&page=1&encode=utf-8'; + const response = await got.get(url); + const list = response.data.result.data; + + const out = await Promise.all( + list.map(async (data) => { + const title = data.title; + const date = data.intime * 1000; + const link = data.url; + + const description = await ctx.cache.tryGet(`sina-finance: ${link}`, async () => { + const response = await got.get(link); + const $ = cheerio.load(response.data); + + return $('#artibody').html(); + }); + + const single = { + title: title, + link, + description: description, + pubDate: new Date(date).toUTCString(), + }; + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: '新浪财经-国內', + link: 'http://finance.sina.com.cn/china/', + item: out, + }; +};