class MusicBrainz::Release

Attributes

artists[RW]
labels[RW]
raw[RW]
recordings[RW]
release_groups[RW]
title[RW]

Public Class Methods

new(mbid, query=[]) click to toggle source
# File lib/musicbrainz/release.rb, line 12
def initialize(mbid, query=[])
  acceptable_subqueries=['artists', 'labels', 'recordings', 'release-groups']
  if query.kind_of?(Array)

    query.each do |query|
      unless acceptable_subqueries.include?(query)
        raise "#{query} is an unacceptable Sub-query for #{@@class_name.pluralize.upcase}. Please use one of the following:\n#{acceptable_subqueries}"
      end
    end
  else
    unless acceptable_subqueries.include?(query)
      raise "#{query} is an unacceptable Sub-query for #{@@class_name.pluralize.upcase}. Please use one of the following:\n#{acceptable_subqueries}"
    end
  end


  unless mbid.is_mbid
    raise "Unacceptable MBID for #{@@class_name.pluralize.upcase}. Check to make sure you have the correct mbid."
  end

  @mbid=mbid
  if query.present? && query!=[]
    @query=query.join("+") if query.kind_of?(Array)
    @query=query if query.kind_of?(String)
  else
    return false
  end
  @method='release'
  get_release(@method, @mbid, @query)
end

Public Instance Methods

get_release(method, mbid, query) click to toggle source
# File lib/musicbrainz/release.rb, line 43
def get_release(method, mbid, query)
  @raw=self.class.get(method, mbid, query)

  subquery=query.split("+")
  if subquery.kind_of?(Array)
    subquery.each do |q|
      get_subquery(q)
    end
  else
    get_subquery(subquery)
  end

end
get_subquery(subquery) click to toggle source

TODO Move to Base class, and use it in each subclass. Expand for each usage as needed

# File lib/musicbrainz/release.rb, line 57
def get_subquery(subquery)
  subquery=subquery.gsub("-", "_")
  subquery_s=subquery.singularize
  if subquery_s=='artist'
    list_array=@raw['metadata']["#{@@class_name}"]["#{subquery_s}_credit"]['name_credit']["#{subquery_s}"]
  elsif subquery_s=='label'
    list_array=@raw['metadata']["#{@@class_name}"]["#{subquery_s}_info_list"]["#{subquery_s}_info"]["#{subquery_s}"]
  elsif subquery_s=='release_group'
    list_array=@raw['metadata']["#{@@class_name}"]["#{subquery_s}"]
  elsif subquery_s=='recording'
    list_array=@raw['metadata']["#{@@class_name}"]['medium_list']['medium']['track_list']['track']
  end
  if list_array.kind_of?(Array)
    sub=Array.new
    list_array.each do |r|
      sub<<OpenStruct.new(r)
    end
  else
    sub=OpenStruct.new(list_array)
  end

  @artists=sub if subquery=='artists'
  @labels=sub if subquery=='labels'
  @recordings=sub if subquery=='recordings'
  @release_groups=sub if subquery=='release_groups'
end
inspect() click to toggle source

TODO Expand the inspection, and add to base

# File lib/musicbrainz/release.rb, line 84
def inspect
  "#{@@class_name.upcase} identified by:#{@mbid}, Title:#{@title} }"
end