Skip to content

Instantly share code, notes, and snippets.

@synthdnb
Created March 19, 2014 01:04
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 synthdnb/9633525 to your computer and use it in GitHub Desktop.
Save synthdnb/9633525 to your computer and use it in GitHub Desktop.
require 'twitter'
require 'mongo'
include Mongo
twitter = Twitter::Streaming::Client.new do |config|
config.consumer_key = "***"
config.consumer_secret = "***"
config.access_token = "***"
config.access_token_secret = "***"
end
cli = MongoClient.new
db = cli['twitter']
begin
twitter.user do |event|
case event
when Twitter::Tweet
user = event.user
last = db['user'].find_one(
{ id: user.id },
sort: ['seen_at', DESCENDING],
)
if !last || last["username"] != user.username
db['user'].insert({
id: user.id,
username: user.username,
seen_at: event.created_at,
})
puts "Inserted #{user.id}, #{user.username}, #{event.created_at}"
end
db['tweet'].insert({
user_id: user.id,
text: event.full_text,
url: event.url.to_s,
at: event.created_at
})
puts "#{event.user.username} #{event.full_text}"
when Twitter::DirectMessage
when Twitter::Streaming::DeletedTweet
when Twitter::Streaming::Event
when Twitter::Streaming::FriendList
when Twitter::Streaming::StallWarning
end
end
rescue EOFError => e
puts e.message
puts e.backtrace
sleep 10
retry
rescue => e
puts e.message
puts e.backtrace
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment