Checks for musicbrainz album ID and sets images to a list containing the corresponding URL

This commit is contained in:
Ignasi Fosch 2014-07-27 16:34:28 +02:00
parent 5daa95cae8
commit e9289ca554
3 changed files with 27 additions and 2 deletions

View File

@ -150,6 +150,18 @@ def _date(tags):
return None
def add_musicbrainz_cover_art(track):
if track.album is not None and track.album.musicbrainz_id is not None:
base = "http://coverartarchive.org/release"
images = frozenset(
["{}/{}/front".format(
base,
track.album.musicbrainz_id)])
album = track.album.copy(images=images)
track = track.copy(album=album)
return track
def audio_data_to_track(data):
"""Convert taglist data + our extras to a track."""
tags = data['tags']

View File

@ -118,7 +118,8 @@ class ScanCommand(commands.Command):
relpath = translator.local_track_uri_to_path(uri, media_dir)
file_uri = path.path_to_uri(os.path.join(media_dir, relpath))
data = scanner.scan(file_uri)
track = scan.audio_data_to_track(data).copy(uri=uri)
track = scan.add_musicbrainz_cover_art(
scan.audio_data_to_track(data).copy(uri=uri)).copy(uri=uri)
library.add(track)
logger.debug('Added %s', track.uri)
except exceptions.ScannerError as error:

View File

@ -71,6 +71,11 @@ class TranslatorTest(unittest.TestCase):
actual = scan.audio_data_to_track(self.data)
self.assertEqual(expected, actual)
def check_local(self, expected):
actual = scan.add_musicbrainz_cover_art(
scan.audio_data_to_track(self.data))
self.assertEqual(expected, actual)
def test_track(self):
self.check(self.track)
@ -197,13 +202,20 @@ class TranslatorTest(unittest.TestCase):
def test_missing_album_musicbrainz_id(self):
del self.data['tags']['musicbrainz-albumid']
album = self.track.album.copy(musicbrainz_id=None)
album = self.track.album.copy(musicbrainz_id=None,
images=[])
self.check(self.track.copy(album=album))
def test_multiple_album_musicbrainz_id(self):
self.data['tags']['musicbrainz-albumid'].append('id')
self.check(self.track)
def test_album_musicbrainz_id_cover(self):
album = self.track.album.copy(
images=frozenset(
['http://coverartarchive.org/release/albumid/front']))
self.check_local(self.track.copy(album=album))
def test_missing_album_num_tracks(self):
del self.data['tags']['track-count']
album = self.track.album.copy(num_tracks=None)