diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index 0ad68a07..ea360055 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -32,13 +32,13 @@ class Core(pykka.ThreadingActor, AudioListener): self.current_playlist = CurrentPlaylistController(core=self) - self.library = LibraryController(backend=backends[0], core=self) + self.library = LibraryController(backends=backends, core=self) self.playback = PlaybackController( - audio=audio, backend=backends[0], core=self) + audio=audio, backends=backends, core=self) self.stored_playlists = StoredPlaylistsController( - backend=backends[0], core=self) + backends=backends, core=self) @property def uri_schemes(self): diff --git a/mopidy/core/current_playlist.py b/mopidy/core/current_playlist.py index 5aa7ed5d..6c484daf 100644 --- a/mopidy/core/current_playlist.py +++ b/mopidy/core/current_playlist.py @@ -6,15 +6,11 @@ from mopidy.models import CpTrack from . import listener + logger = logging.getLogger('mopidy.core') class CurrentPlaylistController(object): - """ - :param backend: backend the controller is a part of - :type backend: :class:`mopidy.backends.base.Backend` - """ - pykka_traversable = True def __init__(self, core): diff --git a/mopidy/core/library.py b/mopidy/core/library.py index 52f85b55..469b6160 100644 --- a/mopidy/core/library.py +++ b/mopidy/core/library.py @@ -1,15 +1,8 @@ class LibraryController(object): - """ - :param backend: backend the controller is a part of - :type backend: :class:`mopidy.backends.base.Backend` - :param provider: provider the controller should use - :type provider: instance of :class:`BaseLibraryProvider` - """ - pykka_traversable = True - def __init__(self, backend, core): - self.backend = backend + def __init__(self, backends, core): + self.backends = backends self.core = core def find_exact(self, **query): @@ -29,7 +22,7 @@ class LibraryController(object): :type query: dict :rtype: :class:`mopidy.models.Playlist` """ - return self.backend.library.find_exact(**query).get() + return self.backends[0].library.find_exact(**query).get() def lookup(self, uri): """ @@ -39,7 +32,7 @@ class LibraryController(object): :type uri: string :rtype: :class:`mopidy.models.Track` or :class:`None` """ - return self.backend.library.lookup(uri).get() + return self.backends[0].library.lookup(uri).get() def refresh(self, uri=None): """ @@ -48,7 +41,7 @@ class LibraryController(object): :param uri: directory or track URI :type uri: string """ - return self.backend.library.refresh(uri).get() + return self.backends[0].library.refresh(uri).get() def search(self, **query): """ @@ -67,4 +60,4 @@ class LibraryController(object): :type query: dict :rtype: :class:`mopidy.models.Playlist` """ - return self.backend.library.search(**query).get() + return self.backends[0].library.search(**query).get() diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index d2411738..85faaa13 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -4,7 +4,7 @@ import random from . import listener -logger = logging.getLogger('mopidy.backends.base') +logger = logging.getLogger('mopidy.core') def option_wrapper(name, default): @@ -37,13 +37,6 @@ class PlaybackState(object): class PlaybackController(object): - """ - :param backend: the backend - :type backend: :class:`mopidy.backends.base.Backend` - :param provider: provider the controller should use - :type provider: instance of :class:`BasePlaybackProvider` - """ - # pylint: disable = R0902 # Too many instance attributes @@ -81,10 +74,13 @@ class PlaybackController(object): #: Playback continues after current song. single = option_wrapper('_single', False) - def __init__(self, audio, backend, core): + def __init__(self, audio, backends, core): self.audio = audio - self.backend = backend + + self.backends = backends + self.core = core + self._state = PlaybackState.STOPPED self._shuffled = [] self._first_shuffle = True @@ -295,7 +291,7 @@ class PlaybackController(object): @property def time_position(self): """Time position in milliseconds.""" - return self.backend.playback.get_time_position().get() + return self.backends[0].playback.get_time_position().get() @property def volume(self): @@ -381,7 +377,7 @@ class PlaybackController(object): def pause(self): """Pause playback.""" - if self.backend.playback.pause().get(): + if self.backends[0].playback.pause().get(): self.state = PlaybackState.PAUSED self._trigger_track_playback_paused() @@ -413,7 +409,7 @@ class PlaybackController(object): if cp_track is not None: self.current_cp_track = cp_track self.state = PlaybackState.PLAYING - if not self.backend.playback.play(cp_track.track).get(): + if not self.backends[0].playback.play(cp_track.track).get(): # Track is not playable if self.random and self._shuffled: self._shuffled.remove(cp_track) @@ -440,7 +436,7 @@ class PlaybackController(object): def resume(self): """If paused, resume playing the current track.""" if (self.state == PlaybackState.PAUSED and - self.backend.playback.resume().get()): + self.backends[0].playback.resume().get()): self.state = PlaybackState.PLAYING self._trigger_track_playback_resumed() @@ -466,7 +462,7 @@ class PlaybackController(object): self.next() return True - success = self.backend.playback.seek(time_position).get() + success = self.backends[0].playback.seek(time_position).get() if success: self._trigger_seeked(time_position) return success @@ -480,7 +476,7 @@ class PlaybackController(object): :type clear_current_track: boolean """ if self.state != PlaybackState.STOPPED: - if self.backend.playback.stop().get(): + if self.backends[0].playback.stop().get(): self._trigger_track_playback_ended() self.state = PlaybackState.STOPPED if clear_current_track: diff --git a/mopidy/core/stored_playlists.py b/mopidy/core/stored_playlists.py index 2c5ef752..d7bcbd0c 100644 --- a/mopidy/core/stored_playlists.py +++ b/mopidy/core/stored_playlists.py @@ -1,15 +1,8 @@ class StoredPlaylistsController(object): - """ - :param backend: backend the controller is a part of - :type backend: :class:`mopidy.backends.base.Backend` - :param provider: provider the controller should use - :type provider: instance of :class:`BaseStoredPlaylistsProvider` - """ - pykka_traversable = True - def __init__(self, backend, core): - self.backend = backend + def __init__(self, backends, core): + self.backends = backends self.core = core @property @@ -19,11 +12,11 @@ class StoredPlaylistsController(object): Read/write. List of :class:`mopidy.models.Playlist`. """ - return self.backend.stored_playlists.playlists.get() + return self.backends[0].stored_playlists.playlists.get() @playlists.setter # noqa def playlists(self, playlists): - self.backend.stored_playlists.playlists = playlists + self.backends[0].stored_playlists.playlists = playlists def create(self, name): """ @@ -33,7 +26,7 @@ class StoredPlaylistsController(object): :type name: string :rtype: :class:`mopidy.models.Playlist` """ - return self.backend.stored_playlists.create(name).get() + return self.backends[0].stored_playlists.create(name).get() def delete(self, playlist): """ @@ -42,7 +35,7 @@ class StoredPlaylistsController(object): :param playlist: the playlist to delete :type playlist: :class:`mopidy.models.Playlist` """ - return self.backend.stored_playlists.delete(playlist).get() + return self.backends[0].stored_playlists.delete(playlist).get() def get(self, **criteria): """ @@ -83,14 +76,13 @@ class StoredPlaylistsController(object): :type uri: string :rtype: :class:`mopidy.models.Playlist` """ - return self.backend.stored_playlists.lookup(uri).get() + return self.backends[0].stored_playlists.lookup(uri).get() def refresh(self): """ - Refresh the stored playlists in - :attr:`mopidy.backends.base.StoredPlaylistsController.playlists`. + Refresh the stored playlists in :attr:`playlists`. """ - return self.backend.stored_playlists.refresh().get() + return self.backends[0].stored_playlists.refresh().get() def rename(self, playlist, new_name): """ @@ -101,7 +93,8 @@ class StoredPlaylistsController(object): :param new_name: the new name :type new_name: string """ - return self.backend.stored_playlists.rename(playlist, new_name).get() + return self.backends[0].stored_playlists.rename( + playlist, new_name).get() def save(self, playlist): """ @@ -110,4 +103,4 @@ class StoredPlaylistsController(object): :param playlist: the playlist :type playlist: :class:`mopidy.models.Playlist` """ - return self.backend.stored_playlists.save(playlist).get() + return self.backends[0].stored_playlists.save(playlist).get()