Python 制作一個天氣提醒小助手
查詢天氣接口
要獲取天氣情況,需要一個查詢天氣的接口,網(wǎng)上找了一下,一般都是注冊后送一定調(diào)用次數(shù)的,我選擇了一個,免費送 500 次查詢次數(shù)的。
我們看看接口的 API 文檔。
其中城市名 cityname 和 key 是必填項。
http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&key=您申請的KEY
key 值在 juhe.cn 我的接口那一欄中可以看到。
我們也可以事先在 Postman 工具中調(diào)試看看接口能否調(diào)通。
Postman 接口工具沒用過的沒關(guān)系,他們網(wǎng)頁上也提供了調(diào)試工具。
查詢天氣方法
我們直接用 requests 庫請求接口就能獲得 json 格式的天氣信息,json 數(shù)據(jù)中包含了當(dāng)天和未來幾天的天氣信息,這里我只需要當(dāng)天的,當(dāng)天數(shù)據(jù)都在 result 下的 today 里,提取出來用 return 返回。
通過微信發(fā)送天氣消息
我們通過微信把天氣信息發(fā)到群里,這里我們需要用到調(diào)用微信的庫,itchat 庫或者 wxpy 都可以,這里我用了 wxpy 庫。
先導(dǎo)入 wxpy 庫。
from wxpy import *
我們把剛才的請求接口返回的天氣信息整合一下,然后用 wxpy 庫的 search 方法通過群名稱找到你需要發(fā)送天氣消息的這個群,用 send 方法發(fā)送。
我這里是發(fā)送到群里,當(dāng)然,你也可以直接發(fā)送給個人微信。
my_friend = bot.friends().search(u'pk哥')[0]
定時操作
如果每次都需要我們手動運行,那就有點麻煩,我們要讓程序每天在固定時間定時發(fā)送,這里需要用到 Timer 定時器。
Timer 定時器格式:
Timer(86400, get_weather)
第一個參數(shù)表示相隔指定時間(單位:秒)后再次調(diào)用方法(第二個參數(shù)),注意,方法后不要帶括號。
86400 秒就是相隔 24 小時,也就是一天的時間。
t = Timer(86400, get_weather) t.start() t.join()
異常處理
如果信息發(fā)送失敗,我把信息發(fā)給自己,這里我做了一個異常處理。
except BaseException: my_friend = bot.friends().search(u'brucepk')[ 0] # 發(fā)送不成功,則發(fā)送消息給自己,提醒消息發(fā)送失敗 my_friend.send(u'天氣消息發(fā)送失敗')
我們的程序需要持續(xù)運行,那是不是需要一直在電腦上運行啊?這樣有點不現(xiàn)實啊,我們把它部署到服務(wù)器上就可以搞定了,現(xiàn)在服務(wù)器也很便宜,做活動的時候一般 100 元以內(nèi)就可以買一年。
部署在服務(wù)器
在服務(wù)器中運行程序,直接掃碼登錄微信,下面是我上周五開始運行的,相隔 24 小時后,周六再次調(diào)用方法,獲取新的天氣信息。
發(fā)到群里效果如下圖,當(dāng)然,你還可以多加一些接口返回的信息或者自己想說的話。
可能存在的問題
1、你的微信登錄不了網(wǎng)頁版微信
因為 itchat 庫和 wxpy 庫都是調(diào)用微信的網(wǎng)頁版接口,如果你的微信注冊比較晚,被限制了網(wǎng)頁版登錄功能,那這個程序你無法運行。
2、發(fā)送不到指定群
先檢查下群名稱,把群名稱一些 emoji 表情符號去掉,這些特殊符號可能導(dǎo)致無法識別。
群名稱沒錯的話,看看自動發(fā)送信息的這個號有沒有把這個群添加到通訊錄。
這樣,一個定時發(fā)送消息的小工具就完成了,你也可以在上面擴展,加上其他功能,這樣就更完善了。
Python
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。