Updated code with new multiple artist handling and added tests
This commit is contained in:
parent
8b7621c3e3
commit
2bd1f043ce
@ -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)
|
||||
|
||||
@ -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']
|
||||
|
||||
Loading…
Reference in New Issue
Block a user