Twitterで活動していないユーザーをAPI使ってフォローから外す

 どうも、吉山です。私は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}人のフォローを解除しました"

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です