Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skoppula/1a16e77a13c1e6fc9fe7 to your computer and use it in GitHub Desktop.
Save skoppula/1a16e77a13c1e6fc9fe7 to your computer and use it in GitHub Desktop.
Converts Twitter user IDs to screen names and filters based on a criteria
require 'twitter'
require 'json'
require 'time'
def is_valid_handle(handle)
handle =~ /^[a-z]{11,}$/ and handle.include?('e') ? true : false
end
def is_valid_user(user)
has_good_handle = is_valid_handle(user.screen_name)
t = user.created_at
has_good_handle and user.favorites_count > 5 and (t.year == 2011 or t.year == 2012) and t.month == 1
end
secrets = JSON.parse File.read('secrets.json')
client = Twitter::REST::Client.new do |config|
config.consumer_key = secrets['consumer_key']
config.consumer_secret = secrets['consumer_secret']
config.access_token = secrets['access_token']
config.access_token_secret = secrets['access_token_secret']
end
ids_file = 'Intersection_Royals_FiveThirtyEight.ids_formatted'
ids = File.read(ids_file)[1..-2].split(',').map { |x| x.strip.to_i }
filtered_users = []
(ids.length/100+1).times do |i|
puts 'Calling users lookup on ' + (i*100).to_s + ' to ' + (i*100+99).to_s
users = client.users(ids[i*100..i*100+99])
call_filtered_users = users.select { |user| is_valid_user(user) }.map { |user| [user.screen_name, user.id] }
call_filtered_users.each do |screen_name, id|
puts screen_name + ' ' + id.to_s
end
filtered_users.push(*call_filtered_users)
end
puts filtered_users.length
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment