34 lines
859 B
Python
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))
|