platypush/platypush/plugins/music/mopidy/_status.py

48 lines
1.2 KiB
Python

from dataclasses import asdict, dataclass
from typing import Optional
from platypush.plugins.media import PlayerState
from platypush.schemas.mopidy import MopidyStatusSchema
from ._track import MopidyTrack
@dataclass
class MopidyStatus:
"""
A dataclass to hold the status of the Mopidy client.
"""
state: PlayerState = PlayerState.STOP
volume: float = 0
consume: bool = False
random: bool = False
repeat: bool = False
single: bool = False
mute: bool = False
time: Optional[float] = None
duration: Optional[float] = None
playing_pos: Optional[int] = None
track: Optional[MopidyTrack] = None
def copy(self):
return MopidyStatus(
state=self.state,
volume=self.volume,
consume=self.consume,
random=self.random,
repeat=self.repeat,
single=self.single,
mute=self.mute,
time=self.time,
duration=self.duration,
playing_pos=self.playing_pos,
track=MopidyTrack(**asdict(self.track)) if self.track else None,
)
def to_dict(self):
"""
Convert the Mopidy status to a dictionary.
"""
return dict(MopidyStatusSchema().dump(self))