どうも、吉山です。私はTwitterを使っておりまして、*栄養士界隈の情報収集のためにオススメに出てくる*栄養士ユーザーさんを片っ端からフォローしていました。で、結構な数になってちょっと整理しようかと思いまして。
こっちはフォローしているのにフォロー仕返してくれない人は許せん!ムキー!となるほどアレではないです。とりあえず活動していないユーザーさんのフォローは外しても問題ないだろうと思い整理を始めたのですが、手でいちいちやってられないと即悟ったので、TwitterのAPIを使うことにしました。
RubyとTwitterのgem使って、APIキーとかは取得済み前提で。基本ルールは半年間ツイートしてないユーザーはフォーロー解除。凍結ユーザーへのアクセスはエラーとなるため、API経由でフォロー解除できないクソ仕様。
$API_key = '秘密'
$API_key_secret = '秘密'
$Access_token = '秘密'
$Access_token_secret = '秘密'
client = Twitter::REST::Client.new do |config|
config.consumer_key = $API_key
config.consumer_secret = $API_key_secret
config.access_token = $Access_token
config.access_token_secret = $Access_token_secret
end
c = 1
limit_count = 1
#自身の各フォローIDを参照して
client.follower_ids.each do |fid|
begin
#フォローIDの直近1ツイート(RT含めず)を取得して
client.user_timeline( fid, { :count => 1, :include_rts => false } ).each do |tweet|
#scree_name取得
sn = tweet.user.screen_name
#直近ツイートから現在まで何日経っているか計算
empty_day = (( Time.now - tweet.created_at ) / 60 / 60 / 24 ).to_i
#一定期間経っていれば、フォローを解除
if empty_day > $threshold
client.unfollow( sn )
puts "#{sn}:#{empty_day}[フォロー解除]"
c += 1
else
puts "#{sn}:#{empty_day}"
end
#ツイート読み込みAPI制限(180)に近づいたら、しばらく待つ
if limit_count > 150
puts "API制限のため、16分待ちます"
sleep( 16 * 60 )
limit_count = 0
end
limit_count += 1
end
rescue
puts "#{fid}:ERROR"
limit_count += 1
end
end
puts "#{c - 1}人のフォローを解除しました"
コメントを残す