diff --git a/itunes.gemspec b/itunes.gemspec index aca442f..11397c6 100644 --- a/itunes.gemspec +++ b/itunes.gemspec @@ -29,9 +29,9 @@ Gem::Specification.new do |s| s.add_development_dependency('json', '~> 1.6') s.add_runtime_dependency('rash', '~> 0.3') - s.add_runtime_dependency('faraday_middleware', '~> 0.7') + s.add_runtime_dependency('faraday_middleware', '~> 0.9') s.add_runtime_dependency('multi_json', '~> 1.0') - + s.files = `git ls-files`.split("\n") s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } diff --git a/lib/itunes.rb b/lib/itunes.rb index 2f822d6..e823e44 100644 --- a/lib/itunes.rb +++ b/lib/itunes.rb @@ -1,4 +1,5 @@ require 'faraday_middleware' +require 'nokogiri' require 'itunes/configuration' require 'itunes/client' diff --git a/lib/itunes/client.rb b/lib/itunes/client.rb index 17860b5..025bd3c 100644 --- a/lib/itunes/client.rb +++ b/lib/itunes/client.rb @@ -21,6 +21,7 @@ def initialize(options={}) include Request include Search include Lookup + include AdditionalMetadata end end diff --git a/lib/itunes/client/additional_metadata.rb b/lib/itunes/client/additional_metadata.rb new file mode 100644 index 0000000..c4d79d1 --- /dev/null +++ b/lib/itunes/client/additional_metadata.rb @@ -0,0 +1,20 @@ +module ITunes + module AdditionalMetadata + PEOPLE_TYPES=%w(Actor Director Artist Producer Screenwriter) + def read_people(people_type, html) + raise ArgumentError, "you must pass #{PEOPLE_TYPES.join('|')}" unless PEOPLE_TYPES.include?( people_type ) + nodes = html.xpath("//div[starts-with(@metrics-loc,'Titledbox_#{people_type}')]") + nodes.map{|n|n.search('.//a').map{|a|a.text}}.flatten + end + def get_additional_metadata(result) + raise ArgumentError, 'you must pass in a single result object containing track_url' unless result && result.track_view_url + html = Nokogiri::HTML(Faraday.new.get(result.track_view_url.gsub(/\?.*/,'')).body) + additional_metadata = PEOPLE_TYPES.inject({}) do |hash, type| + hash["#{type}s"]=read_people(type, html) + hash + end + additional_metadata + end + end +end + diff --git a/lib/itunes/client/search.rb b/lib/itunes/client/search.rb index 52b1f12..61ed7dd 100644 --- a/lib/itunes/client/search.rb +++ b/lib/itunes/client/search.rb @@ -92,4 +92,4 @@ def search(term, media='all', options={}) end end -end \ No newline at end of file +end