SSブログ

23.何番煎じだ! 天気予報 [Ubuntu]

「ゲームは一日一時間まで」 と書いていたら、
実際にそれをやった自治体があったとかw


まあ、ハマっているときはともかく、
飽きた(醒めた)時の無駄な時間と金使った感というか
もう読まなくなった本や遊ばなくなったゲームを部屋の掃除で見かける度に……、
ちょっと色々考えますねえ

余暇時間はまずはリアルを充実させることが一番で
ゲームは、余暇時間の余暇時間でやりましょう、ってところですかね。

    ヽ(´ー`)ノ .:*:・'゚☆。.:*:・'゚★。.:*
          
     キュウジツハ イチニチジュウ カンコレ ヤッテルヒトガ イッテモネエ


それ以外にも、「あんたも好きねぇ」 なんて書いていたら、
その相方が亡くなったりとか
センバツの甲子園が中止になったり、
オリンピックが(限りなく中止に近いと思われる)延期になったり、
2020年はいろいろとありすぎでしょう。 (まだ半分も過ぎていないのに)



     2020年は、2011年と同様に忘れ難い年になりそうですな……




さて、最近は三寒四温というか、寒の戻りというか、
暑かったり急に寒くなったりしております。
朝コートを着て行こうかどうしようか迷ったりもします。
季節の変わり目で単に傘が要るかどうかレベルじゃなくて
気温も含めて一年で一番天気予報が必要な時期かな、と思ったりしております。


ところが現在のお天気GNOMEは、現在の天気を表示するだけで
残念ながら日本の天候については明日の予報はしてくれません。
ソフトウェアから「天気予報」「Weather」「Forecast」等で検索しても
何というか、好みに合わないなものしかありません。

Windows版のアプリからwineで動作しそうなものを探してきてもいいんですが
探すのもwine で動作するか確認するのもめんどくさいんで、
ウェブの天気予報のショートカットを作って、デスクトップに置いてました。



   ただ、次第にクリックするのもめんどくさい(←オイ)



もとい、めんどくさくなりましてw
せっかくcronという自動で実行してくれる機能があるんだから
時報と同じようにnotify-sendで天気予報も表示させりゃいいだろうと思いまして。
で、いっそ作ってみようかと思ったわけです。


「無いならつくればいいじゃない」とか
「無いのなら作ってみようホトトギス」とか
どこぞのマリーさんや藤吉郎さんが言いそうなセリフですが (実際には後世の作?)

   何回やる気だ! ○ウシカ
   何番煎じだ! 天気予報


まあ、本日のお題は天気予報です。

まずは天気予報の情報をどうやったら取得できるかWebで色々と調べました。
必要は発明のマザーと申しますかw 色々とありますねえ。
実際為替とか取得するよりも天気予報の方が需要がありますしね。

どうやらAPIを使う方法とウェブスクレイピングという手法があるそうです。
使用する言語も含めて、ググると色々なやり方が有りますね。
覚えておくと色々と応用が利きそうなので、
まずはウェブスクレイピングを使うことにしました。
言語は、前にRPAというか自動化でpythonに失敗しましたんで
今回はリベンジでpythonに決定。

天気予報の元ネタですが、個人利用に問題がなさそうな気象庁のHPから
取得することにしました。
「気象庁ホームページ」
https://www.jma.go.jp/jma/kishou/info/coment.html


で、まずはさくっと必要なものを端末からインストールします。

sudo apt-get install python-bs4
sudo apt-get install python3-requests

次に気象庁の天気予報サイトですが、
天気予報よりも週間天気予報の方が分かりやすいので、そっちを使うことにします。

天気を取得したい都道府県を選択して、
ブラウザのメニューからHTMLページのソースを見ます。
気象庁のHPは大きくdivでグループ分けしてますので、
まずは予報部分のdivを確認します。
テーブルのidがinfotablefontのなかに必要な情報がありそうです。
でつくったのがこちらになります。

(追記)
2021年になったらHPが変更になったようで、
今現在は動作しませんね。
2020年だったらこうでした、というカンジでヨロ


t_weather_forecast.py
#ライブラリのインポート
import os #osモジュール
import requests #HTTP 通信ライブラリ

from bs4 import BeautifulSoup

#気象庁の週間天気予報から引用 取得したい都道府県のURLをセットする
r = requests.get("https://www.jma.go.jp/jp/week/319.html")

#HTMLパーサーを利用してBeautifulSoupオブジェクトを作成する
soup = BeautifulSoup(r.content, "html.parser")

#明日の日付
t_day = soup.find("table", {"id": "infotablefont"}).find_all("tr")[0].find_all("th")[1].text

#各府県の週間天気予報
t_reagion = soup.find("table", {"id": "infotablefont"}).find_all("tr")[1].find_all("th")[0].text

#明日の天気予報
t_weather = soup.find("table", {"id": "infotablefont"}).find_all("tr")[1].find_all("td")[0].text

#明日の降水確率
r_percent = soup.find("table", {"id": "infotablefont"}).find_all("tr")[2].find_all("td")[1].text

#明日の最高気温
h_temperature = soup.find("table", {"id": "infotablefont"}).find_all("tr")[4].find_all("td")[1].text

#明日の最低気温
l_temperature = soup.find("table", {"id": "infotablefont"}).find_all("tr")[5].find_all("td")[1].text

#結果の出力
s_title = "{}日({}) の天気は{}です。".format(t_day[:-1],t_day[-1],t_weather)
s_message = "降水確率(%) :{}
最高気温 :{}
最低気温 :{}
出典 気象庁 週間天気予報 :{}".format(r_percent,h_temperature,l_temperature,t_reagion) if ('晴' in t_weather and '曇' in t_weather): s_icon = "--icon=weather-few-clouds"#やや雲のある日中 elif ('晴' in t_weather and '雨' in t_weather): s_icon = "--icon=weather-showers-scattered"#所によりにわか雨 elif ('曇' in t_weather and '雨' in t_weather): s_icon = "--icon=weather-showers"#にわか雨 elif ('晴' in t_weather): s_icon = "--icon=weather-clear" #晴天 elif ('曇' in t_weather): s_icon = "--icon=weather-overcast"#曇り elif ('霧' in t_weather): s_icon = "--icon=weather-fog"#霧 elif ('雪' in t_weather): s_icon = "--icon=weather-snow"#雪 elif ('雨' in t_weather): s_icon = "--icon=weather-showers"#にわか雨 else: s_icon = "--icon=weather-storm" #s_icon = "--icon=weather-clear-night"#雲のない夜 #s_icon = "--icon=weather-few-clouds-night"#やや雲のある夜 #s_icon = "--icon=weather-severe-alert"#悪天候警報 (荒天警報) os.system('notify-send "'+s_title+'" "'+s_message+'" "'+s_icon+'"')

ぶっちゃけところどころ改行がおかしくなるので、参考程度にお願いします。
タイトルのところをタグbigでかこっている部分とか
(#結果の出力あたりは手修正が必要)

深夜にチェックすることを想定していますので、
明日の天気といいつつ実質今日の天気だったりします。
アイコンの図柄にイマイチ納得はしてないですが、まあ許容範囲かと。


23-01.png

23-02.png

23-03.png

23-04.png

23-05.png

23-06.png

23-07.png


後はcron に /usr/bin/python3 ~/t_weather_forecast.py と登録したら
自動的に天気予報を取得してくれますね。
これで明日の天気予報を見逃す心配もない筈。

  ……ただ、一身上の都合により
    5月6日まで、めったに外出する機会自体がなくなりましたがwww


  ヽ(´ー`)ノ だから2020年はいろいろとありすぎるってw 


タグ:ubuntu

共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。