Add SimplifiedAlbum and SimplifiedTrack

This commit is contained in:
Bradlee Speice 2021-07-04 02:27:43 -04:00
parent ad39ddf83f
commit ea03da8575
3 changed files with 57 additions and 2 deletions

View File

@ -2,8 +2,15 @@
Client-agnostic model for marshalling Spotify data types. Client-agnostic model for marshalling Spotify data types.
""" """
from .album import SearchAlbum from .album import SearchAlbum, SimplifiedAlbum
from .extra import ReleaseDatePrecision from .extra import ReleaseDatePrecision
from .paging import Paging from .paging import Paging
from .track import SimplifiedTrack
__all__ = ["Paging", "ReleaseDatePrecision", "SearchAlbum"] __all__ = [
"Paging",
"ReleaseDatePrecision",
"SearchAlbum",
"SimplifiedAlbum",
"SimplifiedTrack",
]

View File

@ -7,6 +7,7 @@ from typing import Any, Dict, List, Union
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from .extra import ReleaseDatePrecision from .extra import ReleaseDatePrecision
from .paging import Paging
class SearchAlbum(BaseModel): class SearchAlbum(BaseModel):
@ -25,3 +26,18 @@ class SearchAlbum(BaseModel):
total_tracks: int total_tracks: int
type_: str = Field(alias="type") type_: str = Field(alias="type")
uri: str uri: str
class SimplifiedAlbum(SearchAlbum):
"""
Album as returned by the Album API
https://developer.spotify.com/documentation/web-api/reference/#object-simplifiedalbumobject
"""
copyrights: List[Dict[str, str]]
external_ids: Dict[str, str]
genres: List[str]
label: str
popularity: int
tracks: Paging

32
spotify_model/track.py Normal file
View File

@ -0,0 +1,32 @@
"""
Classes designed to manage track-like objects
"""
from typing import Dict, List, Optional, Union
from pydantic import BaseModel, Field
class SimplifiedTrack(BaseModel):
"""
Track as returned by the Tracks API
https://developer.spotify.com/documentation/web-api/reference/#object-simplifiedtrackobject
"""
artists: List[Dict[str, Union[Dict[str, str], str]]]
available_markets: List[str]
disc_number: int
duration_ms: int
explicit: bool
external_urls: Dict[str, str]
href: str
spotify_id: str = Field(alias="id")
is_local: bool
is_playable: Optional[bool]
linked_from: Optional[str]
name: str
preview_url: str
restrictions: Optional[str]
track_number: int
type_: str = Field(alias="type")
uri: str