2009-06-03
bit.ly (短縮URL) API呼び出し (その1)
Twitter APIを使ったTwitterへの記事投稿では、URLはbit.lyによる短縮URLに自動的に変換されるのですが、入力のステータスメッセージが140字を超えると、bit.lyに通す前に切り詰められてしまい、結果として短縮URLが適用されないようです。
# ちゃんと条件は確認していませんが
そこで、bit.lyもWeb APIを公開しているので、先にURLだけ短縮URL化してからTwitterに投稿することを試みてみます。
まずは、bit.ly APIの感触をつかむために、簡単なサンプルを試してみました。
情報源
bit.ly APIまとめ
longUrlを複数指定することで、複数のURLを一度に変換できます。
今回は、パラメータによる認証と、出力フォーマットJSONの組み合わせで試してみました。
サンプルコード
bit.ly APIの出力結果を解析するために、Rubyの標準添付ライブラリjsonを使っています。
test1.rb:
#!/usr/bin/ruby require 'rubygems' require 'net/http' Net::HTTP.version_1_2 require 'json' require 'pp' LONG_URLS = ['http://d.hatena.ne.jp/akio0911/20090530/p1', 'http://japanese.engadget.com/2009/05/30/psp-psp-go-e3/', 'http://plusd.itmedia.co.jp/mobile/articles/0905/28/news053.html'] # bit.ly Web APIに渡すquery stringの生成 query = 'version=2.0.1&' + LONG_URLS.map {|url| "longUrl=#{url}"}.join('&') + '&login=<ユーザID>&apiKey=<APIキー>' puts "[query]\n#{query}" # bit.ly APIの呼び出し result = JSON.parse(Net::HTTP.get("api.bit.ly", "/shorten?#{query}")) puts; puts "[reponse]" pp result puts; puts "[result]" result['results'].each_pair {|long_url, value| short_url = value['shortUrl'] puts "#{long_url} => #{short_url}" }
実行結果:
[query]
version=2.0.1&longUrl=http://d.hatena.ne.jp/akio0911/20090530/p1&longUrl=http://japanese.engadget.com/2009/05/30/psp-psp-go-e3/&longUrl=http://plusd.itmedia.co.jp/mobile/articles/0905/28/news053.html&login=<ユーザID>&apiKey=<APIキー>
[reponse]
{"results"=>
{"http://d.hatena.ne.jp/akio0911/20090530/p1"=>
{"userHash"=>"11zPtd",
"hash"=>"rTNbi",
"shortKeywordUrl"=>"",
"shortUrl"=>"http://bit.ly/11zPtd"},
"http://japanese.engadget.com/2009/05/30/psp-psp-go-e3/"=>
{"userHash"=>"vOHaf",
"hash"=>"vGIDt",
"shortKeywordUrl"=>"",
"shortUrl"=>"http://bit.ly/vOHaf"},
"http://plusd.itmedia.co.jp/mobile/articles/0905/28/news053.html"=>
{"userHash"=>"7KzoR",
"hash"=>"8xMnB",
"shortKeywordUrl"=>"",
"shortUrl"=>"http://bit.ly/7KzoR"}},
"errorMessage"=>"",
"errorCode"=>0,
"statusCode"=>"OK"}
[result]
http://d.hatena.ne.jp/akio0911/20090530/p1 => http://bit.ly/11zPtd
http://japanese.engadget.com/2009/05/30/psp-psp-go-e3/ => http://bit.ly/vOHaf
http://plusd.itmedia.co.jp/mobile/articles/0905/28/news053.html => http://bit.ly/7KzoR
コメントを書く
トラックバック - http://d.hatena.ne.jp/m-kawato/20090603/1244041369
