34 lines
1.1 KiB
Ruby
34 lines
1.1 KiB
Ruby
# -*- encoding : utf-8 -*-
|
|
module MusicBrainz
|
|
module Bindings
|
|
module Release
|
|
def parse(xml)
|
|
xml = xml.xpath('./release') unless xml.xpath('./release').empty?
|
|
|
|
hash = {
|
|
id: (xml.attribute('id').value rescue nil),
|
|
type: (xml.xpath('./release-group').attribute('type').value rescue nil),
|
|
title: (xml.xpath('./title').text rescue nil),
|
|
status: (xml.xpath('./status').text rescue nil),
|
|
country: (xml.xpath('./country').text rescue nil),
|
|
date: (xml.xpath('./date').text rescue nil),
|
|
asin: (xml.xpath('./asin').text rescue nil),
|
|
barcode: (xml.xpath('./barcode').text rescue nil),
|
|
quality: (xml.xpath('./quality').text rescue nil)
|
|
}
|
|
|
|
formats = (xml.xpath('./medium-list/medium/format') rescue []).map(&:text)
|
|
|
|
hash[:format] = formats.uniq.map do |format|
|
|
format_count = formats.select{|f| f == format}.length
|
|
format_count == 1 ? format : "#{format_count}x#{format}"
|
|
end.join(' + ')
|
|
|
|
hash
|
|
end
|
|
|
|
extend self
|
|
end
|
|
end
|
|
end
|