From 211b20c49660d2e04783db346b3ff3a13f40fd56 Mon Sep 17 00:00:00 2001 From: Thomas Refis Date: Mon, 1 Apr 2013 17:56:05 +0200 Subject: [PATCH 1/2] Adds 'Starred' playlist to the playlist catalog Related to issue #326 --- mopidy/backends/spotify/session_manager.py | 1 + mopidy/backends/spotify/translator.py | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/mopidy/backends/spotify/session_manager.py b/mopidy/backends/spotify/session_manager.py index 6f386aae..cedff8d1 100644 --- a/mopidy/backends/spotify/session_manager.py +++ b/mopidy/backends/spotify/session_manager.py @@ -169,6 +169,7 @@ class SpotifySessionManager(process.BaseThread, PyspotifySessionManager): return playlists = map( translator.to_mopidy_playlist, self.session.playlist_container()) + playlists.append(translator.to_mopidy_playlist(self.session.starred())) playlists = filter(None, playlists) self.backend.playlists.playlists = playlists logger.info('Loaded %d Spotify playlist(s)', len(playlists)) diff --git a/mopidy/backends/spotify/translator.py b/mopidy/backends/spotify/translator.py index ba5f85da..cec15200 100644 --- a/mopidy/backends/spotify/translator.py +++ b/mopidy/backends/spotify/translator.py @@ -72,9 +72,7 @@ def to_mopidy_playlist(spotify_playlist): return Playlist(uri=uri, name='[loading...]') name = spotify_playlist.name() if not name: - # Other user's "starred" playlists isn't handled properly by pyspotify - # See https://github.com/mopidy/pyspotify/issues/81 - return + name = "Starred" if spotify_playlist.owner().canonical_name() != settings.SPOTIFY_USERNAME: name += ' by ' + spotify_playlist.owner().canonical_name() return Playlist( From 5982d1059c0a73b26101872cf252c6369ad40ba5 Mon Sep 17 00:00:00 2001 From: Thomas Refis Date: Mon, 1 Apr 2013 18:23:06 +0200 Subject: [PATCH 2/2] Reverse the list of tracks in the Starred playlist. As it is in reverse order from the "official" spotify client. --- mopidy/backends/spotify/translator.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mopidy/backends/spotify/translator.py b/mopidy/backends/spotify/translator.py index cec15200..cffb4022 100644 --- a/mopidy/backends/spotify/translator.py +++ b/mopidy/backends/spotify/translator.py @@ -71,14 +71,19 @@ def to_mopidy_playlist(spotify_playlist): if not spotify_playlist.is_loaded(): return Playlist(uri=uri, name='[loading...]') name = spotify_playlist.name() + tracks=[ + to_mopidy_track(spotify_track) + for spotify_track in spotify_playlist + if not spotify_track.is_local() + ] if not name: name = "Starred" + # Tracks in the Starred playlist are in reverse order from the official + # client. + tracks.reverse() if spotify_playlist.owner().canonical_name() != settings.SPOTIFY_USERNAME: name += ' by ' + spotify_playlist.owner().canonical_name() return Playlist( uri=uri, name=name, - tracks=[ - to_mopidy_track(spotify_track) - for spotify_track in spotify_playlist - if not spotify_track.is_local()]) + tracks=tracks)