Sha256: f603e580d5c6834f28c6cfec04a21032ca852f485eddcc290e7560ceeb71739b
Contents?: true
Size: 1.37 KB
Versions: 2
Compression:
Stored size: 1.37 KB
Contents
module TwitterToCsv class TwitterWatcher attr_accessor :username, :password, :filter, :fetch_errors def initialize(options) @username = options[:username] @password = options[:password] @filter = options[:filter] @fetch_errors = 0 end def progress(str) STDERR.print "#{str}..." STDERR.flush yield STDERR.puts "done." end def run(&block) EventMachine::run do stream = Twitter::JSONStream.connect( :path => "/1/statuses/#{(filter && filter.length > 0) ? 'filter' : 'sample'}.json#{"?track=#{filter.join(",")}" if filter && filter.length > 0}", :auth => "#{username}:#{password}", :ssl => true ) stream.each_item do |item| handle_status JSON.parse(item), block end stream.on_error do |message| STDERR.puts " --> Twitter error: #{message} <--" end stream.on_max_reconnects do |timeout, retries| STDERR.puts " --> Oops, tried too many times! <--" EventMachine::stop_event_loop end end end def handle_status(status, block) return unless status return if status.has_key?('delete') return unless status['text'] status['text'] = status['text'].gsub(/</, "<").gsub(/>/, ">").gsub(/[\t\n\r]/, ' ') block.call(status) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
twitter_to_csv-0.0.5 | lib/twitter_to_csv/twitter_watcher.rb |
twitter_to_csv-0.0.4 | lib/twitter_to_csv/twitter_watcher.rb |