Class: MusicBrainzReleaseGroup

Inherits:
Object
  • Object
show all
Defined in:
lib/models/music_brainz_release_group.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#first_release_dateObject

Returns the value of attribute first_release_date.



2
3
4
# File 'lib/models/music_brainz_release_group.rb', line 2

def first_release_date
  @first_release_date
end

#idObject

Returns the value of attribute id.



2
3
4
# File 'lib/models/music_brainz_release_group.rb', line 2

def id
  @id
end

#titleObject

Returns the value of attribute title.



2
3
4
# File 'lib/models/music_brainz_release_group.rb', line 2

def title
  @title
end

#typeObject

Returns the value of attribute type.



2
3
4
# File 'lib/models/music_brainz_release_group.rb', line 2

def type
  @type
end

Class Method Details

.find(mbid) ⇒ Object



15
16
17
18
# File 'lib/models/music_brainz_release_group.rb', line 15

def self.find mbid
  xml = Nokogiri::XML(open('http://musicbrainz.org/ws/2/release-group/' + mbid)).css('release-group').first
  self.parse_xml(xml) unless xml.nil?
end

.parse_xml(xml) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/models/music_brainz_release_group.rb', line 20

def self.parse_xml xml
  @release_group = MusicBrainzReleaseGroup.new
  @release_group.id = xml.attr('id')
  @release_group.type = xml.attr('type')
  @release_group.title = xml.css('title').text
  date = xml.css('first-release-date').text
  unless date.nil? or date.empty?
    if date.length == 4
      date += '-01-01'
    elsif date.length == 7
      date += '-01'
    end
    date = Time.parse(date)
  end
  @release_group.first_release_date = date
  @release_group
end

Instance Method Details

#releasesObject



5
6
7
8
9
10
11
12
13
# File 'lib/models/music_brainz_release_group.rb', line 5

def releases
  if @releases.nil? and not self.id.nil?
    @releases = []
    Nokogiri::XML(open('http://musicbrainz.org/ws/2/release/?release-group=' + self.id)).css('release').each do |r|
      @releases << MusicBrainzRelease.parse_xml(r)
    end
  end
  @releases
end