From 92e555365c901b34b551164b1c8c651d64500130 Mon Sep 17 00:00:00 2001 From: Jeason0228 <44083849+Jeason0228@users.noreply.github.com> Date: Thu, 31 Oct 2019 14:21:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20add=20=E3=80=90=E6=B7=B1=E5=9C=B3?= =?UTF-8?q?=E8=AF=81=E5=88=B8=E4=BA=A4=E6=98=93=E6=89=80-=E9=97=AE?= =?UTF-8?q?=E8=AF=A2=E5=87=BD=E4=BB=B6=E3=80=91Rss=20(#3351)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/other.md | 4 ++ lib/router.js | 1 + lib/routes/szse/inquire.js | 89 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 lib/routes/szse/inquire.js diff --git a/docs/other.md b/docs/other.md index 9294505d6f..db3bfe63a1 100644 --- a/docs/other.md +++ b/docs/other.md @@ -311,6 +311,10 @@ type 为 all 时,category 参数不支持 cost 和 free +### 问询函件(全部/主板/中小企业板/创业板) + + + ## 搜狗 ### 搜狗特色 LOGO diff --git a/lib/router.js b/lib/router.js index 358c53006e..9611b87db9 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1756,6 +1756,7 @@ router.get('/sse/renewal/', require('./routes/sse/renewal')); // 深圳证券交易所——上市公告 router.get('/szse/notice/', require('./routes/szse/notice')); +router.get('/szse/inquire/:type', require('./routes/szse/inquire')); // 前端艺术家每日整理&&飞冰早报 router.get('/jskou/:type?', require('./routes/jskou/index')); diff --git a/lib/routes/szse/inquire.js b/lib/routes/szse/inquire.js new file mode 100644 index 0000000000..1d616d84cb --- /dev/null +++ b/lib/routes/szse/inquire.js @@ -0,0 +1,89 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const type = ctx.params.type; + const ptype = { + navall: { name: '主板+中小企业+创业板', tabkey: 'tab0', dataNum: 0, dataCategory: '全部', dataArr: [] }, + nav1: { name: '主板', tabkey: 'tab1', dataNum: 0, dataCategory: '主板', dataArr: [] }, + nav2: { name: '中小企业板', tabkey: 'tab2', dataNum: 1, dataCategory: '中小企业板', dataArr: [] }, + nav3: { name: '创业板', tabkey: 'tab3', dataNum: 2, dataCategory: '创业板', dataArr: [] }, + }; + function getUrl(params) { + const $ = cheerio.load(params); + const url = $('a').attr('encode-open'); + return url; + } + function restUrl(params) { + const $ = cheerio.load(params); + const getText = $('a').text(); + const url = $('a').attr('encode-open'); + const resthref = `http://reportdocs.static.szse.cn${url}`; + if (params !== '') { + params = `${getText}`; + } else { + params = ''; + } + return params; + } + for (const key in ptype) { + if (key !== 'navall') { + const host = 'http://www.szse.cn/'; + const link = `http://www.szse.cn/api/report/ShowReport/data?SHOWTYPE=JSON&CATALOGID=main_wxhj&TABKEY=${ptype[key].tabkey}&loading=first`; + // eslint-disable-next-line no-await-in-loop + const response = await got.get(link, { + Referer: host, + }); + const datNum = ptype[key].dataNum; + const temp = response.data; + ptype[key].dataArr = temp[datNum].data; + for (let i = 0; i < ptype[key].dataArr.length; i++) { + ptype[key].dataArr[i].category = ptype[key].dataCategory; + } + } else { + console.log(key); + } + } + + let outList; + switch (type) { + case 'nav1': + outList = ptype.navall.dataArr.concat(ptype.nav1.dataArr); + break; + case 'nav2': + outList = ptype.navall.dataArr.concat(ptype.nav2.dataArr); + break; + case 'nav3': + outList = ptype.navall.dataArr.concat(ptype.nav3.dataArr); + break; + default: + outList = ptype.navall.dataArr.concat(ptype.nav1.dataArr, ptype.nav2.dataArr, ptype.nav3.dataArr); + break; + } + ctx.state.data = { + title: `深圳证券交易所——【${ptype[type].name}】问询函件`, + link: `http://www.szse.cn/disclosure/supervision/inquire/index.html`, + description: `深圳证券交易所/信息披露/监管信息公开/问询函件`, + item: outList.map((item) => ({ + title: `【${item.category}】` + item.gsjc, + category: item.category, + author: item.category, + description: + ` + + + + + + + +
公司代码 : ${item.gsdm}
公司简称 : ${item.gsjc}
发函日期 : ${item.fhrq}
函件类别 : ${item.hjlb}
函件内容 : ` + + restUrl(item.ck) + + `
公司回复 : ` + + restUrl(item.hfck) + + `
`, + pubDate: new Date(item.fhrq).toUTCString(), + link: `http://reportdocs.static.szse.cn` + getUrl(`${item.ck}`), + })), + }; +};