Skip to content

Instantly share code, notes, and snippets.

@codeincontext
Created July 23, 2012 20:47
Show Gist options
  • Save codeincontext/3166130 to your computer and use it in GitHub Desktop.
Save codeincontext/3166130 to your computer and use it in GitHub Desktop.
Keep a log of every tweet deleted by people you follow
require 'daemons'
require 'tweetstream'
$output_file = '???/deleted_tweets.txt'
Daemons.run_proc(
'deletweet',
log_output: true,
dir_mode: :script
) do
class Twitterbot
attr_accessor :received_tweets
def initialize()
TweetStream.configure &twitter_config
self.received_tweets = {}
puts "Connecting"
client = TweetStream::Client.new
client.on_limit do |sc|
puts "Rate limit reached (skip count #{sc})"
end.on_error do |m|
puts "Error: #{m})", !m.include?("duplicate")
end.on_reconnect do |t, r|
puts "Reconnect: timout:#{t} retries:#{r})"
end.on_unauthorized do
puts "Unauthorised"
end.on_inited do
puts "Inited"
end.on_no_data_received do
puts "Stalled"
client.close_connection
end.on_delete do |status_id|
record_deletion status_id
end.userstream do |status|
status_item = {
username: status.user.name,
text: status.text
}
self.received_tweets[status.id] = status_item
end
puts "Closing"
end
private
def twitter_config
lambda do |config|
config.consumer_key = ''
config.consumer_secret = ''
config.oauth_token = ''
config.oauth_token_secret = ''
end
end
def record_deletion(status_id)
if status = self.received_tweets[status_id]
logger.info "#{status[:username]} - #{status[:text]}"
puts "#{status[:username]} - #{status[:text]}"
end
end
def logger
@logger ||= Logger.new($output_file)
end
end
Twitterbot.new
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment