回望那个暑假，我玩出来的第一个“应用”

写在前面

本文全文 Copy 自我的 Github 主页，算是我写的第一个功能完整可用的应用，故而拿来填充自己的第一篇 “编程应用” 分类。

创作这个应用的灵感可以参见后文的功能说明，现在再回头看，当初哪个抓着 8 月末尾巴，一天 24 小时除了吃饭睡觉就是做这个应用的自己，居然仍可以看到那种没由来的热切。

我对于这种应用自己的技术、玩各种轮子的兴趣的无限热衷，大概也就是从 19 年，哪个串联起寒冬的末尾、蝉鸣的盛夏、深秋的伊始的漫漫长假而起的。

希望自己能永远葆有这份难能可贵的 “玩心” 吧。

Author

作者主页：zhuozhiyongde(Arthals)

项目地址：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