Created
October 13, 2015 21:59
-
-
Save aaronpk/9d2e58426e543a6c4b0d to your computer and use it in GitHub Desktop.
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 'bundler' | |
Bundler.require :default | |
logger = Logger.new(STDOUT) | |
# comma-separated list of user IDs to follow | |
user_ids = '1000,2000,3000' | |
search = { | |
:consumer_key => '', | |
:consumer_secret => '', | |
:oauth_token => '', | |
:oauth_secret => '', | |
:follow => user_ids | |
} | |
def process_tweet(logger, tweet) | |
msg_text = "<https://twitter.com/#{tweet.user.screen_name}/status/#{tweet.id}>" | |
puts msg_text | |
puts tweet.text | |
puts | |
# Do something with the tweet | |
HTTParty.post 'https://hooks.slack.com/services/XXX/XXX/XXXXXXXXXXXX', { | |
:body => { | |
:text => msg_text, | |
:username => tweet.user.screen_name, | |
:icon_url => tweet.user.profile_image_url, | |
:channel => '#tweets' | |
}.to_json, | |
:headers => { 'Content-Type' => 'application/json' } | |
} | |
end | |
end | |
client = TweetStream::Client.new( | |
consumer_key: search[:consumer_key], | |
consumer_secret: search[:consumer_secret], | |
oauth_token: search[:oauth_token], | |
oauth_token_secret: search[:oauth_secret], | |
auth_method: :oauth | |
) | |
$twitter = Twitter::REST::Client.new do |config| | |
config.consumer_key = search[:consumer_key] | |
config.consumer_secret = search[:consumer_secret] | |
config.access_token = search[:oauth_token] | |
config.access_token_secret = search[:oauth_secret] | |
end | |
Signal.trap("TERM") do | |
logger.info "Shutting down streaming connection..." | |
client.stop | |
logger.info "Terminating." | |
exit | |
end | |
# Signal.trap("INT") do | |
# logger.info "ctrl-c received, shutting down streaming connection..." | |
# client.stop | |
# exit | |
# end | |
client.on_delete do |status_id, user_id| | |
logger.info "#{user_id} deleted #{status_id}" | |
end | |
client.on_limit do |skip_count| | |
logger.info "Got limit message: #{skip_count}" | |
end | |
client.on_enhance_your_calm do | |
logger.warn "Enhance your calm" | |
end | |
client.on_inited do | |
logger.info "inited" | |
end | |
client.on_reconnect do |timeout,retries| | |
logger.info "reconnect timeout #{timeout} retries #{retries}" | |
end | |
client.on_no_data_received do | |
logger.info "no_data_received" | |
end | |
client.on_inited do | |
logger.info "inited" | |
end | |
client.on_error do |message| | |
logger.info "error: #{message}" | |
end | |
logger.info "Creating new streaming search client" | |
client.follow(search[:follow]) do |tweet| | |
process_tweet logger, tweet | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment