diff --git a/mopidy/backends/spotify/container_manager.py b/mopidy/backends/spotify/container_manager.py new file mode 100644 index 00000000..29360d79 --- /dev/null +++ b/mopidy/backends/spotify/container_manager.py @@ -0,0 +1,16 @@ +import logging + +from spotify.manager import SpotifyContainerManager as PyspotifyContainerManager + +logger = logging.getLogger('mopidy.backends.spotify.container_manager') + +class SpotifyContainerManager(PyspotifyContainerManager): + + def __init__(self, session_manager): + PyspotifyContainerManager.__init__(self) + self.session_manager = session_manager + + def container_loaded(self, container, userdata): + """Callback used by pyspotify.""" + logger.debug(u'Container loaded') + self.session_manager.refresh_stored_playlists() diff --git a/mopidy/backends/spotify/session_manager.py b/mopidy/backends/spotify/session_manager.py index f34283c6..388b29c3 100644 --- a/mopidy/backends/spotify/session_manager.py +++ b/mopidy/backends/spotify/session_manager.py @@ -12,6 +12,7 @@ from mopidy.backends.spotify.translator import SpotifyTranslator from mopidy.models import Playlist from mopidy.gstreamer import GStreamer from mopidy.utils.process import BaseThread +from mopidy.backends.spotify.container_manager import SpotifyContainerManager logger = logging.getLogger('mopidy.backends.spotify.session_manager') @@ -35,6 +36,8 @@ class SpotifySessionManager(BaseThread, PyspotifySessionManager): self.connected = threading.Event() self.session = None + self.container_manager = None + def run_inside_try(self): self.setup() self.connect() @@ -61,6 +64,8 @@ class SpotifySessionManager(BaseThread, PyspotifySessionManager): else: logger.debug(u'Preferring normal bitrate from Spotify') self.session.set_preferred_bitrate(0) + self.container_manager = SpotifyContainerManager(self) + self.container_manager.watch(self.session.playlist_container()) self.connected.set() def logged_out(self, session):