Add musicbrainz support to tag_cache parsing
This commit is contained in:
parent
8d30b745d2
commit
326ade05cc
@ -96,25 +96,31 @@ def _convert_mpd_data(data, tracks, music_dir):
|
||||
|
||||
track_kwargs = {}
|
||||
album_kwargs = {}
|
||||
artist_kwargs = {}
|
||||
|
||||
if 'track' in data:
|
||||
album_kwargs['num_tracks'] = int(data['track'].split('/')[1])
|
||||
track_kwargs['track_no'] = int(data['track'].split('/')[0])
|
||||
|
||||
if 'artist' in data:
|
||||
artist = Artist(name=data['artist'])
|
||||
track_kwargs['artists'] = [artist]
|
||||
album_kwargs['artists'] = [artist]
|
||||
artist_kwargs['name'] = data['artist']
|
||||
|
||||
# FIXME Newer mpd tag caches support albumartist names
|
||||
if 'album' in data:
|
||||
album_kwargs['name'] = data['album']
|
||||
album = Album(**album_kwargs)
|
||||
track_kwargs['album'] = album
|
||||
|
||||
if 'title' in data:
|
||||
track_kwargs['name'] = data['title']
|
||||
|
||||
if 'musicbrainz_trackid' in data:
|
||||
track_kwargs['musicbrainz_id'] = data['musicbrainz_trackid']
|
||||
|
||||
if 'musicbrainz_albumid' in data:
|
||||
album_kwargs['musicbrainz_id'] = data['musicbrainz_albumid']
|
||||
|
||||
if 'musicbrainz_artistid' in data:
|
||||
artist_kwargs['musicbrainz_id'] = data['musicbrainz_artistid']
|
||||
|
||||
# FIXME what if file is uri - generated tag cache needs to allways make
|
||||
# LOCAL_MUSIC_PATH relative paths or this code must handle uris
|
||||
if data['file'][0] == '/':
|
||||
@ -122,7 +128,14 @@ def _convert_mpd_data(data, tracks, music_dir):
|
||||
else:
|
||||
path = data['file']
|
||||
|
||||
# FIXME newer mpd tag caches provide musicbrainz ids
|
||||
if artist_kwargs:
|
||||
artist = Artist(**artist_kwargs)
|
||||
album_kwargs['artists'] = [artist]
|
||||
track_kwargs['artists'] = [artist]
|
||||
|
||||
if album_kwargs:
|
||||
album = Album(**album_kwargs)
|
||||
track_kwargs['album'] = album
|
||||
|
||||
track_kwargs['uri'] = path_to_uri(music_dir, path)
|
||||
track_kwargs['length'] = int(data.get('time', 0)) * 1000
|
||||
|
||||
@ -138,4 +138,15 @@ class MPDTagCacheToTracksTest(unittest.TestCase):
|
||||
self.assertEqual(set([Track(uri=uri, length=4000)]), tracks)
|
||||
|
||||
def test_musicbrainz_tagcache(self):
|
||||
tracks = parse_mpd_tag_cache(data_folder('musicbrainz_tag_cache'),
|
||||
data_folder(''))
|
||||
artist = list(expected_tracks[0].artists)[0].copy(
|
||||
musicbrainz_id='7364dea6-ca9a-48e3-be01-b44ad0d19897')
|
||||
album = expected_tracks[0].album.copy(artists=[artist],
|
||||
musicbrainz_id='cb5f1603-d314-4c9c-91e5-e295cfb125d2')
|
||||
track = expected_tracks[0].copy(artists=[artist], album=album,
|
||||
musicbrainz_id='90488461-8c1f-4a4e-826b-4c6dc70801f0')
|
||||
self.assertEqual(track, list(tracks)[0])
|
||||
|
||||
def test_albumartist_tag_cache(self):
|
||||
raise SkipTest
|
||||
|
||||
Loading…
Reference in New Issue
Block a user