From a5cd47d44c9c31a74c917f35156a446294e2edba Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Sun, 1 Apr 2012 20:42:46 +0000 Subject: [PATCH] * morituri/common/musicbrainzngs.py: Handle multiple artists correctly. --- ChangeLog | 5 +++++ morituri/common/musicbrainzngs.py | 35 ++++++++++++++++++------------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7be3d48..62eee70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-04-01 Thomas Vander Stichele + + * morituri/common/musicbrainzngs.py: + Handle multiple artists correctly. + 2012-04-01 Thomas Vander Stichele patch by: Christophe Fergeau 1: - log.warning('musicbrainzngs', 'artist-credit more than 1: %r', - release['artist-credit']) - credit = release['artist-credit'] artist = credit[0]['artist'] - albumArtistName = credit[0].get( - 'name', credit[0]['artist'].get('name', None)) + + if len(credit) > 1: + log.debug('musicbrainzngs', 'artist-credit more than 1: %r', credit) + + for i, c in enumerate(credit): + if isinstance(c, dict): + credit[i] = c.get( + 'name', c['artist'].get('name', None)) + + albumArtistName = "".join(credit) # FIXME: is there a better way to check for VA metadata.various = False @@ -150,15 +154,18 @@ def _getMetadata(release, discid): metadata.title = title for t in medium['track-list']: track = TrackMetadata() - if len(t['recording']['artist-credit']) > 1: - # FIXME: do something sensible for multiple artists - log.warning('musicbrainzngs', 'artist-credit more than 1: %r', - t['recording']['artist-credit']) - - credit = t['recording']['artist-credit'] - trackArtistName = credit[0].get( - 'name', credit[0]['artist'].get('name', None)) + if len(credit) > 1: + log.debug('musicbrainzngs', + 'artist-credit more than 1: %r', credit) + # credit is of the form [dict, str, dict, ... ] + for i, c in enumerate(credit): + if isinstance(c, dict): + credit[i] = c.get( + 'name', c['artist'].get('name', None)) + + + trackArtistName = "".join(credit) if not artist: track.artist = metadata.artist