Created
August 1, 2015 09:45
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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