Skip to content

🌤 天气

Virgil Clyne edited this page Jun 26, 2023 · 7 revisions
⚠️苹果已通过下发远程策略,从iOS 15开始,禁止修改天气app,此模块已终止使用
R.I.P🪦(2021.10.16~2022.08.09)
⚠️最高支持
iOS 16 developer beta 4
iOS 16 public beta 2
macOS 13 developer beta 4

简介

  • 安装后无需任何额外配置,即可启用下列功能: 1.解锁全部天气数据类型(默认全解锁) 2.替换「空气质量」数据(默认本地换算,前日同期空气质量对比采用本地缓存) 3.添加「未来一小时降水强度」信息(默认数据源:气象在线) 4.替换空气质量地图(默认不替换)

功能列表

  • 解锁全部天气数据类型

    • 苹果天气APIv2:当前天气,10日天气预报,每小时天气预报,"history","weatherChange",未来一小时降水强度,极端天气,空气质量,"appLocationConfig"
    • 苹果天气APIv3:当前天气,10日天气预报,每小时天气预报,"weatherChange",未来一小时降水强度,"news",天气警报,天气警报通知,空气质量
  • 替换「空气质量」数据

  • 添加「未来一小时降水强度」信息,数据源:

  • 替换「空气质量地图」数据,数据源:

  • 注:

    • 天气信息来源为weather-data.apple.com的Watch可使用本模块改写天气信息,需要在Watch上安装与代理设备相同的CA证书以进行MitM。
    • 「未来一小时降水强度」通知功能需要在天气APP内手动开启
    • 「未来一小时降水强度」在近期无降水时不显示,属正常现象
    • 「极端天气」通知功能没有实际作用
    • 替换的空气质量地图偏色问题暂未解决,属正常现象,地图图层有偏移也属正常现象
    • 天气信息可用性查询,约每天首次打开天气app时触发,可以通过删除城市,删除天气app强制刷新

适用范围

- [x] 天气(`WeatherKit_Weather_iOS_Version XX.X`)
  - [x] 未来一小时降水强度
  - [x] 空气质量
- [x] 天气的`通知`(`WeatherKit_weatherd_iOS_Version`)
  - [x] 未来一小时降水强度
- [x] 地图左下角的`天气`(`Maps_WeatherFoundation`)
  - [x] 空气质量
- [x] 小组件(`WeatherKit_WeatherWidget_iOS_Version XX.X`,`WeatherKit_WeatherWidget_macOS_`)
  - [x] 未来一小时降水强度

适用版本

  • 三种来源:
    • api.weather.com:部分Watch(不可修改)
    • weather-data.apple.com:iOS天气APP、macOS天气小组件、地图、部分Watch(可修改)
    • weather-data-origin.apple.com:iOS天气小组件、iOS天气APP的回退查询(不确定)
  • 三种版本:
    • v1:Watch、地图、iOS 14、iPadOS 14及以下的天气APP、macOS 11及以下的天气小组件
    • v2:iOS 15、iPadOS 15的天气APP、macOS 12的天气小组件
    • v3:iOS 16、iPadOS 16、macOS 13及以上的天气APP

使用说明

设置方法

🆕V4版,键值请参见默认设置:
Switch=true&NextHour.Switch=true&NextHour.Source=www.weatherol.cn&AQI.Switch=true&AQI.Targets=HJ6332012&AQI.Local.Switch=true&AQI.Local.Standard=WAQI_InstantCast&AQI.Source=www.weatherol.cn&AQI.Comparison.Switch=true&AQI.Comparison.Source=Local&Map.AQI=false&APIs.WeatherOL.HTTPHeaders={'Content-Type':'application/json'}&APIs.ColorfulClouds.HTTPHeaders={'Content-Type':'application/json'}&APIs.ColorfulClouds.Token=&APIs.ColorfulClouds.ForceCNForAQI=true&APIs.ColorfulClouds.ForceCNForComparison=false&APIs.WAQI.HTTPHeaders={'Content-Type':'application/json'}&APIs.WAQI.Token=&Log.Level=info&Log.Location=false
V3版:
Switch=true&NextHour.Switch=true&AQI.Switch=true&AQI.Mode=WAQI Public&AQI.Location=Station&AQI.Auth=你的私钥&AQI.Scale=EPA_NowCast.2204&Map.AQI=true
V2版:
Mode=WAQI Private&Location=City&VerifyMode=Token&Token=你的私钥

