Restyled by black
This commit is contained in:
@@ -34,8 +34,7 @@ class Player(Closeable, PlayerSession.Listener, AudioSink.Listener):
|
||||
self._init_state()
|
||||
|
||||
def _init_state(self):
|
||||
self._state = StateWrapper.StateWrapper(self._session, self,
|
||||
self._conf)
|
||||
self._state = StateWrapper.StateWrapper(self._session, self, self._conf)
|
||||
|
||||
class Anonymous(DeviceStateHandler.Listener):
|
||||
_player: Player = None
|
||||
@@ -46,10 +45,12 @@ class Player(Closeable, PlayerSession.Listener, AudioSink.Listener):
|
||||
def ready(self) -> None:
|
||||
pass
|
||||
|
||||
def command(self, endpoint: DeviceStateHandler.Endpoint,
|
||||
data: DeviceStateHandler.CommandBody) -> None:
|
||||
self._player._LOGGER.debug(
|
||||
"Received command: {}".format(endpoint))
|
||||
def command(
|
||||
self,
|
||||
endpoint: DeviceStateHandler.Endpoint,
|
||||
data: DeviceStateHandler.CommandBody,
|
||||
) -> None:
|
||||
self._player._LOGGER.debug("Received command: {}".format(endpoint))
|
||||
|
||||
self._deviceStateListener = Anonymous(self)
|
||||
self._state.add_listener(self._deviceStateListener)
|
||||
|
||||
@@ -4,7 +4,12 @@ from librespot.dealer import DealerClient
|
||||
from librespot.player import Player, PlayerConfiguration
|
||||
from librespot.player.state import DeviceStateHandler
|
||||
from librespot.proto import Connect
|
||||
from librespot.proto.Player import ContextPlayerOptions, PlayerState, Restrictions, Suppressions
|
||||
from librespot.proto.Player import (
|
||||
ContextPlayerOptions,
|
||||
PlayerState,
|
||||
Restrictions,
|
||||
Suppressions,
|
||||
)
|
||||
|
||||
|
||||
class StateWrapper(DeviceStateHandler.Listener, DealerClient.MessageListener):
|
||||
@@ -13,8 +18,7 @@ class StateWrapper(DeviceStateHandler.Listener, DealerClient.MessageListener):
|
||||
_player: Player = None
|
||||
_device: DeviceStateHandler = None
|
||||
|
||||
def __init__(self, session: Session, player: Player,
|
||||
conf: PlayerConfiguration):
|
||||
def __init__(self, session: Session, player: Player, conf: PlayerConfiguration):
|
||||
self._session = session
|
||||
self._player = player
|
||||
self._device = DeviceStateHandler(session, self, conf)
|
||||
@@ -22,27 +26,30 @@ class StateWrapper(DeviceStateHandler.Listener, DealerClient.MessageListener):
|
||||
|
||||
self._device.add_listener(self)
|
||||
self._session.dealer().add_message_listener(
|
||||
self, "spotify:user:attributes:update", "hm://playlist/",
|
||||
"hm://collection/collection/" + self._session.username() + "/json")
|
||||
self,
|
||||
"spotify:user:attributes:update",
|
||||
"hm://playlist/",
|
||||
"hm://collection/collection/" + self._session.username() + "/json",
|
||||
)
|
||||
|
||||
def _init_state(self) -> PlayerState:
|
||||
return PlayerState(playback_speed=1.0,
|
||||
suppressions=Suppressions(),
|
||||
context_restrictions=Restrictions(),
|
||||
options=ContextPlayerOptions(
|
||||
repeating_context=False,
|
||||
shuffling_context=False,
|
||||
repeating_track=False),
|
||||
position_as_of_timestamp=0,
|
||||
position=0,
|
||||
is_playing=False)
|
||||
return PlayerState(
|
||||
playback_speed=1.0,
|
||||
suppressions=Suppressions(),
|
||||
context_restrictions=Restrictions(),
|
||||
options=ContextPlayerOptions(
|
||||
repeating_context=False, shuffling_context=False, repeating_track=False
|
||||
),
|
||||
position_as_of_timestamp=0,
|
||||
position=0,
|
||||
is_playing=False,
|
||||
)
|
||||
|
||||
def add_listener(self, listener: DeviceStateHandler.Listener):
|
||||
self._device.add_listener(listener)
|
||||
|
||||
def ready(self) -> None:
|
||||
self._device.update_state(Connect.PutStateReason.NEW_DEVICE, 0,
|
||||
self._state)
|
||||
self._device.update_state(Connect.PutStateReason.NEW_DEVICE, 0, self._state)
|
||||
|
||||
def on_message(self, uri: str, headers: dict[str, str], payload: bytes):
|
||||
pass
|
||||
|
||||
@@ -3,8 +3,7 @@ from librespot.player import PlayerConfiguration
|
||||
|
||||
|
||||
class AudioSink:
|
||||
def __init__(self, conf: PlayerConfiguration,
|
||||
listener: AudioSink.Listener):
|
||||
def __init__(self, conf: PlayerConfiguration, listener: AudioSink.Listener):
|
||||
pass
|
||||
|
||||
class Listener:
|
||||
|
||||
@@ -18,7 +18,8 @@ class DeviceStateHandler:
|
||||
_deviceInfo: Connect.DeviceInfo = None
|
||||
_listeners: list[DeviceStateHandler.Listener] = list()
|
||||
_putState: Connect.PutStateRequest = None
|
||||
_putStateWorker: concurrent.futures.ThreadPoolExecutor = concurrent.futures.ThreadPoolExecutor(
|
||||
_putStateWorker: concurrent.futures.ThreadPoolExecutor = (
|
||||
concurrent.futures.ThreadPoolExecutor()
|
||||
)
|
||||
_connectionId: str = None
|
||||
|
||||
@@ -30,11 +31,11 @@ class DeviceStateHandler:
|
||||
def _update_connection_id(self, newer: str) -> None:
|
||||
newer = urllib.parse.unquote(newer, "UTF-8")
|
||||
|
||||
if self._connectionId is None or \
|
||||
self._connectionId != newer:
|
||||
if self._connectionId is None or self._connectionId != newer:
|
||||
self._connectionId = newer
|
||||
self._LOGGER.debug("Updated Spotify-Connection-Id: {}".format(
|
||||
self._connectionId))
|
||||
self._LOGGER.debug(
|
||||
"Updated Spotify-Connection-Id: {}".format(self._connectionId)
|
||||
)
|
||||
self._notify_ready()
|
||||
|
||||
def add_listener(self, listener: DeviceStateHandler.Listener):
|
||||
@@ -44,8 +45,12 @@ class DeviceStateHandler:
|
||||
for listener in self._listeners:
|
||||
listener.ready()
|
||||
|
||||
def update_state(self, reason: Connect.PutStateReason, player_time: int,
|
||||
state: Player.PlayerState):
|
||||
def update_state(
|
||||
self,
|
||||
reason: Connect.PutStateReason,
|
||||
player_time: int,
|
||||
state: Player.PlayerState,
|
||||
):
|
||||
if self._connectionId is None:
|
||||
raise TypeError()
|
||||
|
||||
@@ -63,10 +68,13 @@ class DeviceStateHandler:
|
||||
|
||||
def _put_connect_state(self, req: Connect.PutStateRequest):
|
||||
self._session.api().put_connect_state(self._connectionId, req)
|
||||
self._LOGGER.info("Put state. ts: {}, connId: {}, reason: {}".format(
|
||||
req.client_side_timestamp,
|
||||
Utils.truncate_middle(self._connectionId, 10),
|
||||
req.put_state_reason))
|
||||
self._LOGGER.info(
|
||||
"Put state. ts: {}, connId: {}, reason: {}".format(
|
||||
req.client_side_timestamp,
|
||||
Utils.truncate_middle(self._connectionId, 10),
|
||||
req.put_state_reason,
|
||||
)
|
||||
)
|
||||
|
||||
class Endpoint(enum.Enum):
|
||||
Play: str = "play"
|
||||
@@ -80,8 +88,11 @@ class DeviceStateHandler:
|
||||
def ready(self) -> None:
|
||||
pass
|
||||
|
||||
def command(self, endpoint: DeviceStateHandler.Endpoint,
|
||||
data: DeviceStateHandler.CommandBody) -> None:
|
||||
def command(
|
||||
self,
|
||||
endpoint: DeviceStateHandler.Endpoint,
|
||||
data: DeviceStateHandler.CommandBody,
|
||||
) -> None:
|
||||
pass
|
||||
|
||||
def volume_changed(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user