前回は 気象庁の天気予報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' +
'#名言');
});
まとめ
本記事では、名言取得APIを使って名言をツイートしてみました。
簡単に名言がツイートできましたね。
毎朝07:30に自動でツイートしていますので、確認してみたい方はこちらをフォローしてみてください。
よろしくお願いします。