beatportでトラック検索用のAPIを叩こうとしたらドキュメントがわかりづらかったのでrailsでやったときのメモ。
API叩くクラスをモデル的に作成
beatport.rb
require 'nokogiri'
require 'open-uri'
class Beatport
def self.search(query)
url = BEATPORT_API_URL #'http://api.beatport.com/catalog/search?query='
keywords = URI.encode(query)
options = '&facets[]=fieldType:track&format=xml&v=2.0&page=0&perPage=3&sortBy=releaseDate%20desc' #option指定
uri = URI(url + keywords + options)
doc = Nokogiri::XML(uri.read)
return doc
end
end
コントローラー側で呼び出す
test_controller.rb
class TestController < ApplicationController
#===検索フォーム
#
#
def form
end
#===表示
#
def show
if params['search'].present?
#beatport
@beatport = Beatport.search(params['search'])
else
@errors = 'error'
render :action => :form
end
end
end
viewはaudioタグ使って表示。
show_html.erb抜粋
<script type="text/javascript" src="http://api.html5media.info/1.1.4/html5media.min.js"></script>
<% @beatport.search("document").xpath(".//track") .each do |doc| %>
<audio src="<%= doc['url'] %>" preload="none" controls>Your browser can not open audio file. オーディオファイルを読み込めません</audio>
<br />
<% end %>