Python實現天氣預報
菜鳥專用,大神勿入
------------------------------------
工具:Python3.5
VPS - CentOS6.5
天氣預報API:心知天氣 - 天氣數據API和插件
免費簡訊:Twilio - APIs for Text Messaging, VoIP & Voice in the Cloud
(非廣告,以上兩個API都有免費和收費版本,而我只用它們的免費服務)
0. 前期準備
先去以上兩個網站註冊賬號,然後熟悉一下兩個API的使用方法,此處不表
1. 編寫天氣預報腳本
weather_forecast.py
#!/usr/bin/python#-*- coding:utf-8 -*-import requestsfrom twilio.rest import TwilioRestClient #注意要先pip install twiliodef getWeather(): # 設置心知天氣的apikey # 並構造請求URL xinzhi_apikey = "XXXXX" url = "https://api.thinkpage.cn/v3/weather/daily.json?key=%s&location=guangzhou&language=zh-Hans&unit=c&start=0&days=5" % xinzhi_apikey # 獲取天氣預報信息 # 此處只取今天和明天2天的預報 r = requests.get(url) w = r.json()["results"][0]["daily"] today = "今天是%s,白天%s,晚上%s,最高氣溫%s,最低氣溫%s" % (w[0]["date"], w[0]["text_day"], w[0]["text_night"], w[0]["high"], w[0]["low"]) tomorrow = "明天是%s,白天%s,晚上%s,最高氣溫%s,最低氣溫%s" % (w[1]["date"], w[1]["text_day"], w[1]["text_night"], w[1]["high"], w[1]["low"]) message = today +
+ tomorrow return messagedef sendMessage(message): 接收傳入的參數做為簡訊主體——即天氣預報內容,發送到目標號碼 # 設置twilio賬戶信息 twilio_account_sid = "你的twilio賬戶的account_sid" twilio_auth_token = "你的twilio賬戶的auth_token" client = TwilioRestClient(twilio_account_sid, twilio_auth_token) # 注意to和from_兩個參數所代表的手機號,都需要帶有國家代碼。如中國大陸手機號即+86開頭再加上自己的手機號。from_中的號碼直接複製twilio提供的號碼即可 client.messages.create(to="接收者的手機號", from_="twilio提供給你的收發信息的手機號", body=message) return Noneif __name__ == "__main__": weather = getWeather() sendMessage(weather)
如果自己的配置信息沒錯,直接執行以上腳本,就可以在指定的目標手機號上接收到天氣預報信息
2. 設置定時執行腳本
Linux下定時執行腳本,我用的是crond服務,直接在shell下執行
crontab -e
即可進入編輯定時執行任務的列表文件。具體的crond服務使用方法可參考Linux下Crond計劃任務設置格式
我設置的是每天早上7點30分執行一次,這樣我就可以在每天起床時即收到天氣預報信息。crondtab列表編輯如下:
30 7 * * * /usr/local/python3.5/bin/python3 /home/xian/weather_forecast.py
由於我的VPS上同時存在著Python2和Python3,所以在要crontab中指定編譯器位置,再用於執行指定路徑下的Python文件
----------------------------------------
由此,一個簡單的簡訊天氣預報就完成了。
如果有發現設置了crontab並且各個參數正確但是不生效,可以試試重啟crond服務
service crond restart
對於天氣預報簡訊在這個年代是否還有必要,此處不討論。
當然除了定時發送天氣預報,還可以發送其它信息的。twilio的一個好處就是不像國內的很多簡訊API,需要固定格式,類似驗證碼。它可以發送任何自定義內容。當然,免費版還是會有些冗餘信息的:
推薦閱讀: