成果物
情報源
前回まで
- Twitterはじめました
- ツイッターAPIを使おうとしたが電話番号を求められたので諦めた
- ツイートURL引数でデフォルト値をセットする
- ツイートを半自動化するスクリプトを書く1
- IFTTTではてなブログが公開されたらマストドンでtootする
自動化はマスト。なのにTwitterはそれを容易に許さない。あまりの時代遅れさに失望。
今回
🔗 目次
1. ゴール
以下のような完成画面になる。
APIを実行するコマンドは以下。
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'", "value2":"'"$IMAGE_URL"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
変数 | 内容 |
---|---|
$MESSAGE |
Tweetしたいテキスト |
$IMAGE_URL |
Tweetしたい画像のURL |
$IFTTT_EVENT |
Recieve a web request で作成したときのEvent Name |
$IFTTT_KEY |
IFTTTが発行するKEY(たぶんユーザごとに割り当てられている) |
2. 前提
アカウントを作成しておくこと。
3. 作る
3-1. APIを作る
IFTTTによるAPI作成はUIをマウスでポチったりキーワード検索が必要なので面倒。
要点は以下。
順 | 項目 | 検索名 | 種類 | 値 |
---|---|---|---|---|
1 | If this |
webhooks |
Recieve a web request |
send_tweet |
2 | Then that |
tweet |
Post a tweet |
{{Value1}} |
順 | 項目 | 検索名 | 種類 | 値 |
---|---|---|---|---|
1 | If this |
webhooks |
Recieve a web request |
send_tweet_with_image |
2 | Then that |
tweet |
Post a tweet with image |
{{Value1}} , {{Value2}} |
IFTTTの右上にあるCreate
ボタンを押したら以下の画面になる。
If this
とThen that
にはそれぞれ上記で示したとおりのものを当てはめていく。
要素を検索するキーワードはそれぞれwebhooks
, tweet
である。
Twitterは最初だけアカウントを紐付ける操作があるが省略する。画面に従えばわかるはず。
以下のようにする。
それぞれの細かい値は以下のとおり。Add ingredient
ボタンを押すと候補が出るので、Value1
, Value2
を選べばよい。テキスト入力するときは{{Value1}}
、{{Value2}}
とする。この{{}}
で囲むのはIFTTTがもつAPIの変数である。あとでcurlで引数として渡す。
If this
にあてるWebhooks
もといReceive a web request
のEvent Name
は、APIを発行するときのURLの一部になる。なのでよく考えること。私は先述のとおりsend_tweet
とsend_tweet_with_image
にした。
Then that
にあてるPost a tweet
。
あとの画面もあるが省略する。適当に画面に従えばいい。とくに変更する必要はないはず。
次は画像URLをツイートするAPIを新たに作る。画面右上のCreate
ボタンを押して、If this
にWebhooks
をあてる。Event Name
はsend_tweet_with_image
にする。
Then that
にあてるPost a tweet with image
。以下のようにそれぞれ{{Value1}}
、{{Value2}}
をセットする。
3-2. KEYを調べる
APIを叩くためにはキーを知る必要がある。IFTTTの画面構成が変わっておりネットで調べても手順が違った。たぶん私が今ここで書く手順も変わるのではないだろうか。やめてほしい。
- IFTTTのhomeにアクセスする
- 画面上メニューの
Explore
をクリックする webhooks
で検索してWebhooks
をクリックするDocumentation
をクリックするYour key is: xxxxxxxxxxx
と書かれているのがキーである
キーはあとで使うのでコピペしておくこと。
⚠ キーは他人に公開しちゃダメ! 勝手に使われてしまうから。
4. 叩く
ターミナルで以下コマンドを叩く。Tweetされたら成功。
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'", "value2":"'"$IMAGE_URL"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
変数 | 内容 |
---|---|
$MESSAGE |
Tweetしたいテキスト |
$IMAGE_URL |
Tweetしたい画像のURL |
$IFTTT_EVENT |
Recieve a web request で作成したときのEvent Name |
$IFTTT_KEY |
IFTTTが発行するKEY(たぶんユーザごとに割り当てられている) |
たとえば以下のようにする。
MESSAGE='#IFTTT でツイートAPIを作った!' IFTTT_EVENT=send_tweet IFTTT_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
画像ツイートのときは以下。まず画像をどこかへアップロードせねばならないのでは? まーた別のサービス使わないとダメじゃんか。依存関係地獄だよ。
MESSAGE="#IFTTT でツイートAPIを作った!\n画像もあるよ。" IMAGE_URL=https://...some.jpg IFTTT_EVENT=send_tweet_with_image IFTTT_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'", "value2":"'"$IMAGE_URL"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
🔗 所感
IFTTTのおかげでTweetAPIが作れた。圧倒的感謝!
でも本当は公式がもっと簡単に使えるよう提供してくれたほうが嬉しいのになぁ。
🔗 対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux