Skip to content

Instantly share code, notes, and snippets.

@morygonzalez
Created May 20, 2010 02:38
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 morygonzalez/407131 to your computer and use it in GitHub Desktop.
Save morygonzalez/407131 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# coding: utf-8
require 'net/http'
require 'uri'
require 'rubygems'
require 'json'
USERNAME = 'morygonzalez'
puts 'input password:'
system "stty -echo"
PASSWORD = gets.chomp
system "stty echo"
uri = URI.parse('http://chirpstream.twitter.com/2b/user.json')
begin
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new(uri.request_uri)
request.basic_auth(USERNAME, PASSWORD)
http.request(request) do |response|
raise 'Response is not chunked' unless response.chunked?
response.read_body do |chunk|
#空行は無視
status = JSON.parse(chunk) rescue next
#イベントでないときは無視
next unless status['event']
source = status['source']
#favorite
if status['event'] == 'favorite'
target_obj = status['target_object']
target_user = target_obj['user']
puts "#{status['event']}: #{source['screen_name']} -> #{target_user['screen_name']}: #{target_obj['text']} (status_id: #{source['id']})"
#follow
elsif status['event'] == 'follow'
target = status['target']
puts "#{status['event']}: #{source['screen_name']} -> #{target['screen_name']}"
#retweet
elsif status['event'] == 'retweet'
target_obj = status['target_object']
target_user = target_obj['user']
puts "#{status['event']}: #{source['screen_name']} -> #{target_user['screen_name']}: #{target_obj['text']}"
else
next
end
end
end
end
rescue Timeout::Error => ex
p "<-----!!!! Timeout::Error!!!!----->"
retry
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment