2013年10月13日日曜日

「楽天ブックス書籍検索API」を使ってみる

いきなりだが、楽天ウェブサービスの一つ「楽天ブックス書籍検索API」を使ってみようともう。
一応、無料の商用利用可と言う事となっている。
言語は、Rails 等で使えるかどうか分からないけど、Ruby で使えたら良いなと思っている。

毎度の事ながら既に、実現している方が居られた。

[Ruby]Ruby 1.9で楽天ブックス書籍検索API2を使ってみる
http://d.hatena.ne.jp/d-kami/20130409/1365483598

こちらでは、名前が「楽天ブックス書籍検索API2」になっているが、現行は「楽天ブックス書籍検索API」に変わった模様。

「楽天ブックス書籍検索API」
https://webservice.rakuten.co.jp/api/booksbooksearch/

といっても、処理については同じで良い事がわかった。

準備
さて、まずこのサービスを使うには、「楽天ウェブサービス」に登録し、「楽天ブックス書籍検索API」と使うためのアプリ申請をする必要がある。

これは、特に注意点はなく、登録すればよい(コールバックドメインについては example.com にした)。
この登録によって、今回のプログラムで使用するアプリIDを取得する。

1. コードを書く
もう終盤に当たるが、参考にさせて頂いたサイトのコードを写す。

ポイントとしては、ここでは、https の通信を行うので 「net/https」を使っている。

また、参考先では、CA証明書ファイルについて指定があるが、
この部分「nil」に設定して、
「https.verify_mode = OpenSSL::SSL::VERIFY_NONE」をしてしても問題なく動いたので今回はこちらの方法を使った。
    require 'json'
    require 'net/https'
    
    app_id = 'ここにアプリIDをセット'
    searchTitle = 'Java'
    
    https = Net::HTTP.new('app.rakuten.co.jp', 443)
    https.use_ssl = true
    https.ca_file = 'nil'
    https.verify_mode = OpenSSL::SSL::VERIFY_NONE
    https.verify_depth = 5
    
    https.start {
      response = https.get("/services/api/BooksBook/Search/20130522?format=json&applicationId=#{app_id}&title=#{searchTitle}")
      document = JSON.parse(response.body);
      
      document['Items'].each{|item|
        puts item['Item']['title']
      }
    }
2. コードの実行
これで、完了。
あとは、実行するだけ
    $ ruby BookSearch.rb 
    Javaで始めるOpenCVプログラミング
    ...
    速習JavaScript
と、まあ簡単に書籍のデータが取得できるようになった。
実際には、一つ前の記事のプロキシ設定で、悩み数時間かかったりだとか、Windows の環境では証明書関係のエラーが出て躓いた(OpenSSL::SSL::VERIFY_NONE で切り抜けた)ので、サクサク行けたわけではない。

今回は、タイトルだけだが当然他の値も取得できているので、今後に活かさせば良いかなと思う。

0 件のコメント:

コメントを投稿