PythonでAPIからの取得データをLINE MessagingAPIでLINE通知する

Pythonで気象情報を取得してLINE通知するシステムを作ってみます。流れとしては以下の通り非常にシンプルなものとします。

  1. 気象情報APIから天気予報を取得
  2. 予報内容を通知用に加工
  3. LINEに通知する

気象情報APIから天気予報を取得

まず、気象情報ですが、Rakuten Rapid APIで「Open Weather Map」というAPIを見つけましたので、こちらを活用してみたいと思います。

https://api.rakuten.net/community/api/open-weather-map/details

利用には事前にRakuten Rapid APIへの登録が必要となります。

「Open Weather Map」は世界中の気象情報を提供しているAPIで商用利用可能という事です。100件/日であればBasic0円プランで利用できます。世界中の都市ごとの天気であったり、3時間置きの天気であったり様々な取得が可能です。

Open Weather Mapの具体的な使い方は、以下などで良く纏められています。
https://tacs-port.tech/blog/api/blog-132/

API使用時には 管理画面より API_KEY を取得し控えておきます。

予報内容を通知用に加工

APIからはJSON形式で結果が送られてきますので、取得した予報内容を適宜LINEで通知したい内容に整形します。

今回は京都市の3時間置きの天気情報を本日分だけ通知するようにしてみました。ソースコードは上記 getWeather() の後半部分です。

一応テストも兼ねて絵文字も表示させてみました。天気を 晴れ・雨・雪・曇り で分けて表示されるようにしてみました。この辺りの分岐は適当ですので適宜変更してください。

LINE Massaging APIから通知を送る際に、文中に使える絵文字の種類は以下の通りです。
https://developers.line.biz/media/messaging-api/emoji-list.pdf

絵文字同様にスタンプも送る事が可能ですが、使えるスタンプは以下に限られています。
https://developers.line.biz/media/messaging-api/sticker_list.pdf

LINEに通知する

LINEへの通知方法はいくつかありますが、今回はLINE Messaging APIを使用してみます。

LINE Developersへの登録は事前に済ませておいてください。登録手順などはこちらでは割愛します。

まずは、LINE Developersの管理画面より、USER_IDACCESS_TOKENを取得してください。取得出来ましたらそちらを使用して以下のコードで任意のLINEユーザー(グループ)に通知を送る事ができます。

動作検証

実際に上記までで作成したスクリプトを実行してみます。

これまでのソースコードを一まとめにしたスクリプトを用意し、実行は単純にpythonスクリプトを実行するのみです。実行すると指定のLINEグループに正常に通知が来ました。

こちらがLINEに送信した結果です。雨の画像バリエーションが少なかったので小雨とはちょっと違いますが、絵文字としては一応正しく送信の確認ができました。

まとめ

今回は、APIから取得してきたデータをLINEで送信(通知)する仕組みを作ってみました。

あくまでサンプルとして気象情報を選びましたが、実際にはLINEのサービスとして LINEお天気 などもありますので、気象情報の有用性は低いと思います。

しかしながら、利用用途に合わせて他のAPIに転用できますので、何か有効的な使い方が出来るかもしれません。