新しいfollowerやremoveした人を表示するRubyスクリプト

twitterで新たにfollowしてくれた人やremoveした人を表示する簡易スクリプトRubyで書いた。
followしてもらってもtwitterからメールが来ないときもあるし、Followersをクリックして見ていくのも面倒なので。


要mechanizeです。入っていない場合は gem install mechanize で。


follotter.rb

require 'rubygems'
require 'mechanize' 

def login
  agent = WWW::Mechanize.new
  agent.user_agent_alias = 'Mac FireFox'
  page = agent.get('http://twitter.com/')
  login_form = page.forms.first
  login_form['username_or_email'] = "username" #自分のtwitter idを入力
  login_form['password'] = "password"          #自分のパスワードを入力
  home_page = agent.submit(login_form)
  agent
end

def get_self_followers
  agent = login
  user_followers_page = agent.get("http://twitter.com/followers")
  followers_info = (user_followers_page/"/html/body/div[2]/div[2]/div/h2").inner_text
  puts followers_info
  /(\d+)/ =~ followers_info
  followers_num = $1.to_i
  if followers_num%20 != 0
    iter_num = followers_num/20 + 1
  else
    iter_num = followers_num/20
  end
  if ARGV[0] == "update"
    f = open("followers.txt", "w")
    (1..iter_num).each do |n|
      follower_page = agent.get("http://twitter.com/followers?page=#{n}")
      follower = follower_page/"a.url"
      follower.each { |fr| f.puts(fr.inner_text) }
    end
    f.close
  else
    older_followers = []
    followers = []
    (1..iter_num).each do |n|
      follower_page = agent.get("http://twitter.com/followers?page=#{n}")
      follower = follower_page/"a.url"
      follower.each { |fr| followers << fr.inner_text }
    end
    f = open("followers.txt", "r")
    while line = f.gets
      older_followers << line.chomp
    end
    new_follower = followers - older_followers
    remover = older_followers - followers
    new_follower.each { |nf| puts(nf + " has started to follow you.") }
    remover.each { |r| puts(r + " has removed you.") }
  end
end

get_self_followers


使い方
まず上記のスクリプトをfollotter.rbという名前で保存したら、以下を実行します。
自分のidとパスワードに変更するのを忘れずに。

ruby follotter.rb update

これによってfollowers.txtというファイルを作成し、現在のfollowerを書き込みます。
このファイルがfollowerの増減を比較するためのベースとなります。

それで、次に

ruby follotter.rb

を実行すれば、前回updateしたときと比較し、新しくfollowしてくれた人、removeしてくれた人を表示します。

それが確認できたなら再び

ruby follotter.rb update

を実行してfollowerが書かれているファイルを最新のものにします(ファイルは上書きされるので注意)。


1/18 17:30追記
ujihisaが添削してくれました。さすが関西を代表するRubyistです。これを読んでもっと勉強します。ujihisa++
Re: 新しいfollowerやremoveした人を表示するRubyスクリプト - Hacking Life
http://ujihisa.nowa.jp/entry/c76e1988fd


あ、今年もよろしくお願いします。