我需要计算特定帐户关注者所关注的帐户数量最多。
我找到了第一个答案,但我有一个很大的限制:friends/ids API的速率限制是每15分钟15次调用。每次达到限速时我都可以等,但是,我需要10个小时来分析600个关注者的推特账号。
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
答案 0 :(得分:1)
我在Twitter API上做了很多工作(虽然使用的是Python而不是Ruby),据我所知,你在这里运气不好 - 这些API的速率限制真的没办法。
你并不是唯一一个对这种发展感到不满的人。我和许多其他开发人员一直在评论这个问题here - 鉴于Twitter上的人没有表明这些限制会发生变化,可以安全地假设他们来到这里留。
除了支付可能已经删除所有这些数据的第三方数据提供商之外,你基本上每十五分钟就停留15次。
另一方面,如果按照您的说法,您正在寻找一个近似的答案,您可能会采取原始帐户的关注者(统计上重要的)样本。您没有说明原始帐户有多少关注者,因此我无法告诉您需要抽样的帐户数量,但显然没有理由为所有关注者提供此数据,假设你想要分析的原始帐户有足够多的粉丝。
我认为,在紧要关头,您可以使用多个IP地址和Twitter帐户来加快这项工作,但是你需要做大量的基础工作才能做到这一点。如果Twitter的服务条款不是这封信的精神。
我和你在一起 - 对于朋友/粉丝来说,每15分钟有15个电话数据并不好。