2.7.26から公式RTをリスト上に表示する機能を不完全ながら実装しました。不完全ながらというのは、Twitter APIを使ってないため、取りこぼしが多数あるからです。
- ホーム のストリームが必要
- 上記ストリームにはリツイートが表示される
- 表示されたリツイートがリストのストリームのユーザによるRTなのかチェック
- リストのユーザからなら、そのリストに複製する
- ただしすでにリストに表示済みなら複製しない
リツイートの取得元は、ホーム のストリームです。フォローが多い人だとホームは流れすぎて、省略されるので、リツイートストリームをタブ内に追加しておくと良いです。
タブ内にこのどちらかのストリームがないとリツイートが得られないので表示できません。
得られたリツイートをリストに複製するために、そのリツイートをどのリストに複製すべきかチェックします。
各リストには登録されたユーザがあります。このユーザによるリツイートならコピーすればよいのですが、リストに登録されたユーザというのは、APIを使わないと得られません。
苦肉の策として、リスト内に投稿があるとそれを記録してリスト登録ユーザとみなしています。
一定日数が経過したユーザは消えますが、リストに登録されながら投稿しないユーザは残念ながら対象になりません。また一番最初の時はユーザ一覧が未作成だったり不十分だったりします。
こうしてなんとか苦労してリスト登録ユーザを構築してます。
リスト登録ユーザによるRTの場合は、そのリスト内にリツイートの投稿を複製します。 すでに他のユーザによるリツイートで、複製済みの場合は流しません。
こんな感じでリスト内にリツイートを、表示していることから、取りこぼしの多い不完全なものになります。それでも無いよりはイイかな?と思って実装しました。
なぜAPI使わなかったかというと、Twitterの新しいAPIの1.1では廃止になったものがあったり、API制限でまともに実現出来ないと思ったためです。
当初はAPIでリツイートを取得し、APIでリスト登録ユーザを把握しようと思っていたのですが、API1.1では自分あてのリツイートだけを取るAPI /statuses/retweeted_to_meは廃止されました。
また、リスト登録ユーザを取得するAPIはレートリミットで15分に15回までしか使えません。こちらは緩やかに取得すればなんとかなるかもしれませんが面倒です。
この二つの問題からAPIで自前でやるのは諦めて、HootSuiteにある機能から作りました。
HootSuiteのリツイートストリームも今後どうなるか怪しい気がしますが、自前APIを使うよりは長生きできそうです。
今後は構築されたリスト登録ユーザを調整できるようにしようと思います。
本家HootSuiteでもRetweets by meのストリームはAPI1.1で取得できなくなるため2013/02/19で、このストリームは廃止されることになりました。
Twitter.com is currently updating their application programming interface (API).
As a result of these changes, 'Retweets to me' and 'Retweets by me' Twitter streams will no longer be available within the HootSuite dashboard after Tuesday, February 19, 2013.
http://help.hootsuite.com/entries/23177547
HootSuiteのリツイートストリームはもう少し長生きするかという予測でしたが、案の定使えなくなります。 リツイートストリームがなくなっても、Homeストリームから取得できるので前よりも取りこぼしが多くなることが予想されますが、今後も同様に使えると思います。