【发布时间】:2012-11-11 14:35:51
【问题描述】:
我需要计算给定帐户的关注者最关注的帐户。
我找到了第一个答案,但我有一个很大的限制: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
【问题讨论】:
-
我认为这更像是一个 Twitter API 问题,而不是 Ruby Twitter API