mopidy/mopidy/core/actor.py
2012-10-28 20:58:51 +01:00

55 lines
1.6 KiB
Python

import itertools
import pykka
from mopidy.audio import AudioListener
from .current_playlist import CurrentPlaylistController
from .library import LibraryController
from .playback import PlaybackController
from .stored_playlists import StoredPlaylistsController
class Core(pykka.ThreadingActor, AudioListener):
#: The current playlist controller. An instance of
#: :class:`mopidy.core.CurrentPlaylistController`.
current_playlist = None
#: The library controller. An instance of
# :class:`mopidy.core.LibraryController`.
library = None
#: The playback controller. An instance of
#: :class:`mopidy.core.PlaybackController`.
playback = None
#: The stored playlists controller. An instance of
#: :class:`mopidy.core.StoredPlaylistsController`.
stored_playlists = None
def __init__(self, audio=None, backends=None):
super(Core, self).__init__()
self._backends = backends
self.current_playlist = CurrentPlaylistController(core=self)
self.library = LibraryController(backends=backends, core=self)
self.playback = PlaybackController(
audio=audio, backends=backends, core=self)
self.stored_playlists = StoredPlaylistsController(
backends=backends, core=self)
@property
def uri_schemes(self):
"""List of URI schemes we can handle"""
futures = [backend.uri_schemes for backend in self._backends]
results = pykka.get_all(futures)
uri_schemes = itertools.chain(*results)
return sorted(uri_schemes)
def reached_end_of_stream(self):
self.playback.on_end_of_track()