Files
librespot-python/librespot/player/Player.py
2021-02-25 08:07:17 +09:00

53 lines
1.7 KiB
Python

from __future__ import annotations
from librespot.core.Session import Session
from librespot.player import PlayerConfiguration, StateWrapper
from librespot.player.metrics import PlaybackMetrics
from librespot.player.mixing import AudioSink
from librespot.player.playback.PlayerSession import PlayerSession
from librespot.player.state.DeviceStateHandler import DeviceStateHandler
from librespot.standard.Closeable import Closeable
import sched
import time
class Player(Closeable, PlayerSession.Listener, AudioSink.Listener):
VOLUME_MAX: int = 65536
_scheduler: sched.scheduler = sched.scheduler(time.time)
_session: Session = None
_conf: PlayerConfiguration = None
_events: Player.EventsDispatcher = None
_sink: AudioSink = None
_metrics: dict[str, PlaybackMetrics] = dict()
_state: StateWrapper = None
_playerSession: PlayerSession = None
_releaseLineFuture = None
_deviceStateListener: DeviceStateHandler.Listener = None
def __init__(self, conf: PlayerConfiguration, session: Session):
self._conf = conf
self._session = session
self._events = Player.EventsDispatcher(conf)
self._sink = AudioSink(conf, self)
def init_state(self):
self._state = StateWrapper(self._session, self, self._conf)
class Anonymous(DeviceStateHandler.Listener):
def ready(self) -> None:
pass
def command(self, endpoint: DeviceStateHandler.Endpoint, data: DeviceStateHandler.CommandBody) -> None:
pass
self._deviceStateListener = Anonymous()
def volume_up(self, steps: int = 1):
if self.state is None:
return
class EventsDispatcher:
def __init__(self, conf: PlayerConfiguration):
pass