Weather Query(天气查询)
Overview
查询任意城市/地点的天气与海洋信息,包括:当前实况天气、未来 N 天(默认 7 天)逐日预报、指定日期的历史天气、潮汐(高低潮)预报。数据源为 Open-Meteo 免费 API(https://open-meteo.com),无需 API Key、无需注册、无调用次数限制(合理使用范围内)。核心实现为 scripts/query_weather.py,输出为中文。
使用方式
运行脚本查询天气,将输出直接呈现给用户。脚本仅依赖 Python 标准库(urllib/json/datetime),无需安装第三方包。
python scripts/query_weather.py <城市名> [选项]
查询当前天气 + 未来预报(默认 7 天)
python scripts/query_weather.py 北京
python scripts/query_weather.py 上海 --days 3 # 未来 3 天
python scripts/query_weather.py "New York" --days 1 # 英文城市名
查询潮汐(高低潮)预报
python scripts/query_weather.py 深圳 --tide # 默认未来 3 天
python scripts/query_weather.py 青岛 --tide --days 5 # 最多 7 天
输出包含:每次高潮/低潮的具体时间与海平面高度(米,含反气压效应)、相邻潮差,以及每日最高潮/最低潮摘要。适用场景:赶海、海边游玩、钓鱼、冲浪、出海等。内陆城市会提示"可能远离海岸"。
查询历史天气
python scripts/query_weather.py 深圳 --history 2026-08-01 # 查询某天的历史天气(含前后各 1 天便于对比)
按经纬度查询(城市名无法解析时使用)
python scripts/query_weather.py --lat 25.6065 --lon 100.2676 --days 3
城市名解析逻辑
脚本内置了智能城市解析,无需用户提供经纬度:
- 中国主要城市兜底表(
CHINA_MAJOR_CITIES,约 300 个城市含港澳台):命中即用内置精确坐标,保证常见城市准确无误。 - 中文输入:调用 Open-Meteo geocoding API 中文查询,同时若命中内置中英别名表(
CITY_ALIASES,覆盖全球主要城市,如 伦敦→London、纽约→New York City、东京→Tokyo),额外用英文名查询,按人口规模择优——解决译名错位问题(如"伦敦"不会被解析成加拿大 London)。 - 英文输入:英文查询优先,按名称精确匹配 + 人口规模择优。
若城市名解析失败,脚本会提示改用 --lat/--lon。无需向用户索要经纬度,除非城市名确实无法解析。
输出格式
脚本输出结构化文本(当前天气 + 逐日预报 + 历史天气 + 潮汐预报),包含:天气描述、温度、体感温度、相对湿度、降水量、风速、风向;潮汐部分包含高低潮时间与高度。直接原样输出即可,如需补充说明可用简短文字。
错误处理
- 城市名未找到 → 脚本 stderr 输出错误信息并以退出码 1 结束,此时可建议用户改用英文名或经纬度。
- 网络异常 → 同样以错误信息提示,可重试一次。
- 历史日期格式必须为
YYYY-MM-DD。 - 内陆城市查询潮汐 → 输出"该位置可能远离海岸",无需报错处理。
资源
scripts/query_weather.py:唯一的可执行脚本,天气与潮汐查询全部逻辑所在。