Tag cache seems to support directories now
This commit is contained in:
parent
1a6831ab68
commit
94db967672
@ -116,18 +116,25 @@ def tracks_to_tag_cache_format(tracks):
|
||||
('fs_charset', protocol.ENCODING),
|
||||
('info_end',)
|
||||
]
|
||||
_add_to_tag_cache(result, *tracks_to_directory_tree(tracks))
|
||||
return result
|
||||
|
||||
def _add_to_tag_cache(result, folders, files):
|
||||
for name, entry in folders.items():
|
||||
result.append(('begin', name))
|
||||
_add_to_tag_cache(result, *entry)
|
||||
result.append(('end', name))
|
||||
|
||||
result.append(('songList begin',))
|
||||
for track in tracks:
|
||||
for track in files:
|
||||
result.extend(track_to_mpd_format(track, key=True))
|
||||
result.append(('songList end',))
|
||||
|
||||
return result
|
||||
|
||||
def tracks_to_directory_tree(tracks):
|
||||
directories = ({}, [])
|
||||
for track in tracks:
|
||||
folder = os.path.dirname(uri_to_path(track.uri))
|
||||
uri = uri_to_mpd_relative_path(track.uri)
|
||||
folder = os.path.dirname(uri_to_path(uri))
|
||||
current = directories
|
||||
for part in split_path(folder):
|
||||
if part not in current[0]:
|
||||
|
||||
@ -137,6 +137,14 @@ class TracksToTagCacheFormatTest(unittest.TestCase):
|
||||
return result[1:i], result[i+1:]
|
||||
self.fail("Couldn't find songList end in result")
|
||||
|
||||
def consume_directory(self, result):
|
||||
self.assertEqual('begin', result[0][0])
|
||||
directory = result[0][1]
|
||||
for i, row in enumerate(result):
|
||||
if row == ('end', directory):
|
||||
return result[1:i], result[i+1:]
|
||||
self.fail("Couldn't find end %s in result" % directory)
|
||||
|
||||
def test_empty_tag_cache_has_header(self):
|
||||
result = translator.tracks_to_tag_cache_format([])
|
||||
result = self.consume_headers(result)
|
||||
@ -174,6 +182,16 @@ class TracksToTagCacheFormatTest(unittest.TestCase):
|
||||
self.assertEqual(song_list, formated)
|
||||
self.assertEqual(len(result), 0)
|
||||
|
||||
def test_tag_cache_suports_directories(self):
|
||||
track = Track(uri='file:///dir/subdir/folder/song.mp3')
|
||||
formated = translator.track_to_mpd_format(track, key=True)
|
||||
result = translator.tracks_to_tag_cache_format([track])
|
||||
|
||||
result = self.consume_headers(result)
|
||||
directory, result = self.consume_directory(result)
|
||||
song_list, result = self.consume_song_list(directory)
|
||||
|
||||
self.assertEqual(song_list, formated)
|
||||
|
||||
class TracksToDirectoryTreeTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user