無料天気予報 OpenWeatherAPI を使って Twitter API でつぶやく

スポンサーリンク

前回は Twitter Bot を作る方法、ツイートまで試しました。
今回は OpenWeatherAPI を使い、天気をツイートするところまで作ってみたいと思います。
自動で天気予報をツイートしてみたい方は本記事を参考にしてみてください。

前回の記事はこちらです。

スポンサーリンク

OpenWeatherAPIとは

OpenWeatherAPIとは、世界の様々な地域の天候情報を取得できるAPIです。
天候情報を取得できるAPIはいろいろありますが、有料に切り替わったり廃止されたりしています。

OpenWeatherAPIも有料版がありますが、無料版でも十分な機能が使えます。

スポンサーリンク

アカウント作成

公式サイトへアクセスします。
https://openweathermap.org/api

「Create an Account.」をクリックします。

OpenWeatherAPI

以下の項目を入力、チェックをします。

アカウント作成
  1. ユーザー名
  2. メールアドレス
  3. パスワード
  4. パスワードの確認
  5. 16歳以上かのチェック
  6. プライバシポリシー、利用規約、Webサイトに使用条件に同意
  7. ニュースを受けるとるかチェック(チェックしなくても問題ありません)
  8. ロボットではないことの証明にチェック

入力が完了したら「Create Account」をクリックします。

OpenWeatherAPI

APIをどのように使用するか選択します。
Otherのままで問題ありませんので、そのまま「Save」をクリックします。

OpenWeatherAPI

先ほど入力したメールアドレス宛へ認証のメールが送信されます。
メールの内容を確認し、「Verify your email」をクリックします。

OpenWeatherAPI

認証が成功すればアカウント作成は完了です。

OpenWeatherAPI
スポンサーリンク

ログイン

アカウント作成手順で作成したアカウントでログインしてみましょう。
メールアドレスとパスワードを入力し、「Submit」をクリックします。

OpenWeatherAPI

Keyの取得

画面右上のアカウントを選択し、「My API keys」をクリックします。

OpenWeatherAPI

Defaultのkeyが表示されます。

OpenWeatherAPI

このkeyをコピーしておいて使用します。

Twitterでツイートする

Twitter APIのキーを取得している、Firebase Functionの構築ができていることが前提になります。
まだTwitter APIを取得していない方は、こちらを参考に取得してみてください。

それでさっそく試してみましょう。

HTTP通信

今回はHTTP通信にaxiosを使用してみます。

const axios = require('axios');

Twitter API v2のクライアント設定

Firebaseの環境変数に設定している値を取得します。

const config = functions.config();
const client = new TwitterApi({
    appKey: 任意.key,
    appSecret: 任意.api.secret,
    accessToken: 任意.access.token,
    accessSecret: 任意.access.secret,
});

天気取得パラメータ

天気を取得する際のパラメータを設定します。
qに都市を設定することができます。
今回は「Sendai」で試してみます。

const query_params = new URLSearchParams({ 
    appid: config.openweathermap.key,
    q: "Sendai",
    units: "metric",
    lang:"ja" 
});

「config.openweathermap.key」は「Keyの取得」の項目のkeyを指定します。

天気取得

以下を実行し天気を取得します。

const response = await axios.get('https://api.openweathermap.org/data/2.5/weather?' + query_params);

天気データ

「response.data.weather[0].main」に今日の天気データが格納されています。

ツイート

天気をツイートしてみます。

// タイムゾーンの設定.
const timezone = 'Asia/Tokyo';
process.env.TZ = timezone;

// 毎朝7:00.
exports.doTweetGoodMorning = functions
    .region('asia-northeast1')
    .pubsub
    .schedule('every day 07:00')
    .timeZone(timezone)
    .onRun(async (context) => {
        // 天気取得.
        const response = await axios.get('https://api.openweathermap.org/data/2.5/weather?' + query_params);
        
        // 天気定義.
        const weather = {'Clear':'晴れ🌞', 'Clouds':'くもり🌥', 'Rain':'雨☂️', 'Snow':'雪❄️', 'Thunderstorm':'雷雨⚡️', 'Drizzle':'霧雨🌫'};

        // ツイート.
        client.v2.tweet(
            'おはようございます🌞' + '\n' +
            '\n' +
            '仙台の天気は' + weather[response.data.weather[0].main]);
});

まとめ

本記事では、無料天気予報 OpenWeatherAPI を使って天気をツイートしてみました。
簡単にできましたね。

毎朝7:00に自動でツイートしていますので、確認してみたい方はこちらをフォローしてみてください。
よろしくお願いします。

本記事を作成中に、気象庁の天気予報を取得できることがわかりました。
気象庁の天気予報を取得する方法はこちらです。