From 6d60d76cbe3496674aea442d90b8c1c14e3a5168 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 14 Mar 2010 23:31:26 +0100 Subject: [PATCH] despotify: Add DespotifySessionManager with end_of_track callback --- mopidy/backends/despotify.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/mopidy/backends/despotify.py b/mopidy/backends/despotify.py index 14616bae..5bd3552b 100644 --- a/mopidy/backends/despotify.py +++ b/mopidy/backends/despotify.py @@ -51,7 +51,7 @@ class DespotifyBackend(BaseBackend): def _connect(self): logger.info(u'Connecting to Spotify') - return spytify.Spytify( + return DespotifySessionManager( settings.SPOTIFY_USERNAME.encode(ENCODING), settings.SPOTIFY_PASSWORD.encode(ENCODING)) @@ -154,3 +154,19 @@ class DespotifyTranslator(object): name=spotify_playlist.name.decode(ENCODING), tracks=[self.to_mopidy_track(t) for t in spotify_playlist.tracks], ) + + +class DespotifySessionManager(spytify.Spytify): + DESPOTIFY_NEW_TRACK = 1 + DESPOTIFY_TIME_TELL = 2 + DESPOTIFY_END_OF_PLAYLIST = 3 + DESPOTIFY_TRACK_PLAY_ERROR = 4 + + def __init__(self, *args, **kwargs): + kwargs['callback'] = self.callback + super(DespotifySessionManager, self).__init__(*args, **kwargs) + + def callback(self, signal, data): + if signal == self.DESPOTIFY_END_OF_PLAYLIST: + logger.debug('Despotify signalled end of playlist') + # TODO Ask backend to play next track