Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

Pythonで天気予報データを取得し、自動ツイートする「天気ツイートボット」の作り方

LYPプレミアム会員 python

雨が降るのか、それとも晴れるのか。毎日気になる天気予報を自動で確認して、さらに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でフォローしてください!