Updated code with new multiple artist handling and added tests

This commit is contained in:
Lasse Bigum 2013-11-09 03:01:53 +01:00
parent 8b7621c3e3
commit 2bd1f043ce
2 changed files with 57 additions and 12 deletions

View File

@ -146,16 +146,26 @@ def audio_data_to_track(data):
if albumartist_kwargs:
album_kwargs['artists'] = [Artist(**albumartist_kwargs)]
if composer_kwargs:
track_kwargs['composers'] = [Artist(**composer_kwargs)]
if performer_kwargs:
track_kwargs['performers'] = [Artist(**performer_kwargs)]
track_kwargs['uri'] = data['uri']
track_kwargs['last_modified'] = int(data['mtime'])
track_kwargs['length'] = data[gst.TAG_DURATION] // gst.MSECOND
track_kwargs['album'] = Album(**album_kwargs)
track_kwargs['artists'] = [Artist(**artist_kwargs)]
if ('name' in composer_kwargs
and not isinstance(composer_kwargs['name'], basestring)):
track_kwargs['composers'] = [Artist(name=artist)
for artist in composer_kwargs['name']]
else:
track_kwargs['composers'] = \
[Artist(**composer_kwargs)] if composer_kwargs else ''
if ('name' in performer_kwargs
and not isinstance(performer_kwargs['name'], basestring)):
track_kwargs['performers'] = [Artist(name=artist)
for artist in performer_kwargs['name']]
else:
track_kwargs['performers'] = \
[Artist(**performer_kwargs)] if performer_kwargs else ''
return Track(**track_kwargs)

View File

@ -55,14 +55,26 @@ class TranslatorTest(unittest.TestCase):
'musicbrainz_id': 'mbartistid',
}
self.composer = {
self.composer_single = {
'name': 'composer',
}
self.performer = {
self.composer_multiple = {
'name': ['composer1', 'composer2'],
}
self.composer = self.composer_single
self.performer_single = {
'name': 'performer',
}
self.performer_multiple = {
'name': ['performer1', 'performer2'],
}
self.performer = self.performer_single
self.albumartist = {
'name': 'albumartistname',
'musicbrainz_id': 'mbalbumartistid',
@ -86,10 +98,23 @@ class TranslatorTest(unittest.TestCase):
self.album['artists'] = [Artist(**self.albumartist)]
self.track['album'] = Album(**self.album)
self.track['artists'] = [Artist(**self.artist)]
if self.composer:
self.track['composers'] = [Artist(**self.composer)]
if self.performer:
self.track['performers'] = [Artist(**self.performer)]
if ('name' in self.composer
and not isinstance(self.composer['name'], basestring)):
self.track['composers'] = [Artist(name=artist)
for artist in self.composer['name']]
else:
self.track['composers'] = [Artist(**self.composer)] \
if self.composer else ''
if ('name' in self.performer
and not isinstance(self.performer['name'], basestring)):
self.track['performers'] = [Artist(name=artist)
for artist in self.performer['name']]
else:
self.track['performers'] = [Artist(**self.performer)] \
if self.performer else ''
return Track(**self.track)
def check(self):
@ -140,6 +165,16 @@ class TranslatorTest(unittest.TestCase):
del self.composer['name']
self.check()
def test_multiple_track_composers(self):
self.data['composer'] = ['composer1', 'composer2']
self.composer = self.composer_multiple
self.check()
def test_multiple_track_performers(self):
self.data['performer'] = ['performer1', 'performer2']
self.performer = self.performer_multiple
self.check()
def test_missing_performer_name(self):
del self.data['performer']
del self.performer['name']