Created
May 15, 2011 07:29
-
-
Save morygonzalez/972943 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
#-*- coding: utf-8 -*- | |
require "rubygems" if RUBY_VERSION < '1.9' | |
require "json" | |
require "oauth/cli/twitter" | |
access_token = OAuth::CLI::Twitter.get_access_token(:file => ENV['HOME'] + '/.favoritter') | |
def twitter_ary(statuses) | |
ary = [] | |
statuses.each do |s| | |
h = {:id => s["id"], :text => s["text"]} | |
ary << h | |
end | |
return ary | |
end | |
if ARGV.size == 1 | |
target = ARGV[0] | |
all_statuses = access_token.get( | |
"http://api.twitter.com/1/statuses/user_timeline.json?screen_name=#{target}" | |
).body | |
parsed = JSON.parse(all_statuses) | |
target_statuses = [] | |
parsed.each do |s| | |
target_statuses << s unless s["favorited"] | |
end | |
@target = twitter_ary(target_statuses) | |
if @target.size == 0 | |
puts "there's no #{target}'s status to fav!" | |
else | |
@target.each do |t| | |
request = access_token.post( | |
"http://api.twitter.com/1/favorites/create/#{t[:id]}.json" | |
) | |
puts "favorited #{target}'s #{t[:text]}" if request | |
end | |
end | |
else | |
puts "you need target user name!" | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
#-*- coding: utf-8 -*- | |
require "rubygems" if RUBY_VERSION < '1.9' | |
require "net/https" | |
require "oauth/cli/twitter" | |
require "json" | |
$access_token = OAuth::CLI::Twitter.get_access_token(:file => ENV['HOME'] + '/.favoritter') | |
$target = ARGV[0] | |
def connect | |
uri = URI.parse("https://userstream.twitter.com/2/user.json") | |
https = Net::HTTP.new(uri.host, uri.port) | |
https.use_ssl = true | |
https.verify_mode = OpenSSL::SSL::VERIFY_NONE | |
https.start do |https| | |
request = Net::HTTP::Post.new(uri.request_uri) | |
request.set_form_data({"track" => $target}) | |
request.oauth!(https, $access_token.consumer, $access_token) | |
https.request(request) do |response| | |
raise response.code.to_i unless response.code.to_i == 200 | |
raise 'Response is not chunked' unless response.chunked? | |
response.read_body do |chunk| | |
begin | |
status = JSON.parse(chunk) | |
rescue JSON::ParserError => e | |
puts e | |
next | |
end | |
yield status | |
end | |
end | |
end | |
end | |
def run | |
loop do | |
begin | |
connect do |json| | |
if json['text'] | |
user = json['user'] | |
if user['screen_name'] == $target | |
message = "faved #{user['screen_name']}'s \"#{json['text']}\"" | |
puts message if make_favorite(json['id_str']) | |
end | |
end | |
end | |
rescue => e | |
puts e | |
end | |
end | |
end | |
def make_favorite(id) | |
request = $access_token.post("http://api.twitter.com/1/favorites/create/#{id}.json") | |
end | |
Signal.trap('INT') do | |
exit | |
end | |
run |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment