Source code for platypush.plugins.music.mopidy._track
from dataclasses import dataclass
from typing import Optional
from platypush.schemas.mopidy import MopidyTrackSchema
from ._exc import EmptyTrackException
[docs]
@dataclass
class MopidyTrack:
"""
Model for a Mopidy track.
"""
uri: str
artist: Optional[str] = None
title: Optional[str] = None
album: Optional[str] = None
artist_uri: Optional[str] = None
album_uri: Optional[str] = None
time: Optional[float] = None
playlist_pos: Optional[int] = None
track_id: Optional[int] = None
track_no: Optional[int] = None
date: Optional[str] = None
genre: Optional[str] = None
type: str = 'track'
[docs]
@classmethod
def parse(cls, track: dict) -> Optional["MopidyTrack"]:
"""
Parse a Mopidy track from a dictionary received from the Mopidy API.
"""
try:
return cls(**MopidyTrackSchema().load(track)) # type: ignore
except EmptyTrackException:
return None
[docs]
def to_dict(self) -> dict:
"""
Convert the Mopidy track to a dictionary.
"""
return dict(MopidyTrackSchema().dump(self))
def __eq__(self, other: object) -> bool:
if not isinstance(other, MopidyTrack):
return False
return (
self.uri == other.uri
and self.artist == other.artist
and self.title == other.title
and self.album == other.album
and self.time == other.time
)