diff --git a/morituri/common/mbngs.py b/morituri/common/mbngs.py index 1fca73e..6f8b460 100644 --- a/morituri/common/mbngs.py +++ b/morituri/common/mbngs.py @@ -114,14 +114,17 @@ class _Credit(list): or track. """ - def joiner(self, attributeGetter): + def joiner(self, attributeGetter, joinString=None): res = [] for item in self: if isinstance(item, dict): res.append(attributeGetter(item)) else: - res.append(item) + if not joinString: + res.append(item) + else: + res.append(joinString) return "".join(res) @@ -132,6 +135,10 @@ class _Credit(list): def getName(self): return self.joiner(lambda i: i.get('artist').get('name', None)) + def getIds(self): + return self.joiner(lambda i: i.get('artist').get('id', None), + joinString=";") + def _getMetadata(releaseShort, release, discid): """ @@ -165,7 +172,7 @@ def _getMetadata(releaseShort, release, discid): albumArtistName = credit.getName() - # FIXME: is there a better way to check for VA + # FIXME: is there a better way to check for VA ? discMD.various = False if discArtist['id'] == VA_ID: discMD.various = True @@ -180,7 +187,7 @@ def _getMetadata(releaseShort, release, discid): discMD.release = release['date'] discMD.mbid = release['id'] - discMD.mbidArtist = discArtist['id'] + discMD.mbidArtist = credit.getIds() discMD.url = 'http://musicbrainz.org/release/' + release['id'] discMD.barcode = release.get('barcode', None) diff --git a/morituri/test/test_common_mbngs.py b/morituri/test/test_common_mbngs.py index 0350429..89b2d2e 100644 --- a/morituri/test/test_common_mbngs.py +++ b/morituri/test/test_common_mbngs.py @@ -65,9 +65,9 @@ class MetadataTestCase(unittest.TestCase): self.assertEquals(metadata.sortName, u'Campbell, Isobel & Lanegan, Mark') self.assertEquals(metadata.release, u'2006-01-30') - # FIXME: this is only Isobel self.assertEquals(metadata.mbidArtist, - u'd51f3a15-12a2-41a0-acfa-33b5eae71164') + u'd51f3a15-12a2-41a0-acfa-33b5eae71164;' + 'a9126556-f555-4920-9617-6e013f8228a7') self.assertEquals(len(metadata.tracks), 12)