默认设置

  • 总开关(Switch)
  • [下小时降水强度]修改开关(NextHour.Switch)
  • [下小时降水强度]数据源(NextHour.Source)
    • 气象在线(www.weatherol.cn)
    • 彩云天气(专业套餐及以上)(api.caiyunapp.com)
  • [空气质量]修改开关(AQI.Switch)
  • [空气质量]需要修改的标准(选中的空气质量标准会被替换。请注意各国监测的污染物种类可能有所不同,转换算法或API未必适合当地。)(AQI.Targets)
    • 加拿大(CA AQHI)(CA.AQHI)
    • 法国(FR ATMO)(FR.ATMO)
    • 德国(UBA)(UBA)
    • 印度(NAQI)(NAQI)
    • 意大利(EU EAQI)(EU.EAQI)
    • 墨西哥(ICARS)(ICARS)
    • 荷兰(NL LKI)(NL.LKI)
    • 新加坡(SG NEA)(SG.NEA)
    • 韩国(KR CAI)(KR.CAI)
    • 西班牙(ES MITECO)(ES.MITECO)
    • 英国(DAQI)(DAQI)
    • 墨西哥(ICARS)(ICARS)
    • 美国(及日本)(EPA NowCast)(EPA_NowCast)
    • 中国(HJ 633—2012)(HJ6332012)
  • [空气质量]本地替换(使用本地替换算法,将Apple数据转换为特定标准)(AQI.Local.Switch)
  • [空气质量]本地替换算法(AQI.Local.Standard)
    • WAQI InstantCast(WAQI_InstantCast)
  • [空气质量]数据源(AQI.Source)
    • 仅使用Apple数据(Local)
    • 气象在线(www.weatherol.cn)
    • 彩云天气(专业套餐及以上)(api.caiyunapp.com)
    • The World Air Quality Project(api.waqi.info)
  • [空气质量]对比昨日空气质量(AQI.Comparison.Switch)
  • [空气质量]数据源(AQI.Comparison.Source)
    • 仅使用缓存数据(Local)
    • 彩云天气(个人套餐及以上)(api.caiyunapp.com)
    • The World Air Quality Project (非常慢)(api.waqi.info)
  • [开发中][空气质量地图]修改开关(Map.AQI)
  • [气象在线]HTTP请求头(APIs.WeatherOL.HTTPHeaders):{ 'Content-Type': 'application/json' }
  • [彩云天气]HTTP请求头(APIs.ColorfulClouds.HTTPHeaders):{ 'Content-Type': 'application/json' }
  • [彩云天气]彩云天气令牌(APIs.ColorfulClouds.Token):
  • [彩云天气]强制使用国标AQI(空气质量)(APIs.ColorfulClouds.ForceCNForAQI)
  • [彩云天气]强制使用国标AQI(对比昨日空气质量)(APIs.ColorfulClouds.ForceCNForComparison)
  • [WAQI]HTTP请求头(APIs.WAQI.HTTPHeaders):{ 'Content-Type': 'application/json' }
  • [WAQI]WAQI令牌(APIs.WAQI.Token):
  • 日志级别(Log.Level)
    • 调试(debug)
    • 信息(info)
    • 警告(warn)
    • 错误(error)
  • 在日志中显示坐标(Log.Location)

安装链接

⚠️苹果已通过下发远程策略,从iOS 15开始,禁止修改天气app,此模块已终止使用

🆕V4版

V3版

V2版

更新日志

🆕V4版

  • v4.0.0-RC

    • 优化与修复
      1. 修复了填写WAQI token后只选择了AQI源为WAQI时无法处理WAQI数据的问题( https://t.me/GetSomeFries/194317
      2. 给彩云天气和气象在线裁了个logo
      3. 删除了和风天气的API
      4. 从旧版升级到新版会收到重新设置的提示
      5. 调试级别下会打印下小时降水的大致修改情况
  • v4.0.0-beta8

    • 优化与修复
      1. 填写了WAQI token后,会使用WAQI station feed获取监测站ID
      2. 现已可缓存WAQI的token
      3. 修复了缓存写入的问题
      4. 修复了WAQI AQI feed API可能无法使用的问题
      5. 修复了WAQI历史数据查找的问题
      6. 重写了查找AQI缓存的函数
      7. 添加了和风天气的API(未完善、未启用)
      8. (Box.js)更新了API付费需求和坐标日志的描述,移除WAQI模式选项
      9. (开发者)现在可以使用 isNonEmptyString() 和 isObject() 进行类型检查
      10. (开发者)toAirQuality() 现在不会限制 aqiObject.primary 的值
  • v4.0.0-beta7

    • 优化与修复
      1. 修复了WAQI数据源无法使用的问题
      2. 支持使用WAQI来查询历史空气质量(需更新Box.js订阅,API需三次请求,非常慢,建议针对 api.waqi.info 添加代理规则)
      3. 修复了下小时降水和对比昨日空气质量数据缺失时,模块崩溃的错误
      4. 修复了WAQI作为AQI数据源且苹果无污染物数据时,无法显示主要污染物的问题
      5. (开发者)完善类型注释
    • 已知问题:
      1. WAQI token缓存还没做
  • v4.0.0-beta6

    • 优化与修复
      1. 修复了WAQI API无法使用的若干问题
      2. 添加了获取WAQI历史AQI数据的支持(但还没有启用)
      3. 添加了日志,并可以调节日志详尽程度
      4. 在没有数据时将temporarilyUnavailable、temporarily_unavailable设置为true
      5. (开发者)完善JSDoc类型注释
  • v4.0.0-beta5

    • 优化与修复
      1. 修复了iOS 14上没有正确检测需下小时降水情况的问题
  • v4.0.0-beta4

    • 优化与修复
      1. 修复了APIv3上无法正确识别雨停时间的问题
      2. BoxJS更新,新增更多AQI标准可选择被替换
  • v4.0.0-beta3

    • 优化与修复
      1. 修复了下小时降水不能正确显示的问题
      2. 修复了主要污染物无法正确显示的问题
    • 已知问题
      1. 主要污染物WAQI源可能仍有问题
  • v4.0.0-beta2

    • 优化与修复
      1. 修复了英文语系下降水描述显示不正确的问题
      2. 修复了只在下小时降水中使用彩云天气时,无法正常显示降水类型的问题
      3. 修复了iOS 14上无法本地转换AQI的问题
      4. 修复了小雨、小雪检测不正常的问题
      5. 修复了彩云天气作为AQI数据源时,无视「对比昨日空气质量」功能开关的问题
    • 已知问题
      1. iOS 14上「未来一小时降水强度」功能工作仍不正常
  • v4.0.0-beta1

    • 功能更新
      1. 支持Apple APIv3(即正在测试中的iOS 16、iPadOS 16和macOS Ventura)
      2. 支持本地换算AQI标准
      3. 支持对比昨日空气质量状况(本地缓存或彩云天气的历史数据)
      4. 对降水强度的判断更加精确
      5. 修复了降水即将开始却显示为降水即将停止的bug
      6. 气象在线不再实时更新降水数据,脚本会自动筛选过期数据
    • 已知问题:
      1. iOS 14无法使用
      2. (下小时降水)仅将彩云天气作为数据源时,无法正常显示降水状态
      3. (下小时降水)如果只能从API得到一个数据,脚本会超时崩溃
      4. 空气质量的修改目标只有中国和美国
      5. 本地换算的AQI虽然使用了WAQI算法,但是与WAQI略有差距
      6. 气象在线和彩云天气作为AQI数据源时,logo无法正常显示
      7. WAQI的模式切换功能不起作用
      8. 仍不支持修改空气质量地图、一小时预报降水地图
      9. (开发者)JSDoc的类型注释不完善
      10. (开发者)Debug设置没有作用

V3版

  • v3.2.x

    • 功能更新
      1. 支持iOS14的「未来一小时降水强度」
    • 优化与修复
      1. 同步beta版部分功能代码
      2. 修复无传入情况下的时间生成
      3. 更新了时间换算功能
      4. 更新了部分outputNextHour的实现方法
      5. 将outputNextHour的function置于末端
      6. 分离降水量等级换算功能
      7. 分离每分钟降水数据生成功能
      8. 重构了天气摘要生成功能,现在应该可以正常通知(最后一次抓取数据)80分钟内的降水
  • v3.1.5

    • 功能更新
      1. 支持argument方式配置
      2. 现在「空气质量」数据未取得的情况下,会在天气app对应城市的页面内不显示空气质量板块
      3. Shadowrocket, Loon, Surge, Stash的脚本超时时间调整为20秒
      4. 默认关闭「空气质量地图」修改
      5. 增加了WAQI.info的logo by @ranckinuta
    • 优化与修复
      1. 更新了元数据生成功能
      2. 更新了时间换算功能
      3. 更新了空气质量级别换算功能
      4. 更新了污染物参数转换功能
      5. 更新了「未来一小时降水强度」的刷新时间,现在是15分钟
      6. 修复了 WAQI.info的logo在v1版api上的显示
  • v3.1.0

    • 功能更新
      1. 添加降水强度显示 *「预报有雨」=>「预报有小雨」/「预报有暴雨」/「即将停止下雨」
  • v3.0.0

    • 功能更新
      1. 添加「未来一小时降水强度」信息和通知功能,数据来源:气象在线(需iOS15及更高版本)
      2. 可替换空气质量地图,数据来源:waqi.info(此功能默认关闭)
      3. BoxJs面板更新,现在可以单独控制三个子功能开关

V2版

  • v2.x
    • 功能更新
      1. 天气信息可用性查询,始终返回所有功能列表(如:为原本不支持空气质量信息和下一小时降水强度的地区解锁全部功能)
      2. 同步来自🍿️ DualSubs 的代码结构和逻辑(优化后WAQI公共API查询时间约1秒,私有API查询时间约0.2秒)
      3. 为添加其他功能面板,提升了BoxJs的缓存结构(兼容旧版本设置,但如需更新设置,则需要重新填写)

V1版

  • v1.x
    • 功能更新
      1. 启用模块后,修改空气质量数据源为WAQI,标准为AQI(US)