Simplify tag cache return values

This commit is contained in:
Thomas Adamcik 2010-05-01 21:28:56 +02:00
parent 590aea4b89
commit d757d6a0ec
3 changed files with 10 additions and 27 deletions

View File

@ -188,7 +188,7 @@ class GStreamerLibraryController(BaseLibraryController):
self.refresh() self.refresh()
def refresh(self, uri=None): def refresh(self, uri=None):
tracks, artists, albums = parse_mpd_tag_cache(settings.TAG_CACHE, tracks = parse_mpd_tag_cache(settings.TAG_CACHE,
settings.MUSIC_FOLDER) settings.MUSIC_FOLDER)
for track in tracks: for track in tracks:

View File

@ -151,15 +151,13 @@ def parse_mpd_tag_cache(tag_cache, music_dir=''):
Converts a MPD tag_cache into a lists of tracks, artists and albums. Converts a MPD tag_cache into a lists of tracks, artists and albums.
""" """
tracks = set() tracks = set()
artists = set()
albums = set()
try: try:
with open(tag_cache) as library: with open(tag_cache) as library:
contents = library.read() contents = library.read()
except IOError, e: except IOError, e:
logger.error('Could not open tag cache: %s', e) logger.error('Could not open tag cache: %s', e)
return tracks, artists, albums return tracks
current = {} current = {}
state = None state = None
@ -177,16 +175,16 @@ def parse_mpd_tag_cache(tag_cache, music_dir=''):
key, value = line.split(': ', 1) key, value = line.split(': ', 1)
if key == 'key': if key == 'key':
_convert_mpd_data(current, tracks, artists, albums, music_dir) _convert_mpd_data(current, tracks, music_dir)
current.clear() current.clear()
current[key.lower()] = value current[key.lower()] = value
_convert_mpd_data(current, tracks, artists, albums, music_dir) _convert_mpd_data(current, tracks, music_dir)
return tracks, artists, albums return tracks
def _convert_mpd_data(data, tracks, artists, albums, music_dir): def _convert_mpd_data(data, tracks, music_dir):
if not data: if not data:
return return
@ -199,14 +197,12 @@ def _convert_mpd_data(data, tracks, artists, albums, music_dir):
if 'artist' in data: if 'artist' in data:
artist = Artist(name=data['artist']) artist = Artist(name=data['artist'])
artists.add(artist)
track_kwargs['artists'] = [artist] track_kwargs['artists'] = [artist]
album_kwargs['artists'] = [artist] album_kwargs['artists'] = [artist]
if 'album' in data: if 'album' in data:
album_kwargs['name'] = data['album'] album_kwargs['name'] = data['album']
album = Album(**album_kwargs) album = Album(**album_kwargs)
albums.add(album)
track_kwargs['album'] = album track_kwargs['album'] = album
if 'title' in data: if 'title' in data:

View File

@ -151,27 +151,19 @@ generate_track('subdir1/subsubdir/song9.mp3')
class MPDTagCacheToTracksTest(unittest.TestCase): class MPDTagCacheToTracksTest(unittest.TestCase):
def test_emtpy_cache(self): def test_emtpy_cache(self):
tracks, artists, albums = parse_mpd_tag_cache(data_folder('empty_tag_cache'), tracks = parse_mpd_tag_cache(data_folder('empty_tag_cache'),
data_folder('')) data_folder(''))
self.assertEqual(set(), tracks) self.assertEqual(set(), tracks)
self.assertEqual(set(), artists)
self.assertEqual(set(), albums)
def test_simple_cache(self): def test_simple_cache(self):
tracks, artists, albums = parse_mpd_tag_cache(data_folder('simple_tag_cache'), tracks = parse_mpd_tag_cache(data_folder('simple_tag_cache'),
data_folder('')) data_folder(''))
self.assertEqual(expected_tracks[0], list(tracks)[0]) self.assertEqual(expected_tracks[0], list(tracks)[0])
self.assertEqual(set(expected_artists), artists)
self.assertEqual(set(expected_albums), albums)
def test_advanced_cache(self): def test_advanced_cache(self):
tracks, artists, albums = parse_mpd_tag_cache(data_folder('advanced_tag_cache'), tracks = parse_mpd_tag_cache(data_folder('advanced_tag_cache'),
data_folder('')) data_folder(''))
self.assertEqual(set(expected_tracks), tracks) self.assertEqual(set(expected_tracks), tracks)
self.assertEqual(set(expected_artists), artists)
self.assertEqual(set(expected_albums), albums)
def test_unicode_cache(self): def test_unicode_cache(self):
raise SkipTest raise SkipTest
@ -181,12 +173,7 @@ class MPDTagCacheToTracksTest(unittest.TestCase):
raise SkipTest raise SkipTest
def test_cache_with_blank_track_info(self): def test_cache_with_blank_track_info(self):
tracks, artists, albums = parse_mpd_tag_cache(data_folder('blank_tag_cache'), tracks = parse_mpd_tag_cache(data_folder('blank_tag_cache'),
data_folder('')) data_folder(''))
uri = path_to_uri(data_folder('song1.mp3')) uri = path_to_uri(data_folder('song1.mp3'))
self.assertEqual(set([Track(uri=uri, length=4000)]), tracks) self.assertEqual(set([Track(uri=uri, length=4000)]), tracks)
self.assertEqual(set(), artists)
self.assertEqual(set(), albums)