#!/usr/bin/ruby require 'rubygems' require 'rest_client' require 'rexml/document' class Tracker def initialize user = 'xxx' pass = 'xxx' @resource = RestClient::Resource.new("http://#{user}:#{pass}@twitter.com/") end def diff previous = Set.new current = Set.new begin input = File.new('followers', 'r') while (line = input.gets) previous.add(line.chomp) end input.close rescue end document = REXML::Document.new(@resource['followers/ids.xml'].get(:accept => 'text/xml')) document.elements.each('//id') { |id| current.add(id.text) } log = File.new('log', 'a') log.write(`date`) previous.subtract(current).each do |id| log.write("\n") document = REXML::Document.new(@resource["users/#{id}.xml"].get(:accept => 'text/xml')) screen_name = document.elements.to_a('//screen_name').first.text description = document.elements.to_a('//description').first.text name = document.elements.to_a('//name').first.text puts name puts description puts "http://twitter.com/#{screen_name}" puts log.write("#{name}\n") log.write("#{description}\n") log.write("http://twitter.com/#{screen_name}\n") log.write("\n") end output = File.new('followers', 'w') current.each { |id| output.write("#{id}\n") } output.close end end tracker = Tracker.new tracker.diff