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:
|
if albumartist_kwargs:
|
||||||
album_kwargs['artists'] = [Artist(**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['uri'] = data['uri']
|
||||||
track_kwargs['last_modified'] = int(data['mtime'])
|
track_kwargs['last_modified'] = int(data['mtime'])
|
||||||
track_kwargs['length'] = data[gst.TAG_DURATION] // gst.MSECOND
|
track_kwargs['length'] = data[gst.TAG_DURATION] // gst.MSECOND
|
||||||
track_kwargs['album'] = Album(**album_kwargs)
|
track_kwargs['album'] = Album(**album_kwargs)
|
||||||
track_kwargs['artists'] = [Artist(**artist_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)
|
return Track(**track_kwargs)
|
||||||
|
|||||||
@ -55,14 +55,26 @@ class TranslatorTest(unittest.TestCase):
|
|||||||
'musicbrainz_id': 'mbartistid',
|
'musicbrainz_id': 'mbartistid',
|
||||||
}
|
}
|
||||||
|
|
||||||
self.composer = {
|
self.composer_single = {
|
||||||
'name': 'composer',
|
'name': 'composer',
|
||||||
}
|
}
|
||||||
|
|
||||||
self.performer = {
|
self.composer_multiple = {
|
||||||
|
'name': ['composer1', 'composer2'],
|
||||||
|
}
|
||||||
|
|
||||||
|
self.composer = self.composer_single
|
||||||
|
|
||||||
|
self.performer_single = {
|
||||||
'name': 'performer',
|
'name': 'performer',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.performer_multiple = {
|
||||||
|
'name': ['performer1', 'performer2'],
|
||||||
|
}
|
||||||
|
|
||||||
|
self.performer = self.performer_single
|
||||||
|
|
||||||
self.albumartist = {
|
self.albumartist = {
|
||||||
'name': 'albumartistname',
|
'name': 'albumartistname',
|
||||||
'musicbrainz_id': 'mbalbumartistid',
|
'musicbrainz_id': 'mbalbumartistid',
|
||||||
@ -86,10 +98,23 @@ class TranslatorTest(unittest.TestCase):
|
|||||||
self.album['artists'] = [Artist(**self.albumartist)]
|
self.album['artists'] = [Artist(**self.albumartist)]
|
||||||
self.track['album'] = Album(**self.album)
|
self.track['album'] = Album(**self.album)
|
||||||
self.track['artists'] = [Artist(**self.artist)]
|
self.track['artists'] = [Artist(**self.artist)]
|
||||||
if self.composer:
|
|
||||||
self.track['composers'] = [Artist(**self.composer)]
|
if ('name' in self.composer
|
||||||
if self.performer:
|
and not isinstance(self.composer['name'], basestring)):
|
||||||
self.track['performers'] = [Artist(**self.performer)]
|
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)
|
return Track(**self.track)
|
||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
@ -140,6 +165,16 @@ class TranslatorTest(unittest.TestCase):
|
|||||||
del self.composer['name']
|
del self.composer['name']
|
||||||
self.check()
|
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):
|
def test_missing_performer_name(self):
|
||||||
del self.data['performer']
|
del self.data['performer']
|
||||||
del self.performer['name']
|
del self.performer['name']
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user