Skip to content

Instantly share code, notes, and snippets.

@aaronpk
Created October 13, 2015 21:59
Show Gist options
  • Save aaronpk/9d2e58426e543a6c4b0d to your computer and use it in GitHub Desktop.
Save aaronpk/9d2e58426e543a6c4b0d to your computer and use it in GitHub Desktop.
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