Skip to content

Instantly share code, notes, and snippets.

@yusuke
Created May 2, 2012 13:47
Show Gist options
  • Save yusuke/2576627 to your computer and use it in GitHub Desktop.
Save yusuke/2576627 to your computer and use it in GitHub Desktop.
print common follower screen names of specified twitter accounts
require "net/https"
require "uri"
def get(url)
parsed = URI.parse(url)
https = Net::HTTP.new(parsed.host, parsed.port)
https.use_ssl = parsed.scheme == "https"
https.start { |w| w.get(url).body }
end
def get_ids(screen_name)
# fetches up to 5000 followers' ids
ids_response = get("https://api.twitter.com/1/followers/ids.json?screen_name=" + screen_name)
/\[(.*)\]/.match(ids_response)[1].split(",")
end
common_followers = get_ids(ARGV.shift)
while (screen_name = ARGV.shift)
common_followers = common_followers & get_ids(screen_name)
end
# assuming the specified two have only up to 100 common followers
users = get("https://api.twitter.com/1/users/lookup.json?user_id=" + common_followers.join(","))
users.scan(/(?:"screen_name":")([a-zA-Z0-9_]*)(?:")/).each do |screen_name|
puts "@" + screen_name[0]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment