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