Fix artist name (#156)
* Use artist-credit->name Use artist-credit->name, if it exists. Otherwise use artist-credit->artist->name. * Add test case * Fix for PEP8 * transform comment to docstring * reject 'recording artist name' in favour of 'release artist name' * reject 'recording artist name' in favour of 'release artist name'
This commit is contained in:
@@ -135,7 +135,8 @@ class _Credit(list):
|
||||
return self.joiner(lambda i: i.get('artist').get('sort-name', None))
|
||||
|
||||
def getName(self):
|
||||
return self.joiner(lambda i: i.get('artist').get('name', None))
|
||||
return self.joiner(lambda i: i.get('name',
|
||||
i.get('artist').get('name', None)))
|
||||
|
||||
def getIds(self):
|
||||
return self.joiner(lambda i: i.get('artist').get('id', None),
|
||||
@@ -214,7 +215,9 @@ def _getMetadata(releaseShort, release, discid, country=None):
|
||||
discMD.title = title
|
||||
for t in medium['track-list']:
|
||||
track = TrackMetadata()
|
||||
trackCredit = _Credit(t['recording']['artist-credit'])
|
||||
trackCredit = _Credit(
|
||||
t.get('artist-credit', t['recording']['artist-credit']
|
||||
))
|
||||
if len(trackCredit) > 1:
|
||||
logger.debug('artist-credit more than 1: %r',
|
||||
trackCredit)
|
||||
|
||||
@@ -114,3 +114,81 @@ class MetadataTestCase(unittest.TestCase):
|
||||
';ec07a209-55ff-4084-bc41-9d4d1764e075'
|
||||
';f626b92e-07b1-4a19-ad13-c09d690db66c'
|
||||
)
|
||||
|
||||
def testNorthernGateway(self):
|
||||
"""
|
||||
check the received metadata for artists tagged with [unknown]
|
||||
and artists tagged with an alias in MusicBrainz
|
||||
|
||||
see https://github.com/JoeLametta/whipper/issues/155
|
||||
"""
|
||||
filename = 'whipper.release.38b05c7d-65fe-4dc0-9c10-33a391b86703.json'
|
||||
path = os.path.join(os.path.dirname(__file__), filename)
|
||||
handle = open(path, "rb")
|
||||
response = json.loads(handle.read())
|
||||
handle.close()
|
||||
discid = "rzGHHqfPWIq1GsOLhhlBcZuqo.I-"
|
||||
|
||||
metadata = mbngs._getMetadata({}, response['release'], discid)
|
||||
self.assertEquals(metadata.artist, u'Various Artists')
|
||||
self.assertEquals(metadata.release, u'2010')
|
||||
self.assertEquals(metadata.mbidArtist,
|
||||
u'89ad4ac3-39f7-470e-963a-56509c546377')
|
||||
|
||||
self.assertEquals(len(metadata.tracks), 10)
|
||||
|
||||
track2 = metadata.tracks[1]
|
||||
|
||||
self.assertEquals(track2.artist, u'Twisted Reaction feat. Danielle')
|
||||
self.assertEquals(track2.sortName,
|
||||
u'Twisted Reaction feat. [unknown]')
|
||||
self.assertEquals(track2.mbidArtist,
|
||||
u'4f69f624-73ea-4a16-b822-bd2ca58032bf'
|
||||
';125ec42a-7229-4250-afc5-e057484327fe'
|
||||
)
|
||||
|
||||
track4 = metadata.tracks[3]
|
||||
|
||||
self.assertEquals(track4.artist, u'BioGenesis')
|
||||
self.assertEquals(track4.sortName,
|
||||
u'Bio Genesis')
|
||||
self.assertEquals(track4.mbidArtist,
|
||||
u'dd61b86c-c015-43e1-9a28-58fceb0975c8'
|
||||
)
|
||||
|
||||
def testNenaAndKimWildSingle(self):
|
||||
"""
|
||||
check the received metadata for artists that differ between
|
||||
named on release and named in recording
|
||||
"""
|
||||
filename = 'whipper.release.f484a9fc-db21-4106-9408-bcd105c90047.json'
|
||||
path = os.path.join(os.path.dirname(__file__), filename)
|
||||
handle = open(path, "rb")
|
||||
response = json.loads(handle.read())
|
||||
handle.close()
|
||||
discid = "X2c2IQ5vUy5x6Jh7Xi_DGHtA1X8-"
|
||||
|
||||
metadata = mbngs._getMetadata({}, response['release'], discid)
|
||||
self.assertEquals(metadata.artist, u'Nena & Kim Wilde')
|
||||
self.assertEquals(metadata.release, u'2003-05-19')
|
||||
self.assertEquals(metadata.mbidArtist,
|
||||
u'38bfaa7f-ee98-48cb-acd0-946d7aeecd76'
|
||||
';4b462375-c508-432a-8c88-ceeec38b16ae')
|
||||
|
||||
self.assertEquals(len(metadata.tracks), 4)
|
||||
|
||||
track1 = metadata.tracks[0]
|
||||
|
||||
self.assertEquals(track1.artist, u'Nena & Kim Wilde')
|
||||
self.assertEquals(track1.sortName, u'Nena & Wilde, Kim')
|
||||
self.assertEquals(track1.mbidArtist,
|
||||
u'38bfaa7f-ee98-48cb-acd0-946d7aeecd76'
|
||||
';4b462375-c508-432a-8c88-ceeec38b16ae')
|
||||
|
||||
track2 = metadata.tracks[1]
|
||||
|
||||
self.assertEquals(track2.artist, u'Nena & Kim Wilde')
|
||||
self.assertEquals(track2.sortName, u'Nena & Wilde, Kim')
|
||||
self.assertEquals(track2.mbidArtist,
|
||||
u'38bfaa7f-ee98-48cb-acd0-946d7aeecd76'
|
||||
';4b462375-c508-432a-8c88-ceeec38b16ae')
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user