Skip to content

Instantly share code, notes, and snippets.

@hogelog
Created March 22, 2011 18:43
Show Gist options
  • Save hogelog/881786 to your computer and use it in GitHub Desktop.
Save hogelog/881786 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require "rubygems"
gem "twitter"
require "twitter"
require "oauth"
require "pit"
require "httpclient"
require "RMagick"
$pit = Pit.get("profcard_maker", :require => {
"consumer_key" => "Twitter Consumer Key",
"consumer_secret" => "Twitter Consumer Secret",
})
unless $pit["access_key"]
consumer = OAuth::Consumer.new $pit["consumer_key"], $pit["consumer_secret"], {
:site => "http://twitter.com",
:signature_method => "HMAC-SHA1",
:authorize_url => "https://api.twitter.com/oauth/authorize",
:request_token_url => "https://api.twitter.com/oauth/request_token",
:access_token_url => "https://api.twitter.com/oauth/access_token",
}
request = consumer.get_request_token
puts "access URL: #{request.authorize_url}"
print "Enter PIN: "
pin = STDIN.gets.chomp
access = request.get_access_token(:oauth_token => request.token, :oauth_verifier => pin)
Pit.set("profcard_maker", :data => {
"consumer_key" => $pit["consumer_key"],
"consumer_secret" => $pit["consumer_secret"],
"access_key" => access.token,
"access_secret" => access.secret,
})
end
Twitter.configure do |config|
config.consumer_key = $pit["consumer_key"]
config.consumer_secret = $pit["consumer_secret"]
config.oauth_token = $pit["access_key"]
config.oauth_token_secret = $pit["access_secret"]
end
$client = Twitter::Client.new
$http = HTTPClient.new
ARGV.each do |name|
image_path = "images/#{name}"
unless File.exists?(image_path)
image_url = $client.profile_image(name).gsub(/_normal\./, ".")
File.open(image_path, "wb"){|file|
file.print $http.get_content(image_url)
}
end
image = Magick::ImageList.new(image_path)
image.resize!(250, 250)
extent = image.change_geometry("250x300"){|cols,rows,img|
img.resize_to_fit!(cols, rows)
img.border(0, 25, 'white').roll(0, -25)
}
draw = Magick::Draw.new
draw.annotate(extent, 0, 0, 0, 0, name) do
draw.gravity = Magick::SouthGravity
draw.pointsize = 35
end
extent.write("images/card_#{name}.png")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment