写在前面#
本文全文 Copy 自我的 Github 主页,算是我写的第一个功能完整可用的应用,故而拿来填充自己的第一篇 “编程应用” 分类。
创作这个应用的灵感可以参见后文的功能说明,现在再回头看,当初哪个抓着 8 月末尾巴,一天 24 小时除了吃饭睡觉就是做这个应用的自己,居然仍可以看到那种没由来的热切。
我对于这种应用自己的技术、玩各种轮子的兴趣的无限热衷,大概也就是从 19 年,哪个串联起寒冬的末尾、蝉鸣的盛夏、深秋的伊始的漫漫长假而起的。
希望自己能永远葆有这份难能可贵的 “玩心” 吧。
Author#
项目地址:Alfred_HeWeather_Workflow
源码作者主页:skefy(Leon)
源码项目地址:alfred_workflow_weather
功能说明#
查询灾害预警、空气质量指数(AQI)、实况天气、未来三天的预测天气
本 Alfred Workflow 使用和风天气( https://dev.heweather.com/ )API,仅供教育于参考之用,不得用于商业用途。
本 Alfred Workflow 源码来自 @skefy (Leon)/alfred_workflow_weather
因为原作者初始设置 base_url 为商业版 API,个人使用需修改源代码,较为不便,且和风天气 API 已经更新至 v7,而原作者并未同步更新,所以我以源码为基础,对于原项目进行了 90% 以上的重构。
除了上述变更之外,我还进行了如下修改:
-
新增灾害预警查询,当有多条灾害预警时,自动返回去重后合并的并列字符串
-
新增AQI查询
-
修改了条目布局,为各个条目新增了更多的信息,如日出日落、降水量、体感温度,且仿照 @jason0x43/alfred-weather的布局,引入了 unicode 图标,更为简洁和直观。
-
在环境变量中增添了 adm 和 location 参数,精准的定位城市以获得城市 ID,同时也是因为原有自动定位的的接口已经过时,且请求 auto_ip 的话无法精确定位到区县一级,故舍弃了自动定位功能。
-
你仍然可以通过
关键词+空格+其他城市名
来获取其他城市的天气状况,如果所查询城市不在中国境内,不会返回灾害预警和 AQI 信息。 -
考虑到大多数人使用的是个人版 / 开发者版 API,我将 base_url 里的
api
变更为了devapi
。 -
增添了报错提示,根据最新版的 v7API 返回的状态码自动提示报错内容。
-
变更了原有图标为和风天气新版 icon,更加美观。
有关此项,你可以从@heweather / WeatherIcon 下载和风天气设计的其他版本 icon 并且自行替换./res/icon-heweather 文件夹中的图标
-
对于返回结果加入了
quicklookurl
参数,对于每项结果,你都可以在选中结果的同时按住⇧
或者⌘
+Y
预览 API 返回的fxLink
自适应网页来获取更为详尽的信息。 -
增添了
date_valid()
函数以比较接口获得的三日预报和当日日期,原因是我写代码写到 5 点的时候偶然发现该接口尚未更新数据,导致 11 号早上 5 点请求返回得到了 10 ~ 12 号的信息,而原作者并未对此进行纠正,会自动从今日开始显示为 11 ~ 13 号的信息。
默认 keyword: rt#
必要参数:#
-
api_key
:你的 WEB API key,普通用户每日前 1000 次请求免费,开发者版本前 16700 次请求免费,如有更多需求,请选购商业版或高性能版 API,根据需求更换 main.py 第 65 行 base_url 中的devapi
为api
。开发者版本 API 可以获得未来 24h 的逐小时预测,但是由于我自己尚未认证,该部分的开发暂时搁置。
-
adm
:所选区县的上级省市范围,用于防止重名城市,如北京市朝阳区和辽宁省朝阳市. -
location
:请选择具体地区的区县一级规划,如海淀区 / 汉阳县。
使用说明#
-
确保拥有 Alfred 的 Powerpack 功能
-
安装该 workflow
-
和风天气 注册,申请 api_key
-
注册流程:
a. 前往和风天气进行账号注册
b. 注册完毕后,前往控制台 →应用管理→创建应用→免费开发版→随意填写一个应用名称→选择 Key 类型为 WEB API→跟随提示完成注册
c. 你的 API Key 可以在控制台 - 应用管理处看到了
-
设置
api_key
环境参数建议先到某个地方复制一遍,检查是否带着制表符 / 回车符复制进去了,这样的话会报错。
-
设置
adm
,location
环境参数,可以以中文输入
效果预览#
详细说明:
License#
本项目以 GNU General Public License v3.0 开源
城市查询、空气查询、实况天气、预测天气 API 均来自和风天气 ®
和风天气 ® 是和风天气公司的注册商标。
天气 icon 来自@heweather/WeatherIcon by 和风天气
预警 icon 来自 Freepik from www.flaticon.com