diff --git a/docs/other.md b/docs/other.md index fa49681ca..db7b4e2bd 100644 --- a/docs/other.md +++ b/docs/other.md @@ -394,10 +394,18 @@ type 为 all 时,category 参数不支持 cost 和 free -### 丁香园 - 全国新型肺炎疫情实时动态 +### 丁香园 - 全国新型肺炎疫情实时播报 +### 丁香园 - 全国新型肺炎疫情数据统计(全国) + + + +### 丁香园 - 全国新型肺炎疫情数据统计(各省份) + + + ### South China Morning Post - China coronavirus outbreak diff --git a/lib/router.js b/lib/router.js index 18739ab19..ecbd39c3a 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2155,6 +2155,8 @@ router.get('/weixin/miniprogram/release', require('./routes/weixinMiniprogram/re // 武汉肺炎疫情动态 router.get('/coronavirus/caixin', require('./routes/coronavirus/caixin')); +router.get('/coronavirus/dxy/data/:province', require('./routes/coronavirus/dxy-data-province')); +router.get('/coronavirus/dxy/data', require('./routes/coronavirus/dxy-data-country')); router.get('/coronavirus/dxy', require('./routes/coronavirus/dxy')); router.get('/coronavirus/scmp', require('./routes/coronavirus/scmp')); diff --git a/lib/routes/coronavirus/dxy-data-country.js b/lib/routes/coronavirus/dxy-data-country.js new file mode 100644 index 000000000..493f8224c --- /dev/null +++ b/lib/routes/coronavirus/dxy-data-country.js @@ -0,0 +1,27 @@ +const got = require('@/utils/got'); +const jsdom = require('jsdom'); +const { JSDOM } = jsdom; + +module.exports = async (ctx) => { + const response = await got({ + method: 'get', + url: 'https://3g.dxy.cn/newh5/view/pneumonia', + }); + + const dom = new JSDOM(response.data, { + runScripts: 'dangerously', + }); + + const data = dom.window.getStatisticsService; + + ctx.state.data = { + title: '全国新型肺炎疫情数据统计(全国)-丁香园', + link: 'https://3g.dxy.cn/newh5/view/pneumonia', + item: [ + { + title: data.countRemark, + pubDate: new Date(data.modifyTime).toUTCString(), + }, + ], + }; +}; diff --git a/lib/routes/coronavirus/dxy-data-province.js b/lib/routes/coronavirus/dxy-data-province.js new file mode 100644 index 000000000..b59e07e86 --- /dev/null +++ b/lib/routes/coronavirus/dxy-data-province.js @@ -0,0 +1,37 @@ +const got = require('@/utils/got'); +const jsdom = require('jsdom'); +const { JSDOM } = jsdom; + +module.exports = async (ctx) => { + const province = ctx.params.province; + const response = await got({ + method: 'get', + url: 'https://3g.dxy.cn/newh5/view/pneumonia', + }); + + const dom = new JSDOM(response.data, { + runScripts: 'dangerously', + }); + + const data = dom.window.getAreaStat.find((item) => item.provinceShortName === province); + let descriptionCity = ''; + if (data.cities) { + for (let i = 0; i < data.cities.length; i++) { + descriptionCity += `

${data.cities[i].cityName}:确诊 ${data.cities[i].confirmedCount} 例,死亡 ${data.cities[i].deadCount} 例,治愈 ${data.cities[i].curedCount} 例`; + } + } + + const title = `确诊 ${data.confirmedCount} 例,死亡 ${data.deadCount} 例,治愈 ${data.curedCount} 例`; + + ctx.state.data = { + title: `全国新型肺炎疫情数据统计(${province})-丁香园`, + link: 'https://3g.dxy.cn/newh5/view/pneumonia', + item: data && [ + { + title: title, + description: `${title}${descriptionCity}`, + pubDate: new Date(dom.window.getStatisticsService.modifyTime).toUTCString(), + }, + ], + }; +}; diff --git a/lib/routes/coronavirus/dxy.js b/lib/routes/coronavirus/dxy.js index eb3631108..af6f81bcf 100644 --- a/lib/routes/coronavirus/dxy.js +++ b/lib/routes/coronavirus/dxy.js @@ -15,7 +15,7 @@ module.exports = async (ctx) => { const data = dom.window.getTimelineService; ctx.state.data = { - title: '全国新型肺炎疫情实时动态-丁香园', + title: '全国新型肺炎疫情实时播报-丁香园', link: 'https://3g.dxy.cn/newh5/view/pneumonia', item: data.map((item) => ({ title: item.title,