diff --git a/mopidy/frontends/mpd/translator.py b/mopidy/frontends/mpd/translator.py index fc1f031b..e5a55960 100644 --- a/mopidy/frontends/mpd/translator.py +++ b/mopidy/frontends/mpd/translator.py @@ -6,7 +6,7 @@ from mopidy.utils.path import mtime as get_mtime from mopidy.frontends.mpd import protocol from mopidy.utils.path import path_to_uri, uri_to_path, split_path -def track_to_mpd_format(track, position=None, cpid=None, key=False, mtime=False): +def track_to_mpd_format(track, position=None, cpid=None): """ Format track for output to MPD client. @@ -41,10 +41,6 @@ def track_to_mpd_format(track, position=None, cpid=None, key=False, mtime=False) if position is not None and cpid is not None: result.append(('Pos', position)) result.append(('Id', cpid)) - if key and track.uri: - result.insert(0, ('key', os.path.basename(uri_to_path(track.uri)))) - if mtime and track.uri: - result.append(('mtime', get_mtime(uri_to_path(track.uri)))) return result MPD_KEY_ORDER = ''' @@ -127,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)) @@ -139,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 db0dabf4..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 @@ -42,21 +42,6 @@ class TrackMpdFormatTest(unittest.TestCase): self.assert_(('Pos', 1) in result) self.assert_(('Id', 2) in result) - def test_track_to_mpd_format_with_key(self): - track = Track(uri='file:///dir/subdir/file.mp3') - result = translator.track_to_mpd_format(track, key=True) - self.assert_(('key', 'file.mp3') in result) - - def test_track_to_mpd_format_with_key_not_uri_encoded(self): - track = Track(uri='file:///dir/subdir/file%20test.mp3') - result = translator.track_to_mpd_format(track, key=True) - self.assert_(('key', 'file test.mp3') in result) - - def test_track_to_mpd_format_with_mtime(self): - uri = translator.path_to_uri(data_folder('blank.mp3')) - result = translator.track_to_mpd_format(Track(uri=uri), mtime=True) - self.assert_(('mtime', 1234567) in result) - def test_track_to_mpd_format_for_nonempty_track(self): track = Track( uri=u'a uri', @@ -112,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])