Skip to content

Instantly share code, notes, and snippets.

@bantic
Created November 20, 2009 17:55
Show Gist options
  • Save bantic/239662 to your computer and use it in GitHub Desktop.
Save bantic/239662 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'twitter'
require 'sequel'
DB = Sequel.connect("sqlite://twits.db")
TWITTER = Twitter::Client.new
if !DB.tables.include?(:twits)
puts "Creating db table :twits"
DB.create_table(:twits) do
primary_key :id, :type => Integer
Integer :followers_count
Integer :friends_count
String :screen_name
Integer :statuses_count
Boolean :protected, :default => false
end
end
TWITS = DB[:twits]
def get_users_from_public_timeline!
TWITTER.timeline_for(:public).collect {|status| status.user }.uniq
end
def filter_viewed_users_from_db(users)
seen_ids = TWITS.where(:id => users.collect {|u| u.id}).select(:id).all.collect {|x| x[:id] }
puts "Seen ids: #{seen_ids.inspect}" if !seen_ids.empty?
users.reject {|u| seen_ids.include?(u.id)}
end
def insert_user_data(users)
users.each do |u|
TWITS.insert( :id => u.id,
:followers_count => u.followers_count,
:friends_count => u.friends_count,
:screen_name => u.screen_name,
:statuses_count => u.statuses_count,
:protected => u.protected )
puts "Added user #{u.screen_name} (#{u.friends_count}/#{u.followers_count})"
end
end
STDOUT.sync = true
loop do
insert_user_data(filter_viewed_users_from_db(get_users_from_public_timeline!))
sleep 0.1
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment