Skip to content

Instantly share code, notes, and snippets.

@fukayatsu
Last active December 15, 2015 08:29
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 fukayatsu/5231578 to your computer and use it in GitHub Desktop.
Save fukayatsu/5231578 to your computer and use it in GitHub Desktop.
zusaarの特定のイベントの参加者を一括でフォローする
#/usr/bin/env ruby
#
# 特定のイベントに参加している人(の中でtwitterアカウントで登録している人)を一括でフォローする
#
# usage:
# ruby zusaar_event_follow.rb [event_id]
#
require 'zusaar'
require 'twitter'
def init_twitter
Twitter.configure do |config|
config.consumer_key = 'YOUR_CONSUMER_KEY'
config.consumer_secret = 'YOUR_CONSUMER_SECRET'
config.oauth_token = 'YOUR_OAUTH_TOKEN'
config.oauth_token_secret = 'YOUR_OAUTH_TOKEN_SECRET'
end
end
def user_screen_names(event_id)
result = Zusaar.search_users(event_id: event_id)
users = result.events.first.users
users.select{ |user|
user.profile_url =~ /twitter\.com/
}.map {|user|
matches = user.profile_url.match(/twitter\.com\/([a-zA-Z0-9_]+)/)
matches[1]
}
end
event_id = ARGV[0]
unless event_id
puts "usage:"
puts " ruby zusaar_event_follow.rb [event_id]"
exit
end
init_twitter
screen_names = user_screen_names(event_id)
screen_names.each do |screen_name|
begin
puts "following #{screen_name} ..."
Twitter.follow(screen_name)
rescue Twitter::Error::TooManyRequests
puts "...rate limit: sleep 15 mins"
sleep 15 * 60
retry
rescue Twitter::Error::ClientError
puts "...rate limit? sleep 15 mins"
sleep 15 * 60
retry
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment