Rewritten other classes
This commit is contained in:
parent
9ef3c6e289
commit
1896c50e9c
@ -13,7 +13,7 @@ module MusicBrainz
|
||||
url = WEB_SERVICE_URL + resourse.to_s.gsub('_', '-') + '/' + (params[:id].to_s || '')
|
||||
params.delete(:id) unless params[:id].nil?
|
||||
url << '?' + params.map{ |k, v|
|
||||
k.to_s + '=' + (v.is_a?(Array) ? v.map{ |_| _.to_s.gsub('_', '-') }.join(',') : v.to_s)
|
||||
k.to_s.gsub('_', '-') + '=' + (v.is_a?(Array) ? v.map{ |_| _.to_s.gsub('_', '-') }.join(',') : v.to_s)
|
||||
}.join('&') unless params.empty?
|
||||
self.get_contents url
|
||||
end
|
||||
|
@ -49,8 +49,8 @@ module MusicBrainz
|
||||
:name => a.first_element_child.text,
|
||||
:weight => 0,
|
||||
:desc => self.safe_get_value(a, 'disambiguation'),
|
||||
:type => self.safe_get_attr(a, 'type'),
|
||||
:mbid => self.safe_get_attr(a, 'id')
|
||||
:type => self.safe_get_attr(a, nil, 'type'),
|
||||
:mbid => self.safe_get_attr(a, nil, 'id')
|
||||
}
|
||||
aliases = a.css('alias-list > alias').map{ |item| item.text }
|
||||
if aliases.include? name
|
||||
|
@ -1,7 +1,8 @@
|
||||
module MusicBrainz
|
||||
class Base
|
||||
def self.safe_get_attr xml, path, name
|
||||
xml.css(path).first.attr(name) unless xml.css(path).empty? or xml.css(path).first.attr(name).nil?
|
||||
node = path.nil? ? xml : (xml.css(path).first unless xml.css(path).empty?)
|
||||
node.attr(name) unless node.nil? or node.attr(name).nil?
|
||||
end
|
||||
|
||||
def self.safe_get_value xml, path
|
||||
|
@ -1,12 +1,12 @@
|
||||
module MusicBrainz
|
||||
class Release
|
||||
class Release < MusicBrainz::Base
|
||||
attr_accessor :id, :title, :status, :date, :country
|
||||
@tracks
|
||||
|
||||
def tracks
|
||||
if @tracks.nil? and not self.id.nil?
|
||||
@tracks = []
|
||||
Nokogiri::XML(MusicBrainz.load('http://musicbrainz.org/ws/2/release/' + self.id + '?inc=recordings&limit=100')).css('medium-list > medium > track-list > track').each do |r|
|
||||
Nokogiri::XML(MusicBrainz.load(:release, :id => self.id, :inc => [:recordings], :limit => 100)).css('medium-list > medium > track-list > track').each do |r|
|
||||
@tracks << MusicBrainz::Track.parse_xml(r)
|
||||
end
|
||||
end
|
||||
@ -14,15 +14,15 @@ module MusicBrainz
|
||||
end
|
||||
|
||||
def self.find mbid
|
||||
xml = Nokogiri::XML(MusicBrainz.load('http://musicbrainz.org/ws/2/release/' + mbid)).css('release').first
|
||||
xml = Nokogiri::XML(MusicBrainz.load(:release, :id => mbid)).css('release').first
|
||||
self.parse_xml(xml) unless xml.nil?
|
||||
end
|
||||
|
||||
def self.parse_xml xml
|
||||
@release = MusicBrainz::Release.new
|
||||
@release.id = xml.attr('id')
|
||||
@release.title = xml.css('title').text unless xml.css('title').empty?
|
||||
@release.status = xml.css('status').text unless xml.css('status').empty?
|
||||
@release.id = self.safe_get_attr(xml, nil, 'id')
|
||||
@release.title = self.safe_get_value(xml, 'title')
|
||||
@release.status = self.safe_get_value(xml, 'status')
|
||||
date = xml.css('date').empty? ? '2030-12-31' : xml.css('date').text
|
||||
if date.length == 0
|
||||
date = '2030-12-31'
|
||||
@ -33,7 +33,7 @@ module MusicBrainz
|
||||
end
|
||||
date = date.split('-')
|
||||
@release.date = Time.utc(date[0], date[1], date[2])
|
||||
@release.country = xml.css('country').text unless xml.css('country').empty?
|
||||
@release.country = self.safe_get_value(xml, 'country')
|
||||
@release
|
||||
end
|
||||
end
|
||||
|
@ -1,12 +1,12 @@
|
||||
module MusicBrainz
|
||||
class ReleaseGroup
|
||||
class ReleaseGroup < MusicBrainz::Base
|
||||
attr_accessor :id, :type, :title, :disambiguation, :first_release_date
|
||||
@releases
|
||||
|
||||
def releases
|
||||
if @releases.nil? and not self.id.nil?
|
||||
@releases = []
|
||||
Nokogiri::XML(MusicBrainz.load('http://musicbrainz.org/ws/2/release/?release-group=' + self.id + '&limit=100')).css('release').each do |r|
|
||||
Nokogiri::XML(MusicBrainz.load(:release, :release_group => self.id, :inc => [:media], :limit => 100)).css('release').each do |r|
|
||||
@releases << MusicBrainz::Release.parse_xml(r)
|
||||
end
|
||||
end
|
||||
@ -14,16 +14,16 @@ module MusicBrainz
|
||||
end
|
||||
|
||||
def self.find mbid
|
||||
xml = Nokogiri::XML(MusicBrainz.load('http://musicbrainz.org/ws/2/release-group/' + mbid)).css('release-group').first
|
||||
xml = Nokogiri::XML(MusicBrainz.load(:release_group, :id => mbid)).css('release-group').first
|
||||
self.parse_xml(xml) unless xml.nil?
|
||||
end
|
||||
|
||||
def self.parse_xml xml
|
||||
@release_group = MusicBrainz::ReleaseGroup.new
|
||||
@release_group.id = xml.attr('id')
|
||||
@release_group.type = xml.attr('type')
|
||||
@release_group.title = xml.css('title').text
|
||||
@release_group.disambiguation = xml.css('disambiguation').empty? ? '' : xml.css('disambiguation').text
|
||||
@release_group.id = self.safe_get_attr(xml, nil, 'id')
|
||||
@release_group.type = self.safe_get_attr(xml, nil, 'type')
|
||||
@release_group.title = self.safe_get_value(xml, 'title')
|
||||
@release_group.disambiguation = self.safe_get_value(xml, 'disambiguation')
|
||||
date = xml.css('first-release-date').empty? ? '2030-12-31' : xml.css('first-release-date').text
|
||||
if date.length == 0
|
||||
date = '2030-12-31'
|
||||
|
@ -1,19 +1,19 @@
|
||||
module MusicBrainz
|
||||
class Track
|
||||
class Track < MusicBrainz::Base
|
||||
attr_accessor :position, :recording_id, :title, :length
|
||||
|
||||
def self.find mbid
|
||||
xml = Nokogiri::XML(MusicBrainz.load('http://musicbrainz.org/ws/2/recording/' + mbid + '?limit=100'))
|
||||
xml = Nokogiri::XML(MusicBrainz.load(:recording, :id => mbid))
|
||||
self.parse_xml(xml) unless xml.nil?
|
||||
end
|
||||
|
||||
def self.parse_xml xml
|
||||
@track = MusicBrainz::Track.new
|
||||
@track.position = xml.css('position').text.to_i unless xml.css('position').empty?
|
||||
@track.recording_id = xml.css('recording').attr('id').value unless xml.css('recording').empty?
|
||||
@track.title = xml.css('recording > title').text unless xml.css('recording > title').empty?
|
||||
@track.length = xml.css('length').first.text.to_i unless xml.css('length').empty?
|
||||
@track.length = xml.css('recording > length').first.text.to_i unless xml.css('recording > length').empty?
|
||||
@track.position = self.safe_get_value(xml, 'position').to_i
|
||||
@track.recording_id = self.safe_get_attr(xml, 'recording', 'id')
|
||||
@track.title = self.safe_get_value(xml, 'recording > title')
|
||||
@track.length = self.safe_get_value(xml, 'length').to_i
|
||||
@track.length = self.safe_get_value(xml, 'recording > length').to_i
|
||||
@track
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user