Twitter APIのusers/showは認証なしで手軽に最新のツイートのみを拾えるので、JavaScriptでウェブサイトにツイートを表示するなどといったケースに適しており、使っている人も多いと思う。が、最新のツイートがリツイートの場合はAPIが返すJSONからstatus
以下がバッサリとなくなってしまうため、最新のツイートを拾うことができなくなってしまう。これに対処するためにもっと柔軟にツイートを拾えるstatuses/user_timelineを使ってcount=1
にした……が、それだけではうまくいかなかったという話。
最新のツイートだけを拾いたかったので、単純にcount=1
を指定してみた。
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=abcde&count=1
しかし、最新のツイートがリツイートだと返されるJSONが空になる(リツイートではない最新のツイートまで遡ってくれたりはしない)。つまりはusers/showと似たような挙動でこれだけではうまくいかない。空にならないようにするためには、リツイートを含めて返させるように、include_rts
パラメータも追加する必要がある。
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=abcde&count=1&include_rts=true
どうしてもusers/showでリツイートを含めて返して欲しい場合は、JSONではなくXMLで返してもらうと良い。JavaScriptで扱う場合はYQL等を経由することが多いと思うので、JSONとXMLのどちらでも大して変わらないはず。
http://api.twitter.com/1/users/show.xml?screen_name=abcde
認証なしAPIでリツイートを飛ばした最新のツイートだけをサクっと拾う方法はなさそうな感じ。リツイートが後付けの機能だからなのか、パフォーマンスの問題からなのか、この仕様は明文化されてないこととかもあって微妙に困る。