diff --git a/mopidy/frontends/mpd/translator.py b/mopidy/frontends/mpd/translator.py index d470d8e3..e5a55960 100644 --- a/mopidy/frontends/mpd/translator.py +++ b/mopidy/frontends/mpd/translator.py @@ -123,9 +123,11 @@ def tracks_to_tag_cache_format(tracks): return result def _add_to_tag_cache(result, folders, files): + music_folder = settings.LOCAL_MUSIC_PATH + regexp = '^' + re.escape(music_folder).rstrip('/') + '/?' + for path, entry in folders.items(): name = os.path.split(path)[1] - music_folder = settings.LOCAL_MUSIC_PATH mtime = get_mtime(os.path.join(music_folder, path)) result.append(('directory', path)) result.append(('mtime', mtime)) @@ -135,8 +137,11 @@ def _add_to_tag_cache(result, folders, files): result.append(('songList begin',)) for track in files: - track_result = track_to_mpd_format(track, key=True, mtime=True) - track_result = order_mpd_track_info(track_result) + track_result = dict(track_to_mpd_format(track)) + path = uri_to_path(track_result['file']) + track_result['mtime'] = get_mtime(path) + track_result['file'] = re.sub(regexp, '', path) + track_result = order_mpd_track_info(track_result.items()) result.extend(track_result) result.append(('songList end',)) diff --git a/tests/frontends/mpd/serializer_test.py b/tests/frontends/mpd/serializer_test.py index 1336dabe..6fe50657 100644 --- a/tests/frontends/mpd/serializer_test.py +++ b/tests/frontends/mpd/serializer_test.py @@ -3,7 +3,7 @@ import os import unittest from mopidy import settings -from mopidy.utils.path import mtime +from mopidy.utils.path import mtime, uri_to_path from mopidy.frontends.mpd import translator, protocol from mopidy.models import Album, Artist, Playlist, Track @@ -97,8 +97,12 @@ class TracksToTagCacheFormatTest(unittest.TestCase): mtime.undo_fake() def translate(self, track): - result = translator.track_to_mpd_format(track, key=True, mtime=True) - return translator.order_mpd_track_info(result) + folder = settings.LOCAL_MUSIC_PATH + result = dict(translator.track_to_mpd_format(track)) + result['file'] = uri_to_path(result['file']) + result['file'] = result['file'][len(folder)+1:] + result['mtime'] = mtime('') + return translator.order_mpd_track_info(result.items()) def consume_headers(self, result): self.assertEqual(('info_begin',), result[0])