wordpressではtwitterのツイートURLをそのままヴィジュアルエディタに貼り付けるだけで、自動で埋め込みコードに展開されます。
ツイッター画面からいちいち埋め込みコードを表示・取得させる必要がないので、複数のツイートを手間なく記事に埋め込むことができます。
ただ他のブログサービスになるとtwitterのツイートURLから埋め込みコードを展開してくれないことがあります。
そこで、twitterのツイートURLから埋め込みコードを一括で取得する方法がないかと探してみたところ、twitterのoembed apiが使えることが分かりました。
oembed apiでtwitterのツイートURLから埋め込みコードを取得する
twitterのoembed apiでは、
「https://publish.twitter.com/oembed?url=」
に続けて、埋め込みコードを取得したいツイートのURLを指定すると、json形式で戻り値を返してくれます。
例えば「https://twitter.com/catmotimaru/status/1544245446821892097」というツイートURLであれば、
「https://publish.twitter.com/oembed?url=https://twitter.com/catmotimaru/status/1544245446821892097」
とするだけです。
パラメータには必須の「url」以外にも、
maxwidth
hide_media
hide_thread
などが指定できます。
https://developer.twitter.com/en/docs/twitter-for-websites/oembed-api
レスポンスはjson形式で返ってきますが、埋め込みコードは「html」パラメーターで取得できます。
oembed apiでtwitterのツイートURLから埋め込みコードを一括で取得する方法
twitterのツイートURLから埋め込みコードを取得するにはtwitterのoembed apiが使えることが分かりました。
では、twitterのツイートURLから埋め込みコードを一括で取得するにはどうすれば良いのかというと、ここから先はプログラミングの力を借りなければいけません。
ただ幸いなことにtwitterのoembed apiは、厄介なOAuth認証をしなくて済むので、面倒な事前準備が一切必要ありません。
URLをリクエストすれば、json形式でレスポンスがそのまま返ってくるので、HTMLソースやCSVファイルなどを読み込む感覚で手軽に使うことができます。
oembed apiでtwitterのツイートURLから埋め込みコードを一括で取得するには、例えば、
1.textareaで複数URLを入力できるフォームを用意する
2.1.で入力したデータを受け取って繰り返し処理する
という非常に単純なプログラムを書くだけで済みます。
僕の場合、半年以上ぶりにプログラムを書きましたがそれでも1時間もかからずに済みました。
途中で1つだけ時間がかかりましたが、それがなければもしかしたら30分もかからなかったかもしれません。
textareaから取得したテキストデータは、urlが数珠つなぎになっているだけなので、改行コードを元にexplode関数を使って配列形式に変換しなければいけません。
配列形式にしたURLリストを1つずつ(1行ずつ)読み込んで、oembed apiで埋め込みコードを取得していけば良いわけですが、なぜか上手くいきませんでした。
結局、原因は配列形式にした際なのかどのタイミングなのかは分かりませんが、URLの末尾か先頭のどちらかに余計な空白行が紛れ込んで閉まっていたこと。
エラーメッセージを見ても、なぜ「HTTP 404 error」になるのか見当が尽きませんでしたが、trim関数を使ってURL前後の空白を削除すると正常にjson形式で戻り値を取得できました。