4

我需要计算给定帐户的关注者最关注的帐户

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

1 回答 1

1

我使用 Twitter API(尽管使用 Python 而不是 Ruby)做得很好,据我所知,你在这里运气不好——对于 API 的这些速率限制真的没有办法。

你不是唯一一个对这种发展不满意的人。我和许多其他开发人员在这里就这个问题发表了评论——鉴于 Twitter 上的人没有表明这些限制会改变,假设它们会继续存在可能是安全的。

除了向可能收集所有这些数据的第三方数据提供商付费外,您基本上被每 15 分钟 15 次调用所困。

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

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

不过,我支持你——每 15 分钟打 15 次电话来获取朋友/关注者的数据并不好。

于 2012-11-12T22:48:49.067 回答