From d84e7a2a5b73f5cbb04273e8b64c766447b0f93a Mon Sep 17 00:00:00 2001 From: Ethan Shen Date: Wed, 29 Jul 2020 02:23:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20add=20=E7=9C=8B=E7=82=B9=E5=BF=AB?= =?UTF-8?q?=E6=8A=A5=20(#5185)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/new-media.md | 6 ++++++ lib/router.js | 3 +++ lib/routes/kuaibao/index.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 lib/routes/kuaibao/index.js diff --git a/docs/new-media.md b/docs/new-media.md index c0eb32413..71b6315dc 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -706,6 +706,12 @@ area 分区选项 +## 看点快报 + +### 首页 + + + ## 快科技(原驱动之家) ### 最新新闻 diff --git a/lib/router.js b/lib/router.js index fb007326e..69c1a1270 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2968,6 +2968,9 @@ router.get('/12379', require('./routes/12379/index')); router.get('/ngbj/today', require('./routes/niaogebiji/today')); router.get('/ngbj/cat/:cat', require('./routes/niaogebiji/cat')); +// 看点快报 +router.get('/kuaibao', require('./routes/kuaibao/index')); + // SocialBeta router.get('/socialbeta/home', require('./routes/socialbeta/home')); router.get('/socialbeta/hunt', require('./routes/socialbeta/hunt')); diff --git a/lib/routes/kuaibao/index.js b/lib/routes/kuaibao/index.js new file mode 100644 index 000000000..bb5ad15bd --- /dev/null +++ b/lib/routes/kuaibao/index.js @@ -0,0 +1,34 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const currentUrl = 'http://kuaibao.qq.com/n/getKbMainpageInfo'; + const response = await got({ + method: 'get', + url: currentUrl, + }); + + const articleList = response.data.newslist.map((item) => ({ + title: item.title, + link: `https://kuaibao.qq.com/getSubNewsContent?id=${item.id}&style=json`, + pubDate: new Date(item.time).toUTCString(), + })); + + ctx.state.data = { + title: '看点快报 - 首页', + link: 'http://kuaibao.qq.com/', + item: await Promise.all( + articleList.map( + async (item) => + await ctx.cache.tryGet(item.link, async () => { + const contentResponse = await got({ + method: 'get', + url: item.link, + }); + item.link = contentResponse.data.url || contentResponse.data.short_url; + item.description = contentResponse.data.content.text; + return item; + }) + ) + ), + }; +};