背景
先日、User Streams(とSite Streams)の廃止日が公開されました。
今年4月にご紹介したAccount Activity APIやDM関連の機能などアップデートしました。詳細は以下ブログをご覧ください。
— Twitter Dev Japan (@TwitterDevJP) 2017年12月19日
https://t.co/pha807b7es
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つ目は問題になりません。しかし、鍵アカウントのツイートは取得できないため別の方法を探る必要がありそうです。