Skip to content

Instantly share code, notes, and snippets.

@AlexIsMaking
Created January 30, 2017 01:45
Show Gist options
  • Save AlexIsMaking/cc666ec1dec55c647efb4b733ac83b50 to your computer and use it in GitHub Desktop.
Save AlexIsMaking/cc666ec1dec55c647efb4b733ac83b50 to your computer and use it in GitHub Desktop.
PUBLIC
# Adapted from https://gist.github.com/afeld/5589756
#
# usage:
#
# $ gem install t twitter
# $ t authorize
# $ ruby twitter_bio_search.rb
# from XXX peeps:
#
# LEVO
# name - @screen_name - bio
# ...
require 'yaml'
require 'twitter'
# created via 't' gem CLI
# just grab first authentication
AUTH_INFO = YAML.load_file('C:\Users\alex.sherwood.trc')['profiles'].values[0].values[0]
client = Twitter::REST::Client.new do |config|
config.consumer_key = AUTH_INFO['consumer_key']
config.consumer_secret = AUTH_INFO['consumer_secret']
config.access_token = AUTH_INFO['token']
config.access_token_secret = AUTH_INFO['secret']
puts "consumer key: " config.consumer_key
puts "consumer secret: " config.consumer_secret
puts "access token: " config.access_token
puts "access token secret: " config.access_token_secret
end
# gather followers + following
all_ids = Set.new
client.follower_ids.each do |follower_id|
all_ids << follower_id
end
client.friend_ids.each do |following_id|
all_ids << following_id
end
puts "from #{all_ids.size} peeps:\n\n"
TERM_REGEX = /@monzo/i
users_by_terms = {}
# can only retrieve 100 at a time
all_ids.each_slice(100) do |some_ids|
client.users(*some_ids, include_entities: false).each do |user|
desc = user.description
if desc
desc.scan(TERM_REGEX) do |term|
term = term.downcase
users_by_terms[term] ||= Set.new
users_by_terms[term] << user
end
end
end
end
users_by_terms.sort.each do |term, users|
puts term.upcase
users.each do |user|
desc = user.description
if desc
# compress whitespace
desc = desc.gsub(/\s+/, ' ')
end
puts "https://twitter.com/#{user.screen_name} – #{user.name} – #{desc}"
end
puts "\n"
end
# ruby -v
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment