読者です 読者をやめる 読者になる 読者になる

Ruby Twitter Gem -- 特定ユーザーがフォローしているユーザーの情報を100件以上集める方法

Ruby Rails

Twitter APIを使ってある特定ユーザーがフォローしているユーザーの情報を集める場合、
(ややこしいですね。。)
基本的に100件を超える取得は出来ないとあります。
https://dev.twitter.com/docs/api/1/get/users/lookup

個人的に開発しているアプリで100件を超えるユーザー情報を、
一度に取得したい場合が発生しました。
そこでロジックを少しばかり考えてみましたが、
以下のようにすれば取得は可能でした。
(コレが正しい方法なのか、如何せん現場でゴリゴリWebアプリとかを
作っているわけでは無いので、ご了承&ご指摘下さい。)
Twitter Gemを使用しています。

1)irbを起動します。

2)Twitter Gemをrequireします。

require "twitter"

3)特定ユーザーの情報を取得します。※ユーザー名は任意で変更して下さい。

user = Twitter.user("XXXXX")

4)特定ユーザーがフォローしているユーザー数を取得します。

user_friends_count = user.friends_count

5)ハッシュ「friend_ids」に特定ユーザーがフォローしているユーザー情報を格納します。

friend_ids = Hash.new
friend_ids = Twitter.friend_ids("XXXXX")

6)上記で取得したユーザー情報の中からユーザーIDのみを配列「ids」に格納します。
 ※ここはもっと奇麗なやり方あるんだろうなあと。

ids = Array.new
ids = friend_ids["ids"]

7)最後に上記で取得したユーザーID分の情報を配列「users」に格納して行きます。

i = 0
users = Array.new
cnt = user_friends_count / 100
cnt.times do |cnt|
  users.concat Twitter.users(ids[i..i + 99])
  i = i + 100
end
mod = (user_friends_count % 100) - 1
users.concat Twitter.users(ids[i..i + mod])

ここまでで、100件を超えるユーザー情報を取得出来たはずです。
あとは、配列「users」に格納された情報を自由にお使い下さい。