過年想有人跟著回家?Python智慧化“天氣提醒”幫你搞定小姐姐
前輩前幾天發的文章,操作python那可是一流的666,分享過小編的可愛的小夥伴們,對沒有學python和在學python的小夥伴來說,那絕對是精品中的精品。優秀上的優秀。最重要是教單身程式設計師怎麼撩小姐姐哦!
程式設計師和未來的程式設計師必學,跟著小編這個有了21年經驗的小姐姐,一起學習下面的內容吧!
小編整理一套Python資料和PDF,有需要Python學習資料可以加學習群:984632579,反正閒著也是閒著呢,不如學點東西啦~~
開講啦 開講啦:
實現第一步,用“和風天氣”API獲取天氣資料(當然你也可以選用其他的介面)
城市介面: https://api.heweather.com/x3/weather?cityid=城市ID&key=你的認證key
update 和風天氣的API11月初改版了,所以上述介面地址需要更換成新的,看了下就加了個“free-”,後面程式碼加上就好了。
介面地址變了
首先得註冊登入和風天氣獲得key,在城市程式碼裡面找到想要查的城市ID,以北京為例:CN101010100
城市ID
接著用API除錯工具試試這個介面,看看返回的是什麼資料。
我用的是chrome下postman,開啟postman,輸入介面連結:
https://api.heweather.com/x3/weather?cityid=CN101010100&key=這裡填你的key
API除錯
返回的是JSON格式的,現在用Python呼叫一下這個介面試試:# -- coding: utf-8 --
import urllib2
#呼叫和風天氣的API
url = ‘https://api.heweather.com/x3/weather?cityid=CN101010100&key=你的key’
#用urllib2建立一個請求並得到返回結果
req = urllib2.Request(url)
resp = urllib2.urlopen(req).read()
print resp
python返回的資料:
我們用postman看看結構就好了。
Python內建資料型別和JSON的對應關係
對應關係
Python內建的json模組提供了非常完善的Python物件到JSON格式的轉換。我們用loads()方法把JSON反序列化為Python物件
#將JSON轉化為Python的資料結構
json_data = json.loads(resp)
print json_data
結果發現資料變成了u’XXXXX’的格式,這是因為反序列化得到的所有字串物件預設都是unicode編碼的。
結果:
我們此時已經將天氣資料拿到,並且反序列化為Python物件了,只有提取我們需要的資料即可。看下天氣API提供哪些資料
postman上的JSON結構
我就每天早上聽一下今天的氣溫、風力、pm2.5、穿衣建議就好了。
現在以獲得pm2.5的值為例,一層層獲取到pm2.5的值
pm2.5的值
上面說了JSON裡面{}對應的是Python的dict,[]對應的是Python裡的list,上圖中可以比較清楚地知道這個JSON得到的Python資料其實是dict和list的多層巢狀。這裡我們可以類比查《新華字典》,想要查到“天氣”這個詞,可以找到字母T的頁碼(按A~Z的有序列表),再找到“tian”所在的位置,一步步往裡找就成找到想要的詞了。
最外層是個dict型別:
dict: {'HeWeather…": [ list]}
往裡一層是多個dict,直接通過多層dict[‘key’][‘key2’]…就能取得PM2.5的值了:
list 只有一個值,取list[0] (它的值是一個dict),取得天氣只需要
print json_data[‘HeWeather data service 3.0’][0][‘aqi’][‘city’][‘pm25’]
獲取天氣資料的程式碼:
為什麼沒有放出全部的程式碼,因為小編還沒有男朋友,小編群裡的管理員小姐姐也沒有哦!
程式碼執行後:
執行結果
第二步、將文字合成語音:
我直接用的百度的語音合成API,呼叫方法很簡單(瀏覽器就可以玩)
1、同樣是註冊登入獲得key,百度語音
2、註冊個應用,隨便啥應用都行,獲得APPID
這幾步都可以參考官方接入指南
3、獲得token(一個月有效期,過期再獲取即可)
瀏覽器輸入:
https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的AppID&client_secret=你的AppKey
返回的JSON裡面的“access_token”就是呼叫百度語音合成API要用的token
4、合成語音 ,必填、選填引數可看官方文件
http://tsn.baidu.com/text2audio?tex=需要合成語音的文字&lan=zh&per=0&cuid=裝置mac地址或手機的IMEI碼&ctp=1&tok=你的token
5、我們只需要把天氣文字放在第4步的連結tex=’ '裡面就好了
過年想有人跟著回家?Python智慧化“天氣提醒”幫你搞定小姐姐
這麼優秀的程式碼,不上手一下嗎?
第三步、用樹莓派播放天氣預報:
樹莓派上安裝linux音訊播放程式 mpg123,執行
sudo apt-get install mpg123
這玩意使用起來異常簡單,試試用命令列 “mpg123 語音url” 來播放線上的音訊
mpg123 http://tsn.baidu.com/text2audio?tex=需要合成語音的文字&lan=zh&per=0&cuid=裝置mac地址或手機的IMEI碼&ctp=1&tok=你的token
現在只要把第一步獲得的天氣文字用mpg123播放就好了,在第一步的程式碼基礎上加上這些:
url = “http://tsn.baidu.com/text2audio?tex=” + weather_forcast_txt + “&lan=zh&per=0&cuid=裝置mac地址或手機的IMEI碼&ctp=1&tok=你的token”
os.system(‘mpg123 “%s”’%(url)) #需要import os
最後,定時執行天氣播報腳步就好了
用linux的crontab,可檢視crontab定時任務
在終端執行
sudo crontab -e
新增一條
0 8 * * * python /home/pi/…(你的天氣播報指令碼的路徑)
即每天8點整執行語音播報
切記:得到程式碼後要跟著敲打一邊,進行實操練習!
是不是很贊哇~
還不趕快動手操作下,做個定製版的“播報提醒”程式,暖心你的小姐姐,加油!
願有情人終成眷屬。
小編坐等學python的小姐姐來撩哦!
相關文章
- 使用 Python 和 Prometheus 跟蹤天氣PythonPrometheus
- 過年回家,程式猿的徵婚要求
- 資料庫簡化運維,智慧診斷助手幫你搞定!資料庫運維
- Python 實現圖書超期提醒小幫手Python
- 文件太多彆著急,OCR識別工具幫你一鍵搞定!
- 跟著 AI 一個小時學會 PythonAIPython
- 手把手教你用python搶票回家過年 !(附程式碼)Python
- 來自一個程式猿的傲氣:過年回家手動搶票是不可能的
- 智慧工具+海量模板幫你輕鬆搞定主圖設計!
- 過年,你肯定會用到這款小程式!
- 第1天 | 12天搞定Python,告訴你有什麼用?Python
- 彩雲天氣:用人工智慧,給你打造私人天氣預報員人工智慧
- 跟著菜鳥學pythonPython
- 歲末贈書活動——帶上圖靈新知圖書與你一起回家過年圖靈
- python天氣查詢Python
- Python 獲取當地未來五天天氣 天氣預報 獲取天氣Python
- 漫畫 | C語言哭了,過年回家,只有我還沒物件C語言物件
- 帶上《與孩子一起學程式設計》回家過年!程式設計
- 跟著廖雪峰學python 005Python
- 擼一個微信天氣小程式
- 天氣小程式筆記總結筆記
- 微軟小冰:那個胖胖的羅叔叔 別欺負我跟姐姐微軟
- 12個資料幫你搞定店鋪生意
- 八款卓越開源工具幫你搞定資料視覺化難題開源工具視覺化
- IPD專案管理流程如何最佳化?這些軟體幫你搞定!專案管理
- 圖形化天氣外掛
- 兩天擼一個天氣應用微信小程式微信小程式
- 想知道你家周圍的天氣狀況?這套系統幫你完成心願
- 5.22 天氣預報系統 小
- 21 天搞定 Python 分佈爬蟲Python爬蟲
- 只需瀏覽器,就能幫你搞定原型設計瀏覽器原型
- 跟著sleep看jvm執行緒變化JVM執行緒
- Natsuha - 用Taro寫個天氣微信小程式微信小程式
- 跟著小程學微服務-Mock自動化系統的原理及實現微服務Mock
- iOS仿照Yahoo天氣:油條天氣iOS
- 12個資料幫你搞定店鋪生意——資訊圖
- 第10天 | 12天搞定Python,檔案操作(超詳細)Python
- 第3天 | 12天搞定Python,用PyCharm編寫程式碼PythonPyCharm