「Twitterで相互フォロワーリストは取得できるのか?」
ふと、こんな質問を受け、即レスできなかったので、調べてみました。
結論から言いますと、できます。(※ただ、上限もあります!!)
では、どうやって取得するか?
初めは、下記2つのapiを使用して、そこから共通のidの取得を試みた結果、
が、制限により200件×15回で、最大3,000件から共通のidを探すことになりました。
■list.jsonを使ってみました
@フレンドリストを取得
https://api.twitter.com/1.1/friends/list.json
*app auth:15回/15分
*最大200件
@フォロワーリストを取得
https://api.twitter.com/1.1/followers/list.json
*app auth:30回/15分
*最大200件
■そこで、ids.jsonを使用します
下記2つのapiを使用することで、
5,000件×15回で、最大75,000件から共通のidを探すことができます。
@フレンドidを取得
https://api.twitter.com/1.1/friends/ids.json
*app auth:15回/15分
*最大5,000件
@フォロワーidを取得
https://api.twitter.com/1.1/followers/ids.json
*app auth:15回/15分
*最大5,000件
ただ、ここで問題なのが、
初めのlist.json(api)は詳細情報を取得するのに対し、
ids.json(api)は文字通りですが、idしか取得できません。
では、ユーザ情報を取得するには、どうしたら良いか、、?
っと、探してみた結果、
こんな便利なapiがありました。
@ユーザ詳細情報を取得
https://api.twitter.com/1.1/users/lookup.json
*app auth:180回/15分
*最大100件
このapiは、idを「,(カンマ)」区切りで繋ぐと、
一度に最大100件まで、ユーザ情報を取得することができます。
180回/15分なので、最低2,700件は取得できるようになります。
ただ、闇雲に3,000件のリストからidを取得するよりも、
単純な処理となるので、メモリはそこまで食わないのでオススメです。
■付録
2つのid群より、共通のidを求めるのに便利なのが、
array_intersectになります、差分を求めるarray_diffとは対になる存在かと思います。
よかったら参考に使ってみてください。
※今回は手法のみで処理は割愛いたします。