itunes search apiを使ってみる

最近作っているもので、itunesから映画や音楽の情報を取得したいと思い何か良い物がないかなーと思っていたら、これがあったので使いました。
※これ使わなくても、ここみたら自分でも出来たなと思いましたが、あえて同じのを作らなくても良いかなと思いました。

で、早速Gemfileに追加してbundle install

gem 'itunes-search-api'

bundle install --path vendor/bundle/

で、railsで作っているアプリに組み込むためにlib/apiに実装

require 'itunes-search-api'

module Api
  class ItunesSearch
    def initialize(term, country , category)
      @term     = term
      @country  = country
      @category = category
    end

    def search
      ITunesSearchAPI.search(term: @term , country:  @country, media:  @category)
    end
  end
end

で、テストをrspecで書く

require 'spec_helper'
require 'api/itunes_search'

describe Api::ItunesSearch do

  describe "APIをたたいて映画情報がとれるか" do
    context "映画一覧を取得" do
      before do
        @api = Api::ItunesSearch.new('star', 'JP', 'movie')
        @result = @api.search
        p @result
      end
      it { expect(@result).not_to be_nil }
    end
  end

end

では実際テストを実行してみると、データ取得出来るのが確認できますー


s_nakamura% bundle exec rspec spec/lib/api/itunes_search_spec.rb
/Users/s_nakamura/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler/runtime.rb:222: warning: Insecure world writable dir /usr/local/libs in PATH, mode 040777
/Users/s_nakamura/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.1/lib/bundler.rb:301: warning: Insecure world writable dir /usr/local/project in PATH, mode 040777

Api::ItunesSearch
APIをたたいて映画情報がとれるか
映画一覧を取得
[{"wrapperType"=>"track", "kind"=>"feature-movie", "trackId"=>689699581, "artistName"=>"J・J・エイブラムス", "trackName"=>"スター・トレック イントゥ・ダークネス Star Trek Into Darkness (字幕版)", "trackCensoredName"=>"スター・トレック イントゥ・ダークネス Star Trek Into Darkness (字幕版)", "trackViewUrl"=>"https://itunes.apple.com/jp/movie/suta-torekku-into-u-dakunesu/id689699581?uo=4", "previewUrl"=>"http://a261.v.phobos.apple.com/us/r1000/029/Video/v4/ca/63/f1/ca63f188-d406-5b94-7b2c-fdf60aedca77/mzvf_6397799913598167856.640x354.h264lc.D2.p.m4v", "artworkUrl30"=>"http://a5.mzstatic.com/us/r30/Video4/v4/3b/01/38/3b0138b3-3b1c-5df5-2064-2d01e09b244f/mza_8119760109411861093.30x30-50.jpg", "artworkUrl60"=>"http://a4.mzstatic.com/us/r30/Video4/v4/3b/01/38/3b0138b3-3b1c-5df5-2064-2d01e09b244f/mza_8119760109411861093.60x60-50.jpg", "artworkUrl100"=>"http://a4.mzstatic.com/us/r30/Video4/v4/3b/01/38/3b0138b3-3b1c-5df5-2064-2d01e09b244f/mza_8119760109411861093.100x100-75.jpg", "collectionPrice"=>2000.0, "trackPrice"=>2000.0, "collectionHdPrice"=>2500.0, "trackHdPrice"=>2500.0, "releaseDate"=>"2013-08-23T07:00:00Z", "collectionExplicitness"=>"notExplicit", "trackExplicitness"=>"notExplicit", "trackTimeMillis"=>7932391, "country"=>"JPN", "currency"=>"JPY", "primaryGenreName"=>"Sci-Fi & Fantasy", "contentAdvisoryRating"=>"G", "shortDescription"=>"宇宙艦隊司令官ジョン・ハリソン(カーン)(ベネディクト・カンバーバッチ)が復讐を誓い、たった一人でスターフリートに戦争を仕掛けた。", "longDescription"=>"宇宙艦隊司令官ジョン・ハリソン(カーン)(ベネディクト・カンバーバッチ)が復讐を誓い、たった一人でスターフリートに戦争を仕掛けた。カークとスポックはエンタープライズ号のクルーたちとともに生死を賭けた闘いへと旅立つ。全てを尽くして地球と人類を守る姿をJ・J・エイブラムス監督が“身体ごと引き込まれるほど素晴らしいアクション・アドベンチャー”として作り上げた。"}, {"wrapperType"=>"track", "kind"=>"feature-movie", "trackId"=>689625806, "artistName"=>"J・J・エイブラムス", "trackName"=>"スター・トレック イントゥ・ダークネス Star Trek Into Darkness (日本語吹替版)", "trackCensoredName"=>"スター・トレック イントゥ・ダークネス Star Trek Into Darkness (日本語吹替版)", "trackViewUrl"=>"https://itunes.apple.com/jp/movie/suta-torekku-into-u-dakunesu/id689625806?uo=4", "previewUrl"=>"http://a238.v.phobos.apple.com/us/r1000/016/Video6/v4/b1/86/44/b1864474-509b-863a-9a3b-ebf46a847c39/mzvf_5066410743238355188.640x354.h264lc.D2.p.m4v", "artworkUrl30"=>"http://a3.mzstatic.com/us/r30/Video4/v4/de/70/06/de7006bc-4002-fb08-9019-72573c182e03/mza_7921473002914409587.30x30-50.jpg", "artworkUrl60"=>"http://a2.mzstatic.com/us/r30/Video4/v4/de/70/06/de7006bc-4002-fb08-9019-72573c182e03/mza_7921473002914409587.60x60-50.jpg", "artworkUrl100"=>"http://a4.mzstatic.com/us/r30/Video4/v4/de/70/06/de7006bc-4002-fb08-9019-72573c182e03/mza_7921473002914409587.100x100-75.jpg", "collectionPrice"=>2000.0, "trackPrice"=>2000.0, "collectionHdPrice"=>2500.0, "trackHdPrice"=>2500.0, "releaseDate"=>"2013-08-23T07:00:00Z", "collectionExplicitness"=>"notExplicit", "trackExplicitness"=>"notExplicit", "trackTimeMillis"=>7941920, "country"=>"JPN", "currency"=>"JPY", "primaryGenreName"=>"Sci-Fi & Fantasy", "contentAdvisoryRating"=>"G", "shortDescription"=>"宇宙艦隊司令官ジョン・ハリソン(カーン)(ベネディクト・カンバーバッチ)が復讐を誓い、たった一人でスターフリートに戦争を仕掛けた。", "longDescription"=>"宇宙艦隊司令官ジョン・ハリソン(カーン)(ベネディクト・カンバーバッチ)が復讐を誓い、たった一人でスターフリートに戦争を仕掛けた。カークとスポックはエンタープライズ号のクルーたちとともに生死を賭けた闘いへと旅立つ。全てを尽くして地球と人類を守る姿をJ・J・エイブラムス監督が“身体ごと引き込まれるほど素晴らしいアクション・アドベンチャー”として作り上げた。"}, {"wrapperType"=>"track", "kind"=>"feature-movie", "trackId"=>511821903, "artistName"=>"瀧本智行", "trackName"=>"星守る犬", "trackCensoredName"=>"星守る犬", "trackViewUrl"=>"https://itunes.apple.com/jp/movie/xing-shouru-quan/id511821903?uo=4", "previewUrl"=>"http://a
・・・・・
・・・・

よし、これ使って次進もうっと