特定のアカウントのフォロワーが最もフォローしているアカウントを計算する必要があります。
私は最初の答えを見つけましたが、強い制限があります: friends/ids API のレート制限は15 分あたり 15 コールです。レート制限に達するたびに待つことができますが、600 フォロワーの Twitter アカウントを分析するには 10 時間かかります。
require "rubygems"
require "twitter"
Twitter.configure do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.oauth_token = OAUTH_TOKEN
config.oauth_token_secret = OAUTH_TOKEN_SECRET
end
results = Hash.new(0)
Twitter.follower_ids(TWITTER_ACCOUNT_TO_ANALYSE).ids.each do |account|
Twitter.friend_ids(account).ids.each do |id|
results[id] +=1
end
end
puts results.sort_by {|key, value| value}.inspect
それを計算するためのより興味深い方法またはAPIを知っていますか? おおよその答えは、私の使用には十分です。
編集:
これは、レート制限を管理し、ソリティアのフォローを表示しないバージョンです:
require "rubygems"
require "twitter"
Twitter.configure do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.oauth_token = OAUTH_TOKEN
config.oauth_token_secret = OAUTH_TOKEN_SECRET
end
results = Hash.new(0)
Twitter.follower_ids(TWITTER_ACCOUNT_TO_ANALYSE).ids.each do |account|
begin
Twitter.friend_ids(account).ids.each do |id|
results[id] +=1
end
rescue Twitter::Error::TooManyRequests => error #rate limit
sleep error.rate_limit.reset_in
retry
rescue Twitter::Error::Unauthorized => error #protected account
next
end
end
puts results.sort_by {|key, value| value}.keep_if {|key, value| value > 1}.inspect