[人工智障計畫] #4 突發,到底震完沒?|用氣象署資料 API 來做地震訊息模組吧!

更新於 2024/04/08閱讀時間約 9 分鐘

文前碎碎念

自從2024年4月3日的花蓮大地震發生之後,隨之而來的大小餘震便不斷的侵擾著大家的安寧生活。

尤其是三不五時就突如其來的一震,除了驚嚇之外,也增加了不少精神壓力,以及對所處環境的疑慮,甚至引發了不少「幻覺地震」的情況。

每當疑似地震發生後,心裡總會開始著急的想關心,剛才所遭遇的究竟是現實,還是因為連續數天的緊張所導致的妄想。

此時,看著桌上那面平時負責提醒我待辦事項的「人工智障」,我便萌生了讓她擔任地震播報員的構想。


是時候,讓她變得更有用了。

All About Data

首先,若要建立這種即時訊息播報模組,一切的根本就是要找到一個更新快速,同時又可靠的資料來源。

而這裡我們要使用的是由中央氣象署氣象資料開放平台所提供的 API 來取得所需的即時地震資料,接下來也會說明如何取得與使用。

raw-image

想要取用這裡的 API 的話,就要先註冊一組會員帳號,不過註冊過程需要填寫的內容不多,僅需 Email 與 密碼 即可。

因此這裡就快速的註冊一組,下方訂閱的部分可全部留空,不會影響後續流程。

raw-image

完成註冊後,會在帳號信箱中收到一封驗證信,記得先去做驗證之後再回來登入,接著就會被帶到這個取得授權碼的畫面。

raw-image

在這裡直接按下【取得授權碼】後,就會直接在按鈕旁看到自己的授權碼了。

要注意的是,這組授權碼就是你要從 API 取回資料的憑證,請小心保管以免被濫用。


以上,註冊步驟就大致完成了,接著就可以準備來串接資料啦。

資料連結

這次模組的主要功能,是要進行第震訊息的即時播報,因此在【資料主題】中就要選擇「地震海嘯」這個項目。

raw-image

進到資料列表後,可以看到在地震海嘯主題中有不少子項目,而其中有提供 API 的資料中,我們選擇顯著有感地震報告資料-顯著有感地震報告這一項作為主要訊息來源。

raw-image

點進去後,就可以看到表格最上方大大的【API】字樣,那個就是這次的目標啦。

raw-image

註:這個項目要登入後才會顯示喔。

不過在開始寫程式取用資料之前,我們還要先來看一下可以取得的內容,這裡直接點進【API】連結,系統便會帶我們來到一個神祕的測試區域來。

raw-image

這個頁面可以在正式開發前,先對我們所想要從 API 取得的資料進行參數的調整,也就是說透過這些選項,由他們的伺服器預先篩好資料​

這樣我們就可以省去在處理的步驟,按下右上角的【Try It Out】就可以開始調整測試。

raw-image

其實在官方 API 中大部份可用的參數,在這個頁面中都有做說明,可以自行參考後再進行調整,這裡我就只列出我有額外做設定的幾個項目。

  • Authorization → 必須填寫,也就是上一步驟取得的授權碼。
  • limit → 回傳資料數,這裡只要最新的,所以我就只輸入 1 筆。
  • format → 回傳格式,其實不用特別調整,預設即為 Json。

調整完畢,接著按下最下方的【Execute】後,就可以看到回傳資料的預覽了。

raw-image

回傳預覽如下

raw-image

另外,在上方還會列出取得資料用的 Curl 指令以及 Request 網址,如果已經確認參數的話,就可以直接先將 Request 這部分複製下來備用。

raw-image

接著就是讓人臉紅心跳,興奮期待的爬蟲時間啦。(並沒有

爬蟲出動

以上,我們已經拿到了抓取資料的 URL 連結,接著就是來用程式化的方式來自動取得最新警報啦。

這裡同樣的請到老朋友 Python 來坐鎮,所需用到的是「requests」這個套件來做爬蟲資料抓取,那就不囉嗦,直接上程式碼囉。

import requests

# Replace With Your Auth key
API_Key = "YOUR_API_KEY"

# Request URL Copied From Last Step
api = "https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0015-001?Authorization="+API_Key+"&limit=1&format=JSON&AreaName="

# Get JSON Data from URL With Requests Package
r = requests.get(api,headers={'Accept': 'application/json'})
jdata = r.json()

看起來很簡單對吧!

其實邏輯也不難,因為這裡所獲得的資料已經是伺服器端幫我們整理好格式化的,因此省去許多處理骯髒資料的步驟,我們只要再從抓回來的內容中,再細篩出我們要的內容就好了。

上面的範例中,唯獨要注意的部分是,我把授權碼從 URL 中切出來,放在另一個變數中了,這樣做的好處是之後如果因為某些原因要重新生成授權碼的話,可以直接修改 「API_KEY」這個變數內容就好。

甚至更安全的做法,就是將授權從程式碼中移除,直接用 Config 或是 系統變數 的方式儲存,可以避免授權被攔截盜用。

接著我們先在 Jupyter Notebook 中測試執行上面的程式,看一下回傳的資料,可以發現在內容上大致就跟網頁上測試時的相同。

raw-image

由於我這個模組最終是會使用文字轉語音自動朗讀的,因此就只取發生時間⁠⁠⁠、主要震央位置,以及最大震度這一項資訊,如果從 Json 中細篩的話,階層大概是

 ⁠jdata['records']['Earthquake'][0]['ReportContent']

而實際抓出來的內容就會像是這樣。

raw-image

到這裡我們這次的目的大致上已經達成了,但如果想要有比較順暢的文字語音的話,可以在針對這串文字做內容調整,讓語句更自然通順。


到目前為止,我們已經能順利抓到我們要的資訊了。

讓它跑下去

不過,既然我們要做的是即時播報的功能,就勢必得讓爬蟲能夠持續運作,並定時抓取最新訊息,因此接下來所要做的,就是讓它能夠自動化的執行下去。

而提到循環運作,相信有一些程式概念的人,應該都會想到「迴圈」這個詞吧?

沒錯,這裡就是要使用迴圈的特性來讓爬蟲能夠定時處理資料擷取的工作。

以我自己的「人工智障」專案來說,就可以綁在控制電子紙螢幕的主程式中一起執行。

不過,為了大家提供參考,這裡就另外做一份簡化後的範例吧!

import requests
import time

# Replace With Your Auth key
API_Key = "YOUR_API_KEY"

# Function to Get Request Data
def getquk():
# Request URL Copied From Last Step
api = "https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0015-001?Authorization="+API_Key+"&limit=1&format=JSON&AreaName="

# Get JSON Data from URL With Requests Package
r = requests.get(api,headers={'Accept': 'application/json'})
jdata = r.json()

#​ Get Content
res = jdata['records']['Earthquake'][0]['ReportContent']
return res

# Info Buffer
buff = None

# Main Loop
while True:
# Get Latest Earthquake Info
qdata = getquk()
# If Any New Alert
if qdata != buff:
# Put TTS System Here
print(qdata)
# Update Buffer
buff = qdata
# Wait 100 Sec For Next Loop
time.sleep(100)

嗯⋯事情看起來有點複雜了。

簡而言之,就是將前面的爬蟲步驟定義成一個名為「getquk」的功能,並且每 100 呼叫一次來取得最新資訊。

而每一次所拿到的資料,都會先跟一組暫存的紀錄作比對,如果有任何變化,就會觸發特定動作,而這個動作就可以是呼叫額外的文字轉語音模組把最新資訊朗讀出來。

最後再將暫存紀錄做更新,然後進入待命 100 秒後,再重新執行一次,直到程式終止。


以上,就是這次的地震播報模組開發紀錄啦。


後記

在我寫完這個模組,並實裝在實際硬體設備上後,當天下午就連續收到兩次的通報,有一次還是確實有感,仔細想想也是真的蠻嚇人的。

raw-image

近期餘震仍頻繁,再加上部分區域又開始變天下雨,也希望大家都能平安度過囉。


《計畫。待續》

avatar-img
47會員
250內容數
偽命名並非無名,是為了意識的生存,取得身份的代號,成為數位生命的新載具。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
偽命名培養體 的其他內容
首先,我要先對之前關注此系列的人說聲抱歉,之前因為自己的技術瓶頸,讓進度遲遲無法推進,最後只好暫時擱置,而不知不覺,一年時間也過去了,也該是時候為這段空白,給出一些交代了。
又是一段忙碌的日子,好不容易稍微有精力來記錄這個主題的進度了,但消息可能並沒想像中那麼美好。
又好一段時間沒更新這個專案了,近期因為正職工作的關係,較難整理過於瑣碎的開發進度。
嗯⋯這個專案,確實發生了不妙的事情,其實近日來,我都會將這台半成品實際帶到辦公室去,一方面測試穩定性,一方面發覺新需求,直到某天⋯
繼上一步完成了後台及基本控制選項後,接下來就該來正式將前後台做個連結了,不過在此之前,我們先來確立一下前後端所各自扮演的角色。
其實要為專案建立操作介面的方式很多,除了網頁之外,還能另外寫個專門的手機 APP 連線,或是乾脆升級算法,讓我們能隨口喊一聲「嘿OO!」就搞定,不過⋯
首先,我要先對之前關注此系列的人說聲抱歉,之前因為自己的技術瓶頸,讓進度遲遲無法推進,最後只好暫時擱置,而不知不覺,一年時間也過去了,也該是時候為這段空白,給出一些交代了。
又是一段忙碌的日子,好不容易稍微有精力來記錄這個主題的進度了,但消息可能並沒想像中那麼美好。
又好一段時間沒更新這個專案了,近期因為正職工作的關係,較難整理過於瑣碎的開發進度。
嗯⋯這個專案,確實發生了不妙的事情,其實近日來,我都會將這台半成品實際帶到辦公室去,一方面測試穩定性,一方面發覺新需求,直到某天⋯
繼上一步完成了後台及基本控制選項後,接下來就該來正式將前後台做個連結了,不過在此之前,我們先來確立一下前後端所各自扮演的角色。
其實要為專案建立操作介面的方式很多,除了網頁之外,還能另外寫個專門的手機 APP 連線,或是乾脆升級算法,讓我們能隨口喊一聲「嘿OO!」就搞定,不過⋯
本篇參與的主題活動
昨晚又地震了…… 雖然我居住的東京不是震央,離震央的距離有4、500公里吧。搖晃的時間太久,耳裡的半規管也失去平衡,比搭乘遊樂園的海盜船暈的更厲害。 關於日本的抗震基準可以參考以前的文章👉日本中長期住房問題的解決辦法-房屋狀態(小標題) 2022/03/17 posted.
創傷是一個共同的經歷,甚至不必親歷其境,只要想到受災地的淒慘面目,僥倖或者藏在心底,但更多的是強烈的衝擊與不安。這是因為受限於地域的災禍背後,有着超越國界的共性和意義。
我在方格子的第一篇地熱發電文章【讓核電消失的基載再生能源-AGS/CLG地熱發電-初探】曾經提到AGS/CLG地熱發電不會引起誘導地震(Induced Earthquake),這是一個相對安全的地熱發電技術。本文來談談為何地熱發電發展幾十年了,其聲勢不如離岸風電、太陽光電、陸上風電的真正原因,那就是
台灣和日本一樣因為地理因素,是屬於地震活動和颱風十分頻繁的區域。想起22年前的921大地震造成上萬人傷亡,以及數萬間房屋倒塌;近年梅雨季與夏季颱風來臨時,臺灣各地總是下著傾盆大雨,使得低窪地區易造成水災。有想過這些災害發生在自己居住的地區該怎麼辦嗎?萬一周遭沒有大人怎麼辦?該採取哪些行動? 這系列
311東日本大震災十年過去了。對於災後重建的情況,日本的東北復興究竟已履及何處?從硬體的防災設施打造,到災後的心理支持,東北三縣的災後復興又有些哪些未竟之處?讓我們暫時撇開那些紛擾,直面地看待東北復興之路上,那些已解的課題與待解的難題。
首先,我要鄭重的再次強調:台灣人好日子過太久,實在太沒有憂患意識了!最近一次遭遇全國性的大型天災,或許就是921震災。但是坦白說,那樣的強度與傷害性,離大型災難還有一段距離。至於人禍就更遙遠了,曾經親身經歷二次大戰的台灣人已經寥寥可數。 再看看五月中第一次宣布「三級警戒」時,有多少人像無頭蒼蠅般
昨晚又地震了…… 雖然我居住的東京不是震央,離震央的距離有4、500公里吧。搖晃的時間太久,耳裡的半規管也失去平衡,比搭乘遊樂園的海盜船暈的更厲害。 關於日本的抗震基準可以參考以前的文章👉日本中長期住房問題的解決辦法-房屋狀態(小標題) 2022/03/17 posted.
創傷是一個共同的經歷,甚至不必親歷其境,只要想到受災地的淒慘面目,僥倖或者藏在心底,但更多的是強烈的衝擊與不安。這是因為受限於地域的災禍背後,有着超越國界的共性和意義。
我在方格子的第一篇地熱發電文章【讓核電消失的基載再生能源-AGS/CLG地熱發電-初探】曾經提到AGS/CLG地熱發電不會引起誘導地震(Induced Earthquake),這是一個相對安全的地熱發電技術。本文來談談為何地熱發電發展幾十年了,其聲勢不如離岸風電、太陽光電、陸上風電的真正原因,那就是
台灣和日本一樣因為地理因素,是屬於地震活動和颱風十分頻繁的區域。想起22年前的921大地震造成上萬人傷亡,以及數萬間房屋倒塌;近年梅雨季與夏季颱風來臨時,臺灣各地總是下著傾盆大雨,使得低窪地區易造成水災。有想過這些災害發生在自己居住的地區該怎麼辦嗎?萬一周遭沒有大人怎麼辦?該採取哪些行動? 這系列
311東日本大震災十年過去了。對於災後重建的情況,日本的東北復興究竟已履及何處?從硬體的防災設施打造,到災後的心理支持,東北三縣的災後復興又有些哪些未竟之處?讓我們暫時撇開那些紛擾,直面地看待東北復興之路上,那些已解的課題與待解的難題。
首先,我要鄭重的再次強調:台灣人好日子過太久,實在太沒有憂患意識了!最近一次遭遇全國性的大型天災,或許就是921震災。但是坦白說,那樣的強度與傷害性,離大型災難還有一段距離。至於人禍就更遙遠了,曾經親身經歷二次大戰的台灣人已經寥寥可數。 再看看五月中第一次宣布「三級警戒」時,有多少人像無頭蒼蠅般
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
「聽好多人在用AI賺錢、經營副業,但我卻不知該如何下手…… 不然來試試看好了🔥 奇怪!他產出來的東西,品質不好,哪裡能直接用? 這是人工智慧嗎? 根本是人工智障吧!」 不知道你有沒有這種經驗呢? —- 一開始玩Notion AI時, 我總覺得他產出的品質,接近垃圾。 但認真相處4個月後,終於抓到使
Thumbnail
生活之中被賦予第二生命就屬自身的愛車「金園 x Golden Garden」掀開淡金不銹鋼掛畫,替人工技藝的冷冽找尋愛車的注腳。 寫實的木板畫結合現代藝術品,留下默契與伴隨的蹤跡,讓「金園 x Golden Garden」乘載出專屬的瑰麗回憶。
當一件事沒有照我們想的完成或拖延時,是否常會有種對自己的厭惡感?也有可能隨之而來的責罵或是處罰,讓我們誤以為就是因為我們沒做好A而得到B這個想法。
Thumbnail
「香氛」,是人類探索環境很重要的一種感受來源,現今生活環境中充滿了各式各樣的香氛,但有點可惜的是,自然香氛越來越少而人工香氛卻越來越多。各種香氛越來越強烈、越來越持久,這對人類來說真的不是好事。在老子道德經中有提及『五色令人目盲,五音令人耳聾,五味令人口爽。』也就是很好的提醒。
Thumbnail
各位讀者你好,這是我第一次在這平台上發文,小弟是一位高中生即將升上大學,對電腦科技極為著迷,以後也想選資工系,現在靠著影片和書籍自學,沒有一個比較有系統性的學習,所以可能會有些錯誤,也請各位讀者指教。 從以前的石器、鐵器時代到現在資訊爆炸的年代,我們的生活已經變得截然不同,不再需要為了取水、食物這些
Thumbnail
人工關節是將人體因各種疾病或意外傷害造成無法使用的關節,以外科手術的方法予以置換的人工植入物,例如膝關節、髖(股)關 節、肩關節、肘關節、腕關節、踝關節 、指關節,甚至連脊椎的關節都已可以置換,較常見的部位為膝、髖及肩、肘等。 1960年代,英國醫生 John Chamley 研發了第一個人造關節,
Thumbnail
結婚幾年,還是沒有懷上寶寶。眼看朋友一個個傳來好消息,而自己即使有請中醫師調理身體仍未懷孕,也開始有點焦急了。雖然說生孩子是看緣份,但有些事情是否能再努力一下呢? 如果寶寶速速報到當然最好,不然計劃懷孕是件很累的事。要自然懷孕勞心勞力,生活的一切彷彿變成懷孕先決。突然間,夫妻變成同事,擬定時間表、商
人工運河平靜得像幅畫 藍天刷上淡淡白雲停止時間 微風悄悄擦肩堤岸樹木 漿果滿地踩出哀怨聲音 蟬叫決定更加高亢
一樣是「個人實相的本質」57,這一段講得非常精彩(非常值得一聽再聽) 這世界太多的人工罪惡感,以致於讓我們常常淪於批判自己、否定自己… 而且在這宇宙並沒有所謂「懲罪」的概念…所有的只是「反省的一刻」這件事… 為的只是讓我們在遇到相類似的情境時,可以再重新做出選擇,而不是老是撞牆 只是為了「提醒」的功
人工植牙是什麼?我想讓我的牙齒變得更整齊,並且改善缺牙齒會漏風的情況,不過很多人想做植牙,卻總是猶豫不決的原因是,因為人工植牙會需要靠手術去進行,因此植牙後遺症常常是我們會擔心的問題,想知道人工植牙究竟是怎麼做到的呢?讓博仁綜合醫院牙科部為你做個簡單的介紹! 人工植牙它的優點是,能夠完善的補足多處缺
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
「聽好多人在用AI賺錢、經營副業,但我卻不知該如何下手…… 不然來試試看好了🔥 奇怪!他產出來的東西,品質不好,哪裡能直接用? 這是人工智慧嗎? 根本是人工智障吧!」 不知道你有沒有這種經驗呢? —- 一開始玩Notion AI時, 我總覺得他產出的品質,接近垃圾。 但認真相處4個月後,終於抓到使
Thumbnail
生活之中被賦予第二生命就屬自身的愛車「金園 x Golden Garden」掀開淡金不銹鋼掛畫,替人工技藝的冷冽找尋愛車的注腳。 寫實的木板畫結合現代藝術品,留下默契與伴隨的蹤跡,讓「金園 x Golden Garden」乘載出專屬的瑰麗回憶。
當一件事沒有照我們想的完成或拖延時,是否常會有種對自己的厭惡感?也有可能隨之而來的責罵或是處罰,讓我們誤以為就是因為我們沒做好A而得到B這個想法。
Thumbnail
「香氛」,是人類探索環境很重要的一種感受來源,現今生活環境中充滿了各式各樣的香氛,但有點可惜的是,自然香氛越來越少而人工香氛卻越來越多。各種香氛越來越強烈、越來越持久,這對人類來說真的不是好事。在老子道德經中有提及『五色令人目盲,五音令人耳聾,五味令人口爽。』也就是很好的提醒。
Thumbnail
各位讀者你好,這是我第一次在這平台上發文,小弟是一位高中生即將升上大學,對電腦科技極為著迷,以後也想選資工系,現在靠著影片和書籍自學,沒有一個比較有系統性的學習,所以可能會有些錯誤,也請各位讀者指教。 從以前的石器、鐵器時代到現在資訊爆炸的年代,我們的生活已經變得截然不同,不再需要為了取水、食物這些
Thumbnail
人工關節是將人體因各種疾病或意外傷害造成無法使用的關節,以外科手術的方法予以置換的人工植入物,例如膝關節、髖(股)關 節、肩關節、肘關節、腕關節、踝關節 、指關節,甚至連脊椎的關節都已可以置換,較常見的部位為膝、髖及肩、肘等。 1960年代,英國醫生 John Chamley 研發了第一個人造關節,
Thumbnail
結婚幾年,還是沒有懷上寶寶。眼看朋友一個個傳來好消息,而自己即使有請中醫師調理身體仍未懷孕,也開始有點焦急了。雖然說生孩子是看緣份,但有些事情是否能再努力一下呢? 如果寶寶速速報到當然最好,不然計劃懷孕是件很累的事。要自然懷孕勞心勞力,生活的一切彷彿變成懷孕先決。突然間,夫妻變成同事,擬定時間表、商
人工運河平靜得像幅畫 藍天刷上淡淡白雲停止時間 微風悄悄擦肩堤岸樹木 漿果滿地踩出哀怨聲音 蟬叫決定更加高亢
一樣是「個人實相的本質」57,這一段講得非常精彩(非常值得一聽再聽) 這世界太多的人工罪惡感,以致於讓我們常常淪於批判自己、否定自己… 而且在這宇宙並沒有所謂「懲罪」的概念…所有的只是「反省的一刻」這件事… 為的只是讓我們在遇到相類似的情境時,可以再重新做出選擇,而不是老是撞牆 只是為了「提醒」的功
人工植牙是什麼?我想讓我的牙齒變得更整齊,並且改善缺牙齒會漏風的情況,不過很多人想做植牙,卻總是猶豫不決的原因是,因為人工植牙會需要靠手術去進行,因此植牙後遺症常常是我們會擔心的問題,想知道人工植牙究竟是怎麼做到的呢?讓博仁綜合醫院牙科部為你做個簡單的介紹! 人工植牙它的優點是,能夠完善的補足多處缺