いつも大変お世話になっております。
現在、Twitter REST API の home_timeline
を使って、アプリに登録しているユーザーのホームタイムラインを取得したいと考えています。しかし、API制限もあって、すべてを取得することができずに困っています。
Twitter::Error::TooManyRequests: Rate limit exceeded
そこで、1分に1回Twitterにアクセスして、100のツイートを取得することにしました。
具体的には下記のように実装しました。
schedule.rb
Ruby
1require File.expand_path(File.dirname(__FILE__) + "/environment") 2set :environment, Rails.env.to_sym 3set :output, "#{Rails.root.to_s}/log/cron.log" 4 5every 1.minutes do 6 begin 7 rake "scrape:twitter" 8 rescue => e 9 raise e 10 end 11end
lib/tasks/scrape.rake
Ruby
1namespace :scrape do 2 task :twitter => :environment do 3 scrape_twitter = SsrapeTwitter.new 4 ssrape_twitter.scrape 5 end 6end
lib/scrape_twitter.rb
Ruby
1class ScrapeTwitter 2 def scrape 3 @users = User.all 4 5 @users.each do |user| 6 @client = Twitter::REST::Client.new do |config| 7 config.consumer_key = Rails.application.credentials[Rails.env.to_sym][:twitter][:consumer_id] 8 config.consumer_secret = Rails.application.credentials[Rails.env.to_sym][:twitter][:consumer_secret] 9 config.access_token = user.token 10 config.access_token_secret = user.secret 11 end 12 13 @timeline = @client.home_timeline(max_id: max_id,count: 100) 14 @timeline.save 15 end 16 end 17end
APIを使う機会がなかなかありませんので、理解に苦しんでいるのですが2点ほどお伺いをしたいです。
- 登録ユーザーの制限について
When using application-only authentication, rate limits are determined globally for the entire application. If a method allows for 15 requests per rate limit window, then it allows you to make 15 requests per window — on behalf of your application. This limit is considered completely separately from per-user limits.
Twitterの公式ドキュメントの記載によると、単体のアプリで15分に15回までとあります。つまり、100人のユーザーが登録していたとしたら、100人で15分15回でしょうか、それとも1人で15分15回までできるのでしょうか。
- 1回に取得できるツイート数について
今回は100としていますが、実際にはリクエストする回数に制限はあっても、実際に取得するツイート数には制限はないという認識でもよろしいのでしょうか。つまり、1000や10000でも問題はないのでしょうか。
初歩的な質問で大変申し訳ございませんが、お知恵を拝借させていただければと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/19 05:16