雨が降るのか、それとも晴れるのか。毎日気になる天気予報を自動で確認して、さらにTwitterでお知らせしてくれる「天気ツイートボット」があったら、便利だと思いませんか?天気を気にしない日はありませんよね?そんなとき、このボットがあなたの代わりに最新の天気情報を自動でツイートしてくれます。今回は、そのボットをPythonで作る方法を感情たっぷりに解説していきます!
必要な準備
天気予報データを取得するためには、天気情報を提供しているAPIを使います。今回は「OpenWeatherMap」のAPIを利用して、現在の天気や気温、予報を取得します。また、Twitter APIを使って取得したデータをツイートするためにtweepy
ライブラリを使用します。
まず、以下のライブラリをインストールしましょう。
pip install tweepy requests
次に、OpenWeatherMapの無料APIキーを取得してください。公式サイトに登録すれば、すぐに取得可能です。また、Twitter APIの設定については、前回の記事で紹介した手順に従ってください。
天気予報データを取得する
OpenWeatherMapのAPIを使用して、指定した地域の天気予報データを取得します。ここでは、東京の天気情報を取得するコードを紹介します。
import requests API_KEY = 'あなたのOpenWeatherMapのAPIキー' CITY = 'Tokyo' URL = f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&lang=ja&units=metric" # 天気情報を取得する関数 def get_weather(): response = requests.get(URL) data = response.json() if data["cod"] != 200: print(f"エラーが発生しました: {data['message']}") return None weather = { "description": data["weather"][0]["description"], "temp": data["main"]["temp"], "feels_like": data["main"]["feels_like"], "humidity": data["main"]["humidity"] } return weather
このコードでは、requests
を使ってOpenWeatherMap APIにリクエストを送信し、JSON形式で返ってきたデータから、天気の概要、気温、体感温度、湿度を抽出します。例えば、東京の天気予報が「曇り」なら、その情報を取得して後でツイートすることができます。
APIリクエストの結果がエラーコードで返された場合は、エラーメッセージを表示します。
Twitterに天気情報を投稿する
天気データを取得できたら、それをTwitterに投稿しましょう。ツイートを自動化するためには、前回紹介したtweepy
を使います。以下のコードで天気予報をツイートする関数を定義します。
import tweepy # Twitter APIの認証情報 API_KEY_TWITTER = 'あなたのTwitter APIキー' API_SECRET_TWITTER = 'あなたのTwitter APIシークレットキー' ACCESS_TOKEN = 'あなたのアクセストークン' ACCESS_TOKEN_SECRET = 'あなたのアクセストークンシークレット' # 認証設定 auth = tweepy.OAuth1UserHandler(API_KEY_TWITTER, API_SECRET_TWITTER, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth) # 天気をツイートする関数 def tweet_weather(weather): tweet_content = (f"東京の天気: {weather['description']} \n" f"現在の気温: {weather['temp']}℃ \n" f"体感温度: {weather['feels_like']}℃ \n" f"湿度: {weather['humidity']}%") try: api.update_status(status=tweet_content) print(f"ツイート成功: {tweet_content}") except tweepy.TweepError as e: print(f"エラーが発生しました: {e}")
この関数では、get_weather
で取得した天気情報をツイート文に整形してapi.update_status
で投稿します。ここでは「東京の天気」としてツイートしていますが、他の地域の天気を知りたい場合は、CITY
の値を変更するだけで簡単に対応できます。
ボットの実行
すべての準備が整ったら、天気データを取得し、それをツイートする処理を統合します。
if __name__ == "__main__": # 天気情報を取得 weather = get_weather() # 天気情報が取得できたらツイート if weather: tweet_weather(weather) else: print("天気情報を取得できませんでした。")
このコードを実行すれば、最新の天気情報が自動的にツイートされるはずです。ボットを毎日や毎時間定期的に実行したい場合は、cron
ジョブやschedule
ライブラリを使って設定することができます。
実行結果
それでは、実際にこのボットを実行してみましょう。もし、東京の天気が「曇り」なら、以下のようなツイートがされます。
ツイート成功: 東京の天気: 曇り 現在の気温: 18℃ 体感温度: 17℃ 湿度: 82%
ボットをさらに強化する
天気ツイートボットを作ったことで、毎日手動で天気予報を確認してツイートする手間が省けます!しかし、これだけでは満足できない!次のステップとして、ボットをさらにカスタマイズして、もっと便利にしましょう。
複数の都市の天気情報をツイート: 自分の住んでいる地域だけでなく、友達や家族が住んでいる都市の天気も一緒にツイートすることができます。リストを使って、複数の地域を対象にすることも簡単です。
天気の変化を通知: 天気が急に悪くなりそうなとき(例えば雨が降る予報になった時)、そのタイミングでアラートをツイートする機能を追加することもできます。
天気予報の詳細情報をツイート: 気温や湿度だけでなく、風速や紫外線指数などの詳細な情報をツイートすることも可能です。
次回のテーマ
次回は、Pythonを使って音声認識技術を活用し、音声から自動的にツイート内容を生成する「音声ツイートボット」を作る方法を紹介します。声でツイートができる未来へ、一歩踏み出しましょう!興味がある方は、ぜひTwitterでフォローしてください!