From fd60d42be6eacfa5a7e1811c78580ed8f8f909ad Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Fri, 14 Sep 2012 02:08:23 +0200 Subject: [PATCH] Make LocalPlaybackProvider the default implementation of BasePlaybackProvider --- mopidy/backends/base/playback.py | 30 +++++++++++++++-------------- mopidy/backends/local/__init__.py | 27 +------------------------- mopidy/backends/spotify/playback.py | 12 +----------- 3 files changed, 18 insertions(+), 51 deletions(-) diff --git a/mopidy/backends/base/playback.py b/mopidy/backends/base/playback.py index d2b9edd9..ae5a4383 100644 --- a/mopidy/backends/base/playback.py +++ b/mopidy/backends/base/playback.py @@ -13,73 +13,75 @@ class BasePlaybackProvider(object): """ Pause playback. - *MUST be implemented by subclass.* + *MAY be reimplemented by subclass.* :rtype: :class:`True` if successful, else :class:`False` """ - raise NotImplementedError + return self.backend.audio.pause_playback().get() def play(self, track): """ Play given track. - *MUST be implemented by subclass.* + *MAY be reimplemented by subclass.* :param track: the track to play :type track: :class:`mopidy.models.Track` :rtype: :class:`True` if successful, else :class:`False` """ - raise NotImplementedError + self.backend.audio.prepare_change() + self.backend.audio.set_uri(track.uri).get() + return self.backend.audio.start_playback().get() def resume(self): """ Resume playback at the same time position playback was paused. - *MUST be implemented by subclass.* + *MAY be reimplemented by subclass.* :rtype: :class:`True` if successful, else :class:`False` """ - raise NotImplementedError + return self.backend.audio.start_playback().get() def seek(self, time_position): """ Seek to a given time position. - *MUST be implemented by subclass.* + *MAY be reimplemented by subclass.* :param time_position: time position in milliseconds :type time_position: int :rtype: :class:`True` if successful, else :class:`False` """ - raise NotImplementedError + return self.backend.audio.set_position(time_position).get() def stop(self): """ Stop playback. - *MUST be implemented by subclass.* + *MAY be reimplemented by subclass.* :rtype: :class:`True` if successful, else :class:`False` """ - raise NotImplementedError + return self.backend.audio.stop_playback().get() def get_volume(self): """ Get current volume - *MUST be implemented by subclass.* + *MAY be reimplemented by subclass.* :rtype: int [0..100] or :class:`None` """ - raise NotImplementedError + return self.backend.audio.get_volume().get() def set_volume(self, volume): """ Get current volume - *MUST be implemented by subclass.* + *MAY be reimplemented by subclass.* :param: volume :type volume: int [0..100] """ - raise NotImplementedError + self.backend.audio.set_volume(volume) diff --git a/mopidy/backends/local/__init__.py b/mopidy/backends/local/__init__.py index 022b253b..b49406c6 100644 --- a/mopidy/backends/local/__init__.py +++ b/mopidy/backends/local/__init__.py @@ -47,7 +47,7 @@ class LocalBackend(ThreadingActor, base.Backend): self.library = core.LibraryController(backend=self, provider=library_provider) - playback_provider = LocalPlaybackProvider(backend=self) + playback_provider = base.BasePlaybackProvider(backend=self) self.playback = LocalPlaybackController(backend=self, provider=playback_provider) @@ -78,31 +78,6 @@ class LocalPlaybackController(core.PlaybackController): return self.backend.audio.get_position().get() -class LocalPlaybackProvider(base.BasePlaybackProvider): - def pause(self): - return self.backend.audio.pause_playback().get() - - def play(self, track): - self.backend.audio.prepare_change() - self.backend.audio.set_uri(track.uri).get() - return self.backend.audio.start_playback().get() - - def resume(self): - return self.backend.audio.start_playback().get() - - def seek(self, time_position): - return self.backend.audio.set_position(time_position).get() - - def stop(self): - return self.backend.audio.stop_playback().get() - - def get_volume(self): - return self.backend.audio.get_volume().get() - - def set_volume(self, volume): - self.backend.audio.set_volume(volume).get() - - class LocalStoredPlaylistsProvider(base.BaseStoredPlaylistsProvider): def __init__(self, *args, **kwargs): super(LocalStoredPlaylistsProvider, self).__init__(*args, **kwargs) diff --git a/mopidy/backends/spotify/playback.py b/mopidy/backends/spotify/playback.py index cf16c35e..1c20da87 100644 --- a/mopidy/backends/spotify/playback.py +++ b/mopidy/backends/spotify/playback.py @@ -8,9 +8,6 @@ from mopidy.core import PlaybackState logger = logging.getLogger('mopidy.backends.spotify.playback') class SpotifyPlaybackProvider(BasePlaybackProvider): - def pause(self): - return self.backend.audio.pause_playback() - def play(self, track): if self.backend.playback.state == PlaybackState.PLAYING: self.backend.spotify.session.play(0) @@ -39,12 +36,5 @@ class SpotifyPlaybackProvider(BasePlaybackProvider): return True def stop(self): - result = self.backend.audio.stop_playback() self.backend.spotify.session.play(0) - return result - - def get_volume(self): - return self.backend.audio.get_volume().get() - - def set_volume(self, volume): - self.backend.audio.set_volume(volume) + return super(SpotifyPlaybackProvider, self).stop()