diff --git a/mopidy/backends/spotify/session_manager.py b/mopidy/backends/spotify/session_manager.py index c0592ea7..980ce9f8 100644 --- a/mopidy/backends/spotify/session_manager.py +++ b/mopidy/backends/spotify/session_manager.py @@ -173,12 +173,17 @@ class SpotifySessionManager(process.BaseThread, PyspotifySessionManager): logger.debug('Still getting data; skipped refresh of playlists') return playlists = [] + folders = [] for spotify_playlist in self.session.playlist_container(): + if spotify_playlist.type() == 'folder_start': + folders.append(spotify_playlist) + if spotify_playlist.type() == 'folder_end': + folders.pop() playlists.append(translator.to_mopidy_playlist( - spotify_playlist, + spotify_playlist, folders, bitrate=self.bitrate, username=self.username)) playlists.append(translator.to_mopidy_playlist( - self.session.starred(), + self.session.starred(), None, bitrate=self.bitrate, username=self.username)) playlists = filter(None, playlists) self.backend.playlists.playlists = playlists diff --git a/mopidy/backends/spotify/translator.py b/mopidy/backends/spotify/translator.py index 60961cf8..beec45a3 100644 --- a/mopidy/backends/spotify/translator.py +++ b/mopidy/backends/spotify/translator.py @@ -67,7 +67,7 @@ def to_mopidy_track(spotify_track, bitrate=None): return track_cache[uri] -def to_mopidy_playlist(spotify_playlist, bitrate=None, username=None): +def to_mopidy_playlist(spotify_playlist, spotify_folders, bitrate=None, username=None): if spotify_playlist is None or spotify_playlist.type() != 'playlist': return try: @@ -78,6 +78,9 @@ def to_mopidy_playlist(spotify_playlist, bitrate=None, username=None): if not spotify_playlist.is_loaded(): return Playlist(uri=uri, name='[loading...]') name = spotify_playlist.name() + if spotify_folders is not None: + folder_names = unicode.join('', ['[' + folder.name() + ']' for folder in spotify_folders]) + name = folder_names + ' ' + name tracks = [ to_mopidy_track(spotify_track, bitrate=bitrate) for spotify_track in spotify_playlist