lib/musicbrainz/release.rb in musicbrainz-0.6.0 vs lib/musicbrainz/release.rb in musicbrainz-0.7.0
- old
+ new
@@ -1,42 +1,43 @@
# -*- encoding: utf-8 -*-
+
module MusicBrainz
- class Release < MusicBrainz::Base
- attr_accessor :id, :title, :status, :format, :date, :country
- @tracks
+ class Release < Base
+ field :id, String
+ field :title, String
+ field :status, String
+ field :format, String
+ field :date, Time
+ field :country, String
+
def tracks
- if @tracks.nil? and not self.id.nil?
- @tracks = []
- Nokogiri::XML(self.class.load(:release, :id => self.id, :inc => [:recordings, :media], :limit => 100)).css('medium-list > medium > track-list > track').each do |r|
- @tracks << MusicBrainz::Track.parse_xml(r)
- end
+ @tracks ||= nil
+ if @tracks.nil? and !id.nil?
+ @tracks = self.class.load({
+ :parser => :release_tracks,
+ :create_models => MusicBrainz::Track
+ }, {
+ :resource => :release,
+ :id => id,
+ :inc => [:recordings, :media],
+ :limit => 100
+ })
+ @tracks.sort{ |a, b| a.position <=> b.position }
end
- @tracks.sort{ |a, b| a.position <=> b.position }
+ @tracks
end
- def self.find mbid
- xml = Nokogiri::XML(self.load(:release, :id => mbid, :inc => [:media])).css('release').first
- self.parse_xml(xml) unless xml.nil?
- end
-
- def self.parse_xml xml
- @release = MusicBrainz::Release.new
- @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')
- @release.format = self.safe_get_value(xml, 'medium-list > medium > format')
- date = xml.css('date').empty? ? '2030-12-31' : xml.css('date').text
- if date.length == 0
- date = '2030-12-31'
- elsif date.length == 4
- date += '-12-31'
- elsif date.length == 7
- date += '-31'
+ class << self
+ def find(mbid)
+ load({
+ :parser => :release_model,
+ :create_model => MusicBrainz::Release
+ }, {
+ :resource => :release,
+ :id => mbid,
+ :inc => [:media]
+ })
end
- date = date.split('-')
- @release.date = Time.utc(date[0], date[1], date[2])
- @release.country = self.safe_get_value(xml, 'country')
- @release
end
end
end