starting to standarize this stuff

This commit is contained in:
Xoconoch
2025-06-10 15:21:46 -06:00
parent b2eaed3709
commit 75e790c63b
6 changed files with 192 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
#!/usr/bin/python3
from dataclasses import dataclass, field
from typing import List, Optional, Dict, Any
from .common import IDs
from .artist import artistObject
@dataclass
class albumTrackPlaylistObject:
"""Album when nested inside a track in a playlist context."""
type: str = "albumTrackPlaylist"
album_type: str = "" # "album" | "single" | "compilation"
title: str = ""
release_date: Dict[str, Any] = field(default_factory=dict) # ReleaseDate as dict
ids: IDs = field(default_factory=IDs)
@dataclass
class artistTrackPlaylistObject:
"""Artist when nested inside a track in a playlist context."""
type: str = "artistTrackPlaylist"
name: str = ""
genres: List[str] = field(default_factory=list)
ids: IDs = field(default_factory=IDs)
@dataclass
class trackPlaylistObject:
"""Track when nested inside a playlist context."""
type: str = "trackPlaylist"
title: str = ""
position: int = 0 # Position in the playlist
duration_ms: int = 0 # mandatory
# Nested objects instead of string references
artist: artistTrackPlaylistObject = field(default_factory=artistTrackPlaylistObject)
album: albumTrackPlaylistObject = field(default_factory=albumTrackPlaylistObject)
ids: IDs = field(default_factory=IDs)
@dataclass
class playlistObject:
"""A usercurated playlist, nesting trackPlaylistObject[]."""
type: str = "playlist"
title: str = ""
description: Optional[str] = None
collaborative: bool = False
owner: artistObject = field(default_factory=artistObject)
tracks: List[trackPlaylistObject] = field(default_factory=list)
ids: IDs = field(default_factory=IDs)