4

特定のアカウントのフォロワーが最もフォローしているアカウントを計算する必要があります。

私は最初の答えを見つけましたが、強い制限があります: friends/ids API のレート制限は15 分あたり 15 コールです。レート制限に達するたびに待つことができますが、600 フォロワーの Twitter アカウントを分析するには 10 時間かかります。

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 (Ruby ではなく Python を使用していますが) をよく使用していますが、私の知る限り、この API のレート制限を回避する方法はありません。

この展開に不満を持っているのはあなただけではありません。私は、他の多くの開発者と同様に、ここでまさにこの問題についてコメントしています.

このすべてのデータをスクレイピングする可能性のあるサード パーティのデータ プロバイダーに料金を支払うことを除けば、基本的には 15 分間に 15 回の呼び出しにとどまります。

一方、あなたが言ったように、おおよその答えを探している場合は、元のアカウントのフォロワーの (統計的に有意な) サンプルを取得することでうまくいくかもしれません. 元のアカウントのフォロワー数を示していないため、サンプリングする必要があるアカウントの数はわかりませんが、すべてのフォロワーについてこのデータを取得する理由がないことは明らかです。分析しようとしている元のアカウントのフォロワー数が十分に多いこと。

ピンチのときは、複数の IP アドレスと Twitter アカウントを使用してこの作業を高速化できるかもしれませんが、それを行うにはかなりの量の基礎を築く必要があります。 Twitterの利用規約の場合は手紙ではありません。

私はあなたと一緒ですが、友達/フォロワーのデータに対して15分ごとに15回の呼び出しは良くありません.

于 2012-11-12T22:48:49.067 に答える