# -*- coding: utf-8 -*- import re from datetime import datetime from typing import Any, Dict, List import requests from core.managers.command_manager import matcher from core.managers.image_manager import image_manager from core.utils.logger import logger from models import MessageEvent, MessageSegment from .resource.city_code import CITY_CODES # 插件元数据 __plugin_meta__ = { "name": "weather", "description": "查询天气信息,支持中国天气网数据。", "usage": "/天气 [城市代码] - 查询指定城市的天气信息\n例如:/天气 101190207 (南京)", } HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } def get_weather_data(city_code: str) -> Dict[str, Any]: """ 获取天气数据 Args: city_code (str): 城市代码 Returns: Dict[str, Any]: 包含城市信息和天气数据的字典 """ try: url = f"https://www.weather.com.cn/weather/{city_code}.shtml" response = requests.get(url, headers=HEADERS, timeout=10) response.encoding = "utf-8" html_content = response.text # 提取城市信息 city_info = ( html_content.split('")[0] .strip() ) city_parts = [] city_parts.append(city_info.split("")[-1].split("")[0]) if city_info.count("_blank") == 1: city_parts.append( city_info.split(">")[-1] .replace("", "") .replace("", "") .strip() ) else: additional_parts = ( city_info.split('target="_blank">')[-1] .replace("> ", "") .replace("", "") .split("") ) city_parts.extend(additional_parts) city_name = " ".join([part for part in city_parts if part.strip()]) # 提取天气信息 weather_data = [] for i in range(7): try: weather_info = ( html_content.split('