mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
commit
52ba2cf89a
@ -5,14 +5,14 @@ from nonebot.adapters.cqhttp import Bot, MessageEvent, GroupMessageEvent
|
|||||||
from nonebot.typing import T_State
|
from nonebot.typing import T_State
|
||||||
from utils.utils import get_message_text
|
from utils.utils import get_message_text
|
||||||
from configs.config import NICKNAME
|
from configs.config import NICKNAME
|
||||||
|
from .other_than import get_other_data
|
||||||
|
|
||||||
__zx_plugin_name__ = "疫情查询"
|
__zx_plugin_name__ = "疫情查询"
|
||||||
__plugin_usage__ = """
|
__plugin_usage__ = """
|
||||||
usage:
|
usage:
|
||||||
全国疫情查询
|
全国疫情查询
|
||||||
指令:
|
指令:
|
||||||
疫情 中国
|
疫情 中国/美国/英国...
|
||||||
疫情 [省份/城市]
|
疫情 [省份/城市]
|
||||||
* 当省份与城市重名时,可在后添加 "市" 或 "省" *
|
* 当省份与城市重名时,可在后添加 "市" 或 "省" *
|
||||||
示例:疫情 吉林 <- [省]
|
示例:疫情 吉林 <- [省]
|
||||||
@ -22,7 +22,7 @@ __plugin_des__ = "实时疫情数据查询"
|
|||||||
__plugin_cmd__ = ["疫情 [省份/城市]", "疫情 中国"]
|
__plugin_cmd__ = ["疫情 [省份/城市]", "疫情 中国"]
|
||||||
__plugin_type__ = ('一些工具',)
|
__plugin_type__ = ('一些工具',)
|
||||||
__plugin_version__ = 0.1
|
__plugin_version__ = 0.1
|
||||||
__plugin_author__ = "HibiKier"
|
__plugin_author__ = "HibiKier & yzyyz1387"
|
||||||
__plugin_settings__ = {
|
__plugin_settings__ = {
|
||||||
"level": 5,
|
"level": 5,
|
||||||
"default_status": True,
|
"default_status": True,
|
||||||
@ -54,4 +54,12 @@ async def _(bot: Bot, event: MessageEvent, state: T_State):
|
|||||||
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) 查询疫情失败"
|
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) 查询疫情失败"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
await yiqing.send(f"{NICKNAME}没有查到{msg}的疫情查询...")
|
rely = await get_other_data(msg)
|
||||||
|
if rely:
|
||||||
|
await yiqing.send(rely)
|
||||||
|
logger.info(
|
||||||
|
f"(USER {event.user_id}, GROUP "
|
||||||
|
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) 查询疫情失败"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
await yiqing.send(f"{NICKNAME}没有查到{msg}的疫情查询...")
|
||||||
|
|||||||
73
plugins/yiqing/other_than.py
Normal file
73
plugins/yiqing/other_than.py
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# @Time : 2021/12/23 23:04
|
||||||
|
# @Author : yzyyz
|
||||||
|
# @Email : youzyyz1384@qq.com
|
||||||
|
# @File : other_than.py
|
||||||
|
# @Software: PyCharm
|
||||||
|
from utils.http_utils import AsyncHttpx
|
||||||
|
from typing import Optional
|
||||||
|
from services.log import logger
|
||||||
|
import re
|
||||||
|
import json
|
||||||
|
|
||||||
|
__doc__ = """爬虫实现国外疫情数据(找不到好接口)"""
|
||||||
|
|
||||||
|
|
||||||
|
def intcomma(value) -> str:
|
||||||
|
"""
|
||||||
|
数字格式化
|
||||||
|
"""
|
||||||
|
orig = str(value)
|
||||||
|
new = re.sub(r"^(-?\d+)(\d{3})", r"\g<1>,\g<2>", orig)
|
||||||
|
return new if orig == new else intcomma(new)
|
||||||
|
|
||||||
|
|
||||||
|
async def get_other_data(place: str) -> Optional[str]:
|
||||||
|
"""
|
||||||
|
:param place: 地名
|
||||||
|
:return: 格式化字符串
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
html = (
|
||||||
|
(await AsyncHttpx.get("https://news.ifeng.com/c/special/7uLj4F83Cqm"))
|
||||||
|
.text.replace("\n", "")
|
||||||
|
.replace(" ", "")
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"疫情查询发生错误 {type(e)}:{e}")
|
||||||
|
return None
|
||||||
|
find_data = re.compile(r"varallData=(.*?);</script>")
|
||||||
|
sum_ = re.findall(find_data, html)[0]
|
||||||
|
try:
|
||||||
|
sum_ = json.loads(sum_)
|
||||||
|
other_country = sum_["yiqing_v2"]["dataList"][29]["child"]
|
||||||
|
for country in other_country:
|
||||||
|
if place == country["name2"]:
|
||||||
|
return (
|
||||||
|
f"{place} 疫情数据:\n"
|
||||||
|
"——————————————\n"
|
||||||
|
f"新增病例:{intcomma(country['quezhen_add'])}\n"
|
||||||
|
f"现有确诊:{intcomma(country['quezhen_xianyou'])}\n"
|
||||||
|
f"累计确诊:{intcomma(country['quezhen'])}\n"
|
||||||
|
f"累计治愈:{intcomma(country['zhiyu'])}\n"
|
||||||
|
f"死亡:{intcomma(country['siwang'])}\n"
|
||||||
|
"——————————————"
|
||||||
|
# f"更新时间:{country['sys_publishDateTime']}"
|
||||||
|
# 时间无法精确到分钟,网页用了js我暂时找不到
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
for city in country["child"]:
|
||||||
|
if place == city["name3"]:
|
||||||
|
return (
|
||||||
|
f"{place} 疫情数据:\n"
|
||||||
|
"——————————————\n"
|
||||||
|
f"新增病例:{intcomma(city['quezhen_add'])}\n"
|
||||||
|
f"累计确诊:{intcomma(city['quezhen'])}\n"
|
||||||
|
f"累计治愈:{intcomma(city['zhiyu'])}\n"
|
||||||
|
f"死亡:{intcomma(city['siwang'])}\n"
|
||||||
|
"——————————————"
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"疫情查询发生错误 {type(e)}:{e}")
|
||||||
|
return None
|
||||||
Loading…
Reference in New Issue
Block a user