如何知道Twitter帐户关注者关注最多的帐户?

时间:2012-11-11 14:35:52

标签: ruby twitter

我需要计算特定帐户关注者所关注的帐户数量最多

我找到了第一个答案,但我有一个很大的限制: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

1 个答案:

答案 0 :(得分:1)

我在Twitter API上做了很多工作(虽然使用的是Python而不是Ruby),据我所知,你在这里运气不好 - 这些API的速率限制真的没办法。

你并不是唯一一个对这种发展感到不满的人。我和许多其他开发人员一直在评论这个问题here - 鉴于Twitter上的人没有表明这些限制会发生变化,可以安全地假设他们来到这里留。

除了支付可能已经删除所有这些数据的第三方数据提供商之外,你基本上每十五分钟就停留15次。

另一方面,如果按照您的说法,您正在寻找一个近似的答案,您可能会采取原始帐户的关注者(统计上重要的)样本。您没有说明原始帐户有多少关注者,因此我无法告诉您需要抽样的帐户数量,但显然没有理由为所有关注者提供此数据,假设你想要分析的原始帐户有足够多的粉丝。

我认为,在紧要关头,您可以使用多个IP地址和Twitter帐户来加快这项工作,但是你需要做大量的基础工作才能做到这一点。如果Twitter的服务条款不是这封信的精神。

我和你在一起 - 对于朋友/粉丝来说,每15分钟有15个电话数据并不好。