Slackに自動で天気を通知するPythonプログラムを作ってみました!LINE Notifyの終了もあってSlackの機能をもっと使いたいなと思ったことがきっかけです。
目次
やりたいこと
- 自分用Slackワークスペースに、毎日の天気を通知
- 天気情報をAPIで取得
- テキストに合わせて美しく通知
- Webhook や .env を使って安全に作成
準備したもの
ライブラリ
requests
python-dotenv
サービス
- OpenWeatherMap API
- Slack Incoming Webhook
.env ファイルの中身
SLACK_WEBHOOK_URL=...
OPENWEATHER_API_KEY=...
CITY_NAME=Osaka
実装の歩み
天気情報の取得
OpenWeatherMapの日本語モードを使って、天気説明を日本語で取得します。
Slackへの通知
Webhook URLを.envに格納し、Pythonのrequests
で通知を送信します。
天気説明によって美しく表示
天気説明の文字列を判定して、適切な美化アイコンを表示します。
def get_weather_emoji(description):
if "晴" in description:
return "☀️"
elif "曇" in description:
return "☁️"
elif "雨" in description:
return "🌧"
elif "雷" in description:
return "⛈"
elif "雪" in description:
return "❄️"
elif "霊" in description or "もや" in description:
return "🌫"
else:
return "🌈"
実行サンプル
【今日の天気@Osaka】
☀️ 天気:晴れ
🌡 気温:18.6℃
💧 湿度:52%
はまったこと & 学び
- APIキーが有効かどうかは、直接URLで確認すると簡単
- descriptionが日本語だと英語判定は効かないので、分岐は日本語ベースで考える
- .env の値が取れているかは
os.getenv
+print
で確認
おわりに
Slack は個人用でも有用な通知ダッシュボードになります!PythonでAPIを取得して、それを美しく表示するだけでも、作るのが楽しくなるので、本当にオススメです!
次は Slack で @Bot をメンションしたら、自動でPythonプログラムが起動して、答えを返してくれるような、もっとインタラクティブな挙動を目指したいです!
コメント