hexium310’s memo

自分用にメモとして書き留めます

Public StreamsによるUser Streamsの代用を考える

背景

先日、User Streams(とSite Streams)の廃止日が公開されました。

User Streamsが廃止されると多くのサードパーティ製クライアントで使用されている、自動で流れるTLが使用できなくなります。 新しく実装される、Account Activity API(Beta)ではTLの取得はできないようです(未確認)。

廃止されないPublic StreamsでUser StreamsによるTLの取得の代用ができないか考えてみました。

TLを取得して表示する(PHP

Twitter APIライブラリには@mpywさんのcowitterを使用させていただきました。

Public Streamsは非鍵アカウントのツイートをすべて垂れ流しにしているものなので$client->streams()の第三引数に自分のフォローしてるアカウントのidを指定してフィルタリングします。
ただし、そのままではフォローしているアカウントに対するフォローしてないアカウントのリプライやRTが表示されてしまうため、コールバック内の!in_array($status->user->id_str, $ids)でフォローしていないアカウントは弾いています。

これでUser Streamsのタイムライン取得とほぼ同等のことが行なえました。 しかし、いくつか問題点があります。

問題点

  • 5000アカウントまでしかフィルタリングできない。
  • 鍵アカウントのツイートは取得できない。

フォローが5000人未満の場合は1つ目は問題になりません。しかし、鍵アカウントのツイートは取得できないため別の方法を探る必要がありそうです。