我需要计算给定帐户的关注者最关注的帐户。
我找到了第一个答案,但我有一个很大的限制:friends/ids API 的速率限制是每 15 分钟 15 次调用。每次达到速率限制时,我都可以等待,但因此,我需要 10 个小时来分析一个 600 个关注者的 Twitter 帐户。
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