platypush/platypush/plugins/music/mopidy/_playlist.py

34 lines
859 B
Python

from dataclasses import dataclass, field
from datetime import datetime
from typing import List, Optional
from platypush.schemas.mopidy import MopidyPlaylistSchema
from ._track import MopidyTrack
@dataclass
class MopidyPlaylist:
"""
Model for a Mopidy playlist.
"""
uri: str
name: str
last_modified: Optional[datetime] = None
tracks: List[MopidyTrack] = field(default_factory=list)
type: str = "playlist"
@classmethod
def parse(cls, playlist: dict) -> "MopidyPlaylist":
"""
Parse a Mopidy playlist from a dictionary received from the Mopidy API.
"""
return cls(**MopidyPlaylistSchema().load(playlist)) # type: ignore
def to_dict(self) -> dict:
"""
Convert the Mopidy playlist to a dictionary.
"""
return dict(MopidyPlaylistSchema().dump(self))