From eae7599263d4fff86432397d384b0487406e7dd3 Mon Sep 17 00:00:00 2001 From: Ethan Shen Date: Sat, 26 Dec 2020 13:45:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20add=20=E4=B9=9D=E4=B8=89=E5=AD=A6?= =?UTF-8?q?=E7=A4=BE=E5=88=86=E7=B1=BB=20(#6518)?= 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/93/index.js | 51 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 lib/routes/93/index.js diff --git a/docs/new-media.md b/docs/new-media.md index c5c0f8a308..61c4f4322d 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -1211,6 +1211,12 @@ others = 热点新闻 + 滚动新闻 +## 九三学社 + +### 分类 + + + ## 巨潮资讯 diff --git a/lib/router.js b/lib/router.js index accf334551..bb8c8d8505 100644 --- a/lib/router.js +++ b/lib/router.js @@ -3743,6 +3743,9 @@ router.get('/idaily/today', require('./routes/idaily/index')); // 北屋 router.get('/northhouse/:category?', require('./routes/northhouse/index')); +// 九三学社 +router.get('/93/:category?', require('./routes/93/index')); + // 科学网 router.get('/sciencenet/blog/:type?/:time?/:sort?', require('./routes/sciencenet/blog')); diff --git a/lib/routes/93/index.js b/lib/routes/93/index.js new file mode 100644 index 0000000000..d317f9c0bf --- /dev/null +++ b/lib/routes/93/index.js @@ -0,0 +1,51 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const category = ctx.params.category || 'lxzn-yzjy'; + + const rootUrl = 'http://www.93.gov.cn'; + const currentUrl = `${rootUrl}/${category}`; + const response = await got({ + method: 'get', + url: currentUrl, + }); + + const $ = cheerio.load(response.data); + + const list = $('li.clearfix a') + .slice(0, 15) + .map((_, item) => { + item = $(item); + return { + title: item.text(), + link: `${rootUrl}${item.attr('href')}`, + pubDate: new Date(item.next().text()).toUTCString(), + }; + }) + .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.description = content('.pageContent').html(); + item.author = content('.pageTitle ul li').eq(1).text().replace('来源:', ''); + + return item; + }) + ) + ); + + ctx.state.data = { + title: $('title').text(), + link: currentUrl, + item: items, + }; +};