twitterでフォローしているけど、フォローされていない人を探すスクリプトを作った。ただしフォローしている、もしくはされているのどちらかが100を越えている場合は使えない。改良しなければ!またfriendsとfollowersを入れ替えれば逆もできる。
require 'net/http' require 'rexml/document' username = 'hoge' password = 'hogehoge' class User attr_reader :id attr_reader :name attr_reader :screen_name attr_reader :description attr_reader :url attr_reader :followers_count attr_reader :friends_count attr_reader :statuses_count attr_reader :location attr_reader :profile_image_url def initialize(element) @id = element.elements['id'].text() @name = element.elements['name'].text() @screen_name = element.elements['screen_name'].text() @description = element.elements['description'].text() @url = element.elements['url'].text() @followes_count = element.elements['followers_count'].text() @friends_count = element.elements['friends_count'].text() @statuses_count = element.elements['statuses_count'].text() @location = element.elements['location'].text() @profile_image_url = element.elements['profile_image_url'].text() end end class Twitter TwitterServer = 'twitter.com' def initialize(username, password) @username = username @password = password end def friends request = Net::HTTP::Get.new('http://twitter.com/statuses/friends.xml') request.basic_auth(@username, @password) http = Net::HTTP.start(TwitterServer) response = http.request(request) return get_users(response.body) end def followers request = Net::HTTP::Get.new('http://twitter.com/statuses/followers.xml') request.basic_auth(@username, @password) http = Net::HTTP.start(TwitterServer) response = http.request(request) return get_users(response.body) end def get_users(body) users = Array.new() doc = REXML::Document.new(body) doc.get_elements('/users/user').each{|element| users << User.new(element) } return users end end friends = Hash.new() twitter = Twitter.new(username, password) twitter.followers().each{|user| friends[user.name] = user.name } twitter.friends().each{|user| if !friends.key?(user.name) puts user.name end }