iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
AI & Data

利用Google App Script 實作Telegram Bot系列 第 27

Day 27-Telegram Bot:天氣機器人API

  • 分享至 

  • xImage
  •  

Day 27-Telegram Bot:天氣機器人API

前言

查天氣這件事情想必在各位的生活中是不可或缺的一部份,那現在的人通常是如何獲得天氣資訊的呢?

Google、看天氣app、中央氣象局網站、直接看天象……。

那我們何不自己做一個天氣機器人呢,反正都要查嘛,自己做來用不是更有趣!

需求規劃

言歸正傳,我預計怎麼做呢?

首先先來想一下我們查天氣時會有什麼需求,我們把這幾個需求拆開來看。

時間:我們都會在出門前再查天氣,所以我們都會想知道「等一下」的天氣怎麼樣,因此需要的資料是未來的一段時間。
地點:我們一定是要到某個地方或在某個地方所以才會需要知道天氣,地點是不可或缺的。
狀況:天氣狀態、氣溫、降雨機率,不外乎就是這幾個東西是我們會比較想知道的。

現在我們大概知道需要哪些資料了,那這些資料要去哪裡拿呢?

其實網路上有很多公開的天氣API資料,中央氣象局API、Yahoo Weather API、
OpenWeatherMap API等等,使用的方法基本上差不多,透過這些資料我們就可以取得我們想要的數據。

我們這次選用的是中央氣象局的API。

那馬上就來介紹要怎麼取得我們的氣象資料啦。

中央氣象局API

首先登入中央氣象局的氣象資料開放平台。

https://opendata.cwb.gov.tw/index

點選上方選單的開發指南/使用說明。

https://opendata.cwb.gov.tw/devManual/insrtuction

進入到這個頁面就會看到使用說明,裡面有許多開發指南的說明,大家有興趣可以仔細看一下。

https://ithelp.ithome.com.tw/upload/images/20201007/20130283fT0jGyEeg3.png

而中間有個取得授權碼,我們必須要登入會員後才可以取得授權碼,之後我們必須要輸入授權碼才可以取得資料。

辦帳號的過程就不特別介紹了,填完一些資料就可以完成會員的申請。

在氣象資料開放平台上方選單的會員資訊/API授權碼的頁面可以取得自己的授權碼。

https://opendata.cwb.gov.tw/user/authkey

https://ithelp.ithome.com.tw/upload/images/20201007/201302838pdIUal5TS.png

接著我們進到氣象資料開放平台上方選單的開發指南/資料擷取API線上說明文件。

https://opendata.cwb.gov.tw/dist/opendata-swagger.html

在這裡面就可以看到許多開放的資料,而我們這次選用的是一般天氣預報-今明36小時天氣預報,這個資料的內容剛好符合我們上面的需求。

https://ithelp.ithome.com.tw/upload/images/20201007/20130283ZYwB6RQTyx.png

點選之後可以看到一些參數的說明,我們直接點選右上角的Try it out。

https://ithelp.ithome.com.tw/upload/images/20201007/20130283EGA14OgB2J.png

點下去之後會發現,剛剛的資料變成表格填空的形式,而我們就依照自己的需求去選擇要填選的資料。

我這邊僅有輸入授權碼,其他的東西完全沒有調整,好了之後就點選下方的Execute。

點下去之後就會看到下方出現了一長串JSON格式的資料。

將上面的Request URL複製丟到網址搜尋列就會看到密密麻麻的資料。

https://ithelp.ithome.com.tw/upload/images/20201007/20130283lBGCYtD3Vn.png

這串Request URL的格式可以在中央氣象局氣象資料開放平臺–資料擷取使用說明文件裡面查詢,裡面有關參數的設定說明寫得非常詳細,我會建議有想要抓API的資料一定要看一下這份文件。

中央氣象局氣象資料開放平臺 – 資料擷取使用說明

可以看到在資料擷取說明裡面都會有規格定義,而這個規格代表說我們只要更改裡面的參數就可以取得不同的資料。

https://ithelp.ithome.com.tw/upload/images/20201007/20130283hcPxd2p7KC.png

像是說如果我們想要取得新北市今明36小時天氣預報資料,那就在locationName的地方輸入新北市。

https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=授權碼&locationName=新北市

這樣取得的就會是只有新北市的資料。

https://ithelp.ithome.com.tw/upload/images/20201007/20130283e3suZxs1pk.png

如果再繼續向下細分輸入想要的elementName,例如PoP降雨機率。

https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=授權碼&locationName=新北市&elementName=PoP

https://ithelp.ithome.com.tw/upload/images/20201007/20130283oLxaNEL0hZ.png

覺得資料很亂也可以丟到JSON編輯器來看,這樣可以看到更清楚的資料分層。

https://ithelp.ithome.com.tw/upload/images/20201007/201302832FHRbSSDUe.png

這個分層的方式在後面我們做資料擷取時非常的重要,請務必讀熟JSON格式,不太熟可以回去看之前介紹JSON格式的文章。

Day 19-JSON格式

總之,我們要做的呢,就是從這些資料裡面抓出我們想要的數據顯示出來。

有了氣象API資料的來源,並且知道要如何改變參數來取得想要的數據,也對資料的格式有所了解,在下一篇就可以來寫我們的氣象機器人啦。


上一篇
Day 26-Telegram Bot:Google以圖搜圖
下一篇
Day 28-Telegram Bot:天氣機器人後端
系列文
利用Google App Script 實作Telegram Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言