1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
import logging
from mopidy import backend
import pykka
from .client import BeetsRemoteClient
from .library import BeetsLibraryProvider
logger = logging.getLogger(__name__)
class BeetsBackend(pykka.ThreadingActor, backend.Backend):
uri_schemes = ["beets"]
def __init__(self, config, audio):
super(BeetsBackend, self).__init__()
beets_endpoint = "http://%s:%s" % (
config["beets"]["hostname"],
config["beets"]["port"],
)
self.beets_api = BeetsRemoteClient(beets_endpoint, config["proxy"])
self.library = BeetsLibraryProvider(backend=self)
self.playback = BeetsPlaybackProvider(audio=audio, backend=self)
self.playlists = None
class BeetsPlaybackProvider(backend.PlaybackProvider):
def translate_uri(self, uri):
track_id = uri.split(";")[1]
logger.debug("Getting info for track %s with id %s" % (uri, track_id))
return self.backend.beets_api.get_track_stream_url(track_id)
|