diff --git a/lib/musicbrainz.rb b/lib/musicbrainz.rb index 9a01624..cbc3049 100644 --- a/lib/musicbrainz.rb +++ b/lib/musicbrainz.rb @@ -24,6 +24,7 @@ require "musicbrainz/models/track" require "musicbrainz/bindings/artist" require "musicbrainz/bindings/artist_search" require "musicbrainz/bindings/artist_release_groups" +require "musicbrainz/bindings/discid_releases" require "musicbrainz/bindings/relations" require "musicbrainz/bindings/release_group" require "musicbrainz/bindings/release_group_search" diff --git a/lib/musicbrainz/bindings/discid_releases.rb b/lib/musicbrainz/bindings/discid_releases.rb new file mode 100644 index 0000000..1210d32 --- /dev/null +++ b/lib/musicbrainz/bindings/discid_releases.rb @@ -0,0 +1,13 @@ +module MusicBrainz + module Bindings + module DiscidReleases + def parse(xml) + xml.xpath('./disc/release-list/release').map do |xml| + MusicBrainz::Bindings::Release.parse(xml) + end + end + + extend self + end + end +end diff --git a/lib/musicbrainz/models/release.rb b/lib/musicbrainz/models/release.rb index 0efc237..9f49133 100644 --- a/lib/musicbrainz/models/release.rb +++ b/lib/musicbrainz/models/release.rb @@ -28,8 +28,8 @@ module MusicBrainz end def find_by_discid(id) - client.load(:discid, { id: id, inc: [:media, :release_groups] }, { - binding: :release_group_releases, + client.load(:discid, { id: id }, { + binding: :discid_releases, create_models: :release }) end