前言#
本文全文 Copy 自我的 Github 主頁,算是我寫的第一個功能完整可用的應用,故而拿來填充自己的第一篇 "編程應用" 分類。
創作這個應用的靈感可以參見後文的功能說明,現在再回頭看,當初哪個抓著 8 月末尾巴,一天 24 小時除了吃飯睡覺就是做這個應用的自己,居然仍可以看到那種沒由來的熱切。
我對於這種應用自己的技術、玩各種輪子的興趣的無限熱衷,大概也就是從 19 年,哪個串聯起寒冬的末尾、蟬鳴的盛夏、深秋的伊始的漫漫長假而起的。
希望自己能永遠保有這份難能可貴的 "玩心" 吧。
作者#
項目地址: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
。 -
增添了報錯提示,根據最新版的 v7 API 返回的狀態碼自動提示報錯內容。
-
變更了原有圖標為和風天氣新版 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
環境參數,可以以中文輸入
效果預覽#
詳細說明:
授權#
本項目以 GNU General Public License v3.0 開源
城市查詢、空氣查詢、實況天氣、預測天氣 API 均來自和風天氣 ®
和風天氣 ® 是和風天氣公司的註冊商標。
天氣 icon 來自@heweather/WeatherIcon by 和風天氣
預警 icon 來自 Freepik from www.flaticon.com