diff --git a/mopidy/backends/base.py b/mopidy/backends/base.py index 0dfb4e89..657c33dd 100644 --- a/mopidy/backends/base.py +++ b/mopidy/backends/base.py @@ -42,7 +42,7 @@ class BaseBackend(object): pass # Current/single playlist methods - def playlist_changes(self, version): + def playlist_changes_since(self, version): return None def playlist_load(self, name): diff --git a/mopidy/backends/spotify.py b/mopidy/backends/spotify.py index a1828e9e..da5b4342 100644 --- a/mopidy/backends/spotify.py +++ b/mopidy/backends/spotify.py @@ -68,6 +68,12 @@ class SpotifyBackend(BaseBackend): self._x_current_playlist_version = 0 return self._x_current_playlist_version + def _format_playlist(self, playlist): + tracks = [] + for i, track in enumerate(playlist): + tracks.extend(self._format_track(track, i)) + return tracks + def _format_track(self, track, pos=0): result = [] result.append(u'file: %s' % track.get_uri()) @@ -108,18 +114,21 @@ class SpotifyBackend(BaseBackend): def playlists_list(self): return [u'playlist: %s' % decode(p.name) for p in self._playlists] - def playlist_info(self, songpos, start, end): - return self.playlist_changes(songpos) - - def playlist_changes(self, songpos): - tracks = [] - if songpos: - track = self._current_playlist[int(songpos)] - tracks.extend(self._format_track(track, int(songpos))) + def playlist_info(self, songpos=None, start=None, end=None): + if songpos is not None: + result = [self._current_playlist[int(songpos)]] + elif start is not None: + if end is not None: + result = self._current_playlist[int(start):int(end)] + else: + result = self._current_playlist[int(start):] else: - for i, track in enumerate(self._current_playlist): - tracks.extend(self._format_track(track, i)) - return tracks + result = self._current_playlist + return self._format_playlist(result) + + def playlist_changes_since(self, version='0'): + if int(version) < self._current_playlist_version: + return self._format_playlist(self._current_playlist) def stop(self): self.mode = STOP diff --git a/mopidy/handler.py b/mopidy/handler.py index ad65000d..25750c6c 100644 --- a/mopidy/handler.py +++ b/mopidy/handler.py @@ -227,7 +227,7 @@ class MpdHandler(object): @register(r'^plchanges "(?P\d+)"$') def _plchanges(self, version): - return self.backend.playlist_changes(version) + return self.backend.playlist_changes_since(version) @register(r'^plchangesposid (?P\d+)$') def _plchangesposid(self, version):