42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
from shazamio.schemas.attributes import AttributeName
|
|
from shazamio.schemas.base import BaseDataModel
|
|
from shazamio.schemas.photos import ImageModel
|
|
|
|
|
|
class PlayParams(BaseModel):
|
|
id: str
|
|
kind: str
|
|
|
|
|
|
class AttributeLastRelease(BaseModel):
|
|
copyright: str
|
|
genre_names: List[str] = Field(..., alias="genreNames")
|
|
release_date: str = Field(..., alias="releaseDate")
|
|
is_mastered_for_itunes: bool = Field(..., alias="isMasteredForItunes")
|
|
upc: str
|
|
artwork: ImageModel
|
|
play_params: PlayParams = Field(..., alias="playParams")
|
|
url: str
|
|
record_label: str = Field(..., alias="recordLabel")
|
|
track_count: int = Field(..., alias="trackCount")
|
|
is_compilation: bool = Field(..., alias="isCompilation")
|
|
is_prerelease: bool = Field(..., alias="isPrerelease")
|
|
audio_traits: List[str] = Field(..., alias="audioTraits")
|
|
editorial_artwork: Dict[str, Any] = Field(..., alias="editorialArtwork")
|
|
is_single: bool = Field(..., alias="isSingle")
|
|
name: str
|
|
artist_name: str = Field(..., alias="artistName")
|
|
content_rating: Optional[str] = Field(None, alias="contentRating")
|
|
is_complete: bool = Field(..., alias="isComplete")
|
|
|
|
|
|
class LastReleaseModel(BaseModel):
|
|
href: Optional[str] = None
|
|
attributes: Optional[AttributeName] = None
|
|
data: Optional[List[BaseDataModel[AttributeLastRelease]]] = None
|