Schwarze SQ: 短縮URLを展開するRubyスクリプトを作ってみた
HTTPを直打ちしてLocationヘッダの内容を取得してるだけなので、ものすごく単純な上にウィルス感染の心配も無し
いやいやいや、それはないわ。
Net::HTTP#head つかいなさいよ。GETメソッドなんてつかうんじゃない。なにをいってるんだおまえは。
ruby -rnet/http -ruri -e"uri = URI.parse(ARGV.shift);Net::HTTP.start(uri.host,uri.port){|io| r=io.head(uri.path); p r['Location'] || uri.to_s}" http://j.mp/dankogai
ちゃんとかくとこうなります
require 'net/http'
require 'uri'
def expand_url(url)
uri = url.kind_of?(URI) ? url : URI.parse(url)
Net::HTTP.start(uri.host, uri.port) { |io|
r = io.head(uri.path)
r['Location'] || uri.to_s
end
end
p expand_url("http://j.mp/dankogai") #=> "http://blog.livedoor.jp/dankogai/"
それにしても, Perlはすごいなー。
404 Blog Not Found:perl - 短縮URLを一行で展開する
perl -MLWP::UserAgent -lE 'say LWP::UserAgent->new->head(shift)->request->uri' http://j.mp/dankogai
追記:
ゴルフしたらこうなった
ruby -rnet/http -ruri -e"u=URI.parse(ARGV[0]);p Net::HTTP.start(u.host,u.port).head(u.path)['Location']||u.to_s" http://j.mp/dankogai
GETメソッドになるけどopen-uriつかえばもうちょっと短くなると思う。