mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-10-29 07:27:22 +08:00
* fix(route)(dxy) * add(route):上海卫健委疫情通报 * U 使用https获取上海疫情通报数据 U 移动上海疫情通报至gov * U 删除多余router.js文件 U 移动上海疫情通报radar信息到上级radar中 U 修复doc中疫情通报地址错误的问题 * U 调整备注 * A 新增 pubDate * U 和并radar中的上海市人民政府项目,合并doc中上海市人民政府项目 * U 时间标准化 * U 调整发布时间格式化 Co-authored-by: Zhou Caifa <caifa.zhou@naiveblue.com> fix #9010
87 lines
2.8 KiB
JavaScript
87 lines
2.8 KiB
JavaScript
const got = require('@/utils/got');
|
||
const { JSDOM } = require('jsdom');
|
||
|
||
module.exports = async (ctx) => {
|
||
const PROVINCE = ctx.params.province || '国内';
|
||
let CITY = ctx.params.city || '';
|
||
|
||
const link = 'https://ncov.dxy.cn/ncovh5/view/pneumonia';
|
||
|
||
const response = await got({
|
||
method: 'get',
|
||
url: link,
|
||
});
|
||
|
||
const dom = new JSDOM(response.data, {
|
||
runScripts: 'dangerously',
|
||
});
|
||
|
||
const item = {
|
||
description: '',
|
||
};
|
||
|
||
let AREA, DATA, META;
|
||
|
||
const getProvince = () => {
|
||
AREA = PROVINCE;
|
||
DATA = dom.window.getAreaStat.find((item) => item.provinceShortName === PROVINCE);
|
||
|
||
if (!DATA) {
|
||
// 省份名不存在
|
||
return getCountry();
|
||
}
|
||
|
||
if (CITY) {
|
||
return getCity();
|
||
}
|
||
|
||
DATA.cities.forEach((city) => {
|
||
item.description += `${city.cityName}累计确诊 ${city.confirmedCount} 例,累计死亡 ${city.deadCount} 例,累计治愈 ${city.curedCount} 例。<br><br>`;
|
||
});
|
||
|
||
item.title = `${AREA}累计确诊 ${DATA.confirmedCount} 例,现存确诊 ${DATA.currentConfirmedCount} 例,累计死亡 ${DATA.deadCount} 例,累计治愈 ${DATA.curedCount} 例`;
|
||
};
|
||
|
||
const getCity = () => {
|
||
AREA = CITY;
|
||
DATA = DATA.cities.find((c) => c.cityName.includes(CITY));
|
||
|
||
if (DATA) {
|
||
item.title = `${DATA.cityName}累计确诊 ${DATA.confirmedCount} 例,现存确诊 ${DATA.currentConfirmedCount} 例,累计死亡 ${DATA.deadCount} 例,累计治愈 ${DATA.curedCount} 例`;
|
||
} else {
|
||
// 城市不存在
|
||
CITY = '';
|
||
return getProvince();
|
||
}
|
||
};
|
||
|
||
const getCountry = () => {
|
||
AREA = '国内';
|
||
META = dom.window.getStatisticsService;
|
||
|
||
item.title = `国内累计确诊 ${META.confirmedCount} 例${META.confirmedIncr ? `(较昨日 ${(META.confirmedIncr > 0 ? '+' : '') + META.confirmedIncr})` : ''},现存确诊 ${META.currentConfirmedCount} 例${
|
||
META.currentConfirmedIncr ? `(较昨日 ${(META.currentConfirmedIncr > 0 ? '+' : '') + META.currentConfirmedIncr})` : ''
|
||
},累计死亡 ${META.deadCount} 例${META.deadIncr ? `(较昨日 ${(META.deadIncr > 0 ? '+' : '') + META.deadIncr})` : ''},累计治愈 ${META.curedCount} 例${
|
||
META.curedIncr ? `(较昨日 ${(META.curedIncr > 0 ? '+' : '') + META.curedIncr})` : ''
|
||
}`;
|
||
};
|
||
|
||
if (PROVINCE !== '国内' && PROVINCE !== '全国') {
|
||
getProvince();
|
||
} else {
|
||
getCountry();
|
||
}
|
||
|
||
if (META && META.modifyTime) {
|
||
item.pubDate = new Date(META.modifyTime).toUTCString();
|
||
}
|
||
item.link = link;
|
||
item.guid = item.title;
|
||
|
||
ctx.state.data = {
|
||
title: `${AREA}新冠病毒疫情数据统计 - 丁香园`,
|
||
link,
|
||
item: [item],
|
||
};
|
||
};
|