我需要计算给定帐户的关注者关注次数最多的帐户。
我找到了第一个答案,但我有一个很大的限制: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(尽管使用的是 Python 而不是 Ruby),据我所知,你在这里运气不好——确实没有办法绕过 API 的这些速率限制。
您不是唯一对这一发展感到不满的人。我和许多其他开发人员都对这个问题发表了评论 here -- 考虑到 Twitter 的工作人员没有表示这些限制会改变,因此可以安全地假设他们会留在这里。
除了向第三方数据提供商支付费用,第三方数据提供商可能会收集所有这些数据外,您基本上只能接受每 15 分钟 15 次调用。
另一方面,如果如您所说,您正在寻找一个近似答案,您可能会抽取原始帐户关注者的(具有统计意义的)样本。您没有说明原始帐户有多少关注者,所以我无法告诉您需要抽样的帐户数量,但显然没有理由为所有关注者提取此数据,假设您要分析的原始帐户有足够多的关注者。
我想,在紧要关头,您也许可以使用多个 IP 地址和 Twitter 帐户来加快这项工作,但是您必须为此做大量的基础工作,而且它不利于如果 Twitter 的服务条款不是文字,那就是精神。
不过我同意你的看法——每 15 分钟为 friend /关注者数据打 15 次电话是不好的。
关于ruby - 如何知道一个推特账号的关注者最关注的账号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332087/