名言教えるよ! 名言取得API を使って Twitter API でつぶやく

スポンサーリンク
Twitter API

前回は 気象庁の天気予報JSONファイルを使い、 Twitter API で天気をツイートの実施まで試しました。
今回は 名言取得API を使い、名言をツイートするところまで作ってみたいと思います。
自動で名言をツイートしてみたい方は本記事を参考にしてみてください。

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

スポンサーリンク

名言教えるよ!とは

そのままですが、名言を教えてくれるサイトです。
https://meigen.doodlenote.net/

画面中央の女の子をクリックすると、名言を教えてくれます。

本記事執筆時点(2022/03/24)で3843の名言を覚えています。

スポンサーリンク

名言取得API

XMLとJSONの2種類の形式で取得できます。

XML形式

パラメータの「?c=n」に値を指定することにより、取得件数を1〜10件まで指定できます。
また、表示順序(取得内容)はランダムです。

例えば、下記のように実行すると、5件取得することができます。
https://meigen.doodlenote.net/api?c=5

APIを実行すると、下記のようなデータを取得することができます。

<response>
    <data>
        <meigen>敵のため火を吹く怒りも、加熱しすぎては自分が火傷する。</meigen>
        <auther>シェークスピア</auther>
    </data>
</response>

JSON形式

XML形式と指定の仕方はほぼ同じです。

パラメータの「?c=n」に値を指定することにより、取得件数を1〜10件まで指定できます。
また、表示順序(取得内容)はランダムです。

XML形式と異なるのは、「日本語エスケープ有効フラグ パラメーター」というもがありますが、「e=1」を指定するのであまり気にしなくて問題ありません。

例えば、下記のように実行すると、2件取得することができます。
https://meigen.doodlenote.net/api/json.php?c=2&e=1

APIを実行すると、下記のようなデータを取得することができます。

[{"meigen":"人はだれしも絵画を理解しようとする。それならなぜ小鳥の歌を理解しようとしないのだろうか。","auther":"パブロ・ピカソ"}]
スポンサーリンク

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,
});

名言取得

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

const response = await axios.get('https://meigen.doodlenote.net/api/json.php?c=1&e=1');

名言データ

「data[0].meigen」に名言、
「data[0].auther」に著者が格納されています。

ツイート

名言をツイートしてみます。

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

// 名言ツイート(毎朝07:30).
exports.doTweetQuotations = functions
    .region('asia-northeast1')
    .pubsub
    .schedule('every day 07:30')
    .timeZone(timezone)
    .onRun(async () => {
        // 名言取得.
        const response = await axios.get('https://meigen.doodlenote.net/api/json.php?c=1&e=1');

        // ツイート.
        client.v2.tweet(
        '本日の名言🧑‍🎓' + '\n' +
        '\n' + 
        '「' + response.data[0].meigen + '」' + '\n' +
        '#' + response.data[0].auther + '\n' + 
        '\n' + 
        '#名言');
});
Twitter API

まとめ

本記事では、名言取得APIを使って名言をツイートしてみました。
簡単に名言がツイートできましたね。

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