RubyのTwitter gemを使ってTwitterのタイムラインを取得する。もっとたくさん。
前回タイムラインを可能な限り昔に遡って取得しようとしたのですが,twitterの仕様かそれほど昔まで遡れませんでした。
タイムラインが遡れないのなら,followerのつぶやきを一人ずつ遡って後から統合すれば超昔まで遡れるタイムラインになるんじゃね?って思って組みなおすことにしました。
require "twitter" #とりあえず雛形 client = Twitter::REST::Client.new do |config| config.consumer_key = "hogeeeeeeeeeeeeeee" config.consumer_secret = "hugaaaaaaaaaaaaaaaaaa" config.access_token = "fooooooooooooooooo" config.access_token_secret = "piyooooooooooooo" end #friend一人ずつ,遡れるまでtweetを取得 client.friend_ids("#{あなたのscreen_name}").each_slice(100).each do |slice| client.users(slice).each do |friend| bef_id,max_id = -1, client.user_timeline(friend.screen_name).first.id loop do client.user_timeline(friend.screen_name,{max_id: max_id,count: 200}).each do |tweet| puts tweet.user.name puts tweet.user.screen_name puts tweet.full_text print "Fav: #{tweet.favorite_count}, Retweet: #{tweet.retweet_count}\n" max_id = tweet.id unless tweet.retweeted? end sleep 60 break if max_id == bef_id bef_if = max_id end end end
一日走らせ続けて100ユーザー分くらいを取得できます。体感で数年分は遡れてるはず。もしかしたら全部いけてるかな?
sleep 60より短くしても大丈夫な気もするけどチキンなので試してないです。笑