ruby - 如何知道一个推特账号的关注者最关注的账号?

标签 ruby twitter

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

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

相关文章:

ruby-on-rails - 带有 sqlite 的 rails 中的 boolean 值

html - 试图在网页的正中间获取 Twitter Feed

twitter - 使用 twitter api 获取 Twitter userId

ruby-on-rails - 带有 Devise 和 rspec : Warden test helpers unreliable 的 Rails 3

Ruby:循环哈希并检查键是否存在以确定要显示的标记和数据

ruby - 使用 `method_missing` 时堆栈级别太深

ruby - 禁用 ruby 扩展

python - 如何获得一周前的推文(使用 tweepy 或其他 python 库)

python - PostgreSQL 关系不存在 (Python)

javascript - 如何在不影响浏览器历史记录的情况下实现导航?