香港天气信息 — 提供香港天文台的当前天气状况和预报,适用于用户询问香港天气、温度、降雨等情况。
HK气象信息 : 概览 : 香港气象技能 使用 HKO( 香港天文台) OpenData API. 提供当前天气报告和当地天气预报是一项面向实际任务的技能,主要用于支持区域过滤和粘合。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
基于香港天文台(HKO)OpenData API 的香港天气技能。提供当前天气实况和本地天气预报。支持按区域筛选及多语言输出(英文、繁体中文、简体中文)。
HKO OpenData API — 免费开放,无需 API 密钥。
https://data.weather.gov.hk/weatherAPI/opendata/weather.php?dataType=rhrread&lang=https://data.weather.gov.hk/weatherAPI/opendata/weather.php?dataType=flw&lang=| 变量 | 说明 | 取值 |
|---|---|---|
HK_WEATHER_INFO_REGION |
目标区域/分区。若为 None,则返回全港整体天气信息。 | 例如:"Tsuen Wan"、"Central"、None |
HK_WEATHER_INFO_LANG |
语言偏好 | tc(繁体中文,默认)、en(英文)、sc(简体中文) |
向用户询问目标区域/分区。若用户拒绝提供,或表示“整体/全港”,则设 HK_WEATHER_INFO_REGION = None。
默认使用 tc(繁体中文),除非用户另行指定。支持以下选项:
tc — 繁体中文(繁體中文)— 默认en — Englishsc — 简体中文(简体中文)存储为 HK_WEATHER_INFO_LANG。若未设置,默认为 tc。
调用:
GET https://data.weather.gov.hk/weatherAPI/opendata/weather.php?dataType=rhrread&lang=
API 返回 JSON,包含以下字段:
temperature — 数组,元素为 {place, value, unit}humidity — {value, unit}rainfall — 数组,元素为 {place, value, unit}icon — 天气图标代码uvindex — 紫外线指数(如可用)updateTime — 时间戳warningMessage — 当前生效的预警信息(字符串)rainstormReminder — 暴雨提醒(字符串)区域筛选逻辑: 若设置了 HK_WEATHER_INFO_REGION(非 None):
temperature 数组中查找 place 字段与目标区域**不区分大小写的部分匹配**的条目rainfall 数组中执行相同匹配若未找到匹配项,或 HK_WEATHER_INFO_REGION 为 None:
调用:
GET https://data.weather.gov.hk/weatherAPI/opendata/weather.php?dataType=flw&lang=
API 返回 JSON,包含以下字段:
generalSituation — 天气总体概况forecastDesc — 预报描述(面向用户的可读文本)outlook — 展望forecastPeriod — 字符串(风向缩写字母,不是数组)。请使用 forecastDesc 获取人类可读的预报正文。updateTime — 时间戳区域筛选逻辑: 若设置了 HK_WEATHER_INFO_REGION:
默认展示今日与明日预报。
完成步骤 1 和步骤 2 后,从 HKO 提供的 CSV 文件中获取最新 1 分钟平均气温。
参考文档:
references/1min-temp-csv.md— 包含实际列名、别名映射、常见注意事项等详细说明。
依据 HK_WEATHER_INFO_LANG 值确定:
| 语言 | CSV URL |
|---|---|
en |
https://data.weather.gov.hk/weatherAPI/hko_data/regional-weather/latest_1min_temperature.csv |
tc |
https://data.weather.gov.hk/weatherAPI/hko_data/regional-weather/latest_1min_temperature_uc.csv |
sc |
https://data.weather.gov.hk/weatherAPI/hko_data/regional-weather/latest_1min_temperature_sc.csv |
| 其他任意值 | 不获取 CSV |
curl(或 urllib)尝试下载 CSV。CSV 列名因语言而异。实际观察到的列名如下:
| 语言 | 地点列 | 气温列 |
|---|---|---|
tc |
自動氣象站 |
氣溫(攝氏) |
en |
Automatic Weather Station |
Air Temperature(degree Celsius) |
sc |
(类似中文名称) | (类似中文名称) |
CSV 文件以 UTF-8 BOM(ufeff)开头 — 解析前必须去除,否则首列键名将损坏。
CSV 包含约 39 个自动气象站,其站名具有特定性(例如:荃灣可觀、赤鱲角、京士柏),并非通用分区名称。进行区域匹配时:
HK_WEATHER_INFO_REGION:优先尝试直接的部分匹配;若失败,则尝试英文→中文别名映射(例如 “Tsuen Wan” → 荃灣,“Central” → 中環)。采用首个匹配站点的气温值。HK_WEATHER_INFO_REGION 或无匹配项:计算所有站点气温值的算术平均值,作为全港整体的 1 分钟平均气温。若成功获取 1 分钟平均气温,则将其追加至最终回复末尾:
繁体中文(TC)输出:
🕒 1分鐘平均氣溫:XX°C([地區名稱 / 全港平均])
英文(EN)输出:
🕒 1-Min Avg Temp: XX°C ([Region Name / HK Average])
简体中文(SC)输出:
🕒 1分钟平均气温:XX°C([地区名称 / 全港平均])
当 lang=tc(默认)时,HKO API 所有文本字段均返回繁体中文。为保持一致性,请使用中文标签:
🇭🇰 香港天氣 [地區] 🌡️ 氣溫:XX°C(測站名稱) 💧 濕度:XX% 🌧️ 雨量:XXmm(測站名稱) ☀️ 紫外線指數:XX(如有) ⚠️ 生效警告:[警告內容 / 無] 🕐 更新時間:
📅 天氣預測 📋 概況:📅 今日: | 溫度: °C | 濕度: % 📅 明日: | 溫度: °C | 濕度: % 🔮 展望: 🕐 更新時間:
当 lang=en 时,使用英文标签:
🌤️ Hong Kong Weather [Region if set] Temperature: XX°C (Station Name) Humidity: XX% ... Forecast:
务必首先检查系统时间。 运行 date '+%Y-%m-%d %H:%M:%S %Z' 并转换为香港标准时间(HKT,UTC+8)后再响应。切勿依赖对话上下文或系统提示中的时间戳推断日期 — 对话可能跨越多日。
无需 API 密钥。HKO OpenData 完全免费开放。
urllib、json、datetime)scripts/hk_weather.py — 命令行客户端,内置 10 分钟文件缓存。默认语言为 tc(繁体中文)。
python3 scripts/hk_weather.py # 全港整体天气,繁体中文(默认) python3 scripts/hk_weather.py --region "Tsuen Wan" # 指定区域,繁体中文 python3 scripts/hk_weather.py --lang en # 英文输出 python3 scripts/hk_weather.py --action current # 仅当前天气 python3 scripts/hk_weather.py --action forecast # 仅天气预报
--lang tc。所有输出(包括标签)均应为繁体中文,除非用户明确指定 --lang en 或 --lang sc。HKO API 在 lang=tc 时返回中文文本字段,因此输出标签也须统一使用中文以确保一致性。lang 参数影响所有文本字段value 键 — 访问前务必检查 "value" in matched。不同站点对空/缺失降雨数据的表示方式不一致。forecastPeriod 是字符串而非数组 — flw API 返回的 forecastPeriod 是一个字符串(风向缩写),不是 预报时段对象数组。请始终使用 forecastDesc 获取人类可读的预报正文。ufeff 开头。解析前必须去除,否则首列键名将损坏。CSV 同时使用语言特定的中文列名(如 自動氣象站、氣溫(攝氏)),而非通用的 地區/溫度 等名称。荃灣可觀、赤鱲角),并非行政区划名称。“Tsuen Wan” 等英文区域名无法直接匹配中文站名 — 必须使用别名映射(如 “Tsuen Wan” → 荃灣)。warningMessage 格式化问题:HKO API 可能返回警告字符串列表,而非单个字符串。现改为遍历并逐行打印每条预警。forecastPeriod 描述:其为字符串(风向),非数组。已移除矛盾描述。match_region 函数,使其支持当前天气区域筛选中的英文→中文别名映射。"percent" 字符串,而非 "%" 符号。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章