ブログ

またTwitterAPIで遊んでしまった

2018年11月03日
TwitterAPIのどツボにハマって遊んでしまいましたでブログ更新時に、更新お知らせ写真付きツイートができるようにしました。
あのときは静止画だけでとりあえずは終了したのですが、やっぱりビデオも投稿できた方が便利だなと思うようになってしまいました。
ブログ更新後、ツイッターから動画をアップしてツイートしてみたのですが、やっぱり面倒なんです。しかもちょっとではなくて、かなり面倒に感じるんです。

前回と同じで、以前からお世話になっている、
GitHub - abraham/twitteroauth: The most popular PHP library for use with the Twitter OAuth REST API.
を利用させていただきました。

いざアップロード!できません。

Overview — Twitter Developers
どうやらチャンクに分けてアップロードをするようです。もしかすると、分けなくてもできるのかもしれませんがTwitterが推奨しているようですしチャンク分けしてみました。

修正して再度アップロード。
どうやらアップロードはできているようですが、エラーになります。

【Duration too long, maximum:30000, actual:xxxxxx】

調べたら、動画が30秒を超えているということらしいです。
Overview — Twitter Developersにビデオは15MBとありますが、秒でも引っかかるのでしょうか。
試しに短い動画でやってみたら無事ツイートできました。

更に調べると、【media_category】を【tweet_video】を引き渡してやると30秒以上の動画が扱えるようです。

引き渡してアップロードしてみます。

今度は【Not valid video】だって。アップロードしたのは確かにビデオなんですけどね。
返ってきたメッセージを見てみると、【pending】が出ている、でも動画のアップロードはできているのかな、と思います。

返ってきたメディアID(media_id)を直書きで指定してツイートすると、ツイートできました。
何度かやってみたのですが、どうやら動画が使えるようになるのに数分かかっているみたいです。この当たりはTwitterサーバーの混み具合にもよるのかもしれません。

仕方ないので動画アップロードとツイートは処理を分けました。
確かアップロードしたファイルは1時間有効だったはずなので、メディアIDを記録しておいて、後からメディアIDとツイート内容をセットにしてツイートを投げます。

作っておきながらなんですが、ツイッターのアカウントの関係で動画はアップロードしないかもしれません(なら作るなよ・・・)。まだ色々悩み中です。


覚書 ---- TwitterAPIからの動画の投稿
Overview — Twitter Developers
Media Best Practices — Twitter Developers
API Reference — Twitter Developers

チャンク分けする
30秒を超えている場合は、media_category:tweet_video を指定
アップロードした動画が使えるようになるまで待つ