bitlyをRubyで使う
あるURLについて、ネット上で人々が何を言っているか、話題になっているかを知るのに、最近は、はてなブックマークよりもTwitterのほうがいい感じ。特にbit.lyがいい。
bit.lyのAPIをRubyで叩いてみた。どのぐらいRTされているかを表示する。
#!/usr/bin/env ruby require 'rubygems' require 'open-uri' require 'pp' require 'json' url = ARGV.shift api_clicks = "http://api.bit.ly/v3/clicks?shortUrl=" api_lookup = "http://api.bit.ly/v3/lookup?url=" key = "&login=USERNAME&apiKey=LONGLONGAPIKEY" j = open(api_lookup+url+key).read res = JSON.parse(j) # pp res ghash = res["data"]["lookup"][0]["global_hash"] j = open(api_clicks+ghash+key).read res = JSON.parse(j) # pp res gclicks = res["data"]["clicks"][0]["global_clicks"] print " Total number of retweets: #{gclicks}\n"
URLをコマンドラインで渡す。
% retweet http://heroku.com/ Total number of retweets: 637 %
JSONをhashにするのはいいんだけど、data->lookup[0]->global_hashというのがひどいことになっている気がする。
Rubyならライブラリもあるだろうと思って検索したら、ちゃんとgemになっている。
% sudo gem install bitly Password: Successfully installed bitly-0.5.2 1 gem installed Installing ri documentation for bitly-0.5.2... Installing RDoc documentation for bitly-0.5.2... %
#!/usr/bin/env ruby require 'rubygems' require 'bitly' # user info user = "USERNMAE" apikey = "LONGLONGAPIKEY" # initialize Bitly.use_api_version_3 bitly = Bitly.new(user, apikey) # retrieve the stat url = bitly.shorten(ARGV.shift) clicks = bitly.clicks(url.global_hash) num = clicks["global_clicks"] print " Total number of retweets: #{num}\n"
bitlyライブラリのコードは、ほどよいサイズと見通しで勉強になる。
require 'json'がエラーになるので30分ぐらい悩んだ。irbでは動くのに。実はrequire 'rubygems'と入れるのを忘れていた。Ruby1.9系ばかり使っていたので、1.8にはそんなお作法があったのをすっかり忘れていた。