Compare commits
10 Commits
label_play
...
master
Author | SHA1 | Date | |
---|---|---|---|
fef6c1a548 | |||
aa46152738 | |||
766a33afdf | |||
024405f7b5 | |||
3daa89ed6d | |||
9daf2cc2a0 | |||
4896be77e0 | |||
c49f201835 | |||
b6109fa17c | |||
49ae593c45 |
@ -2,11 +2,12 @@
|
||||
Client-agnostic model for marshalling Spotify data types.
|
||||
"""
|
||||
|
||||
from .album import SearchAlbum, SimplifiedAlbum
|
||||
from .album import SavedAlbum, SearchAlbum, SimplifiedAlbum
|
||||
from .artist import Artist, SimplifiedArtist
|
||||
from .extra import ReleaseDatePrecision
|
||||
from .paging import Paging
|
||||
from .playlist import SimplifiedPlaylist
|
||||
from .track import PlaylistTrack, SimplifiedTrack, Track
|
||||
from .paging import Cursor, CursorPaging, Paging
|
||||
from .playlist import PlaylistTrack, SimplifiedPlaylist
|
||||
from .track import SavedTrack, SimplifiedTrack, Track
|
||||
from .user import PrivateUser, PublicUser
|
||||
|
||||
__all__ = [
|
||||
@ -16,6 +17,8 @@ __all__ = [
|
||||
"PublicUser",
|
||||
"ReleaseDatePrecision",
|
||||
"SearchAlbum",
|
||||
"SavedAlbum",
|
||||
"SavedTrack",
|
||||
"SimplifiedAlbum",
|
||||
"SimplifiedPlaylist",
|
||||
"SimplifiedTrack",
|
||||
|
@ -41,3 +41,14 @@ class SimplifiedAlbum(SearchAlbum):
|
||||
label: str
|
||||
popularity: int
|
||||
tracks: Paging
|
||||
|
||||
|
||||
class SavedAlbum(BaseModel):
|
||||
"""
|
||||
Album as returned by the Library API
|
||||
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-savedalbumobject
|
||||
"""
|
||||
|
||||
added_at: str
|
||||
album: SimplifiedAlbum
|
||||
|
42
spotify_model/artist.py
Normal file
42
spotify_model/artist.py
Normal file
@ -0,0 +1,42 @@
|
||||
"""
|
||||
Objects used for retrieving artist information from Spotify
|
||||
"""
|
||||
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from .extra import Image
|
||||
|
||||
|
||||
class SimplifiedArtist(BaseModel):
|
||||
"""
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-simplifiedartistobject
|
||||
"""
|
||||
|
||||
external_urls: Dict[str, str]
|
||||
href: str
|
||||
spotify_id: str = Field(alias="id")
|
||||
name: str
|
||||
spotify_type: str = Field(alias="type")
|
||||
uri: str
|
||||
|
||||
|
||||
class Followers(BaseModel):
|
||||
"""
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-followersobject
|
||||
"""
|
||||
|
||||
href: Optional[str]
|
||||
total: int
|
||||
|
||||
|
||||
class Artist(SimplifiedArtist):
|
||||
"""
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-artistobject
|
||||
"""
|
||||
|
||||
followers: Followers
|
||||
genres: List[str]
|
||||
images: List[Image]
|
||||
popularity: int
|
@ -4,6 +4,8 @@ Extra type definitions that don't necessarily belong in other categories.
|
||||
|
||||
from enum import Enum
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class ReleaseDatePrecision(Enum):
|
||||
"Release date precision"
|
||||
@ -11,3 +13,13 @@ class ReleaseDatePrecision(Enum):
|
||||
YEAR = "year"
|
||||
MONTH = "month"
|
||||
DAY = "day"
|
||||
|
||||
|
||||
class Image(BaseModel):
|
||||
"""
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-imageobject
|
||||
"""
|
||||
|
||||
height: int
|
||||
url: str
|
||||
width: int
|
||||
|
@ -7,6 +7,27 @@ from typing import Any, Dict, List, Optional
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class Cursor(BaseModel):
|
||||
"""
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-cursorobject
|
||||
"""
|
||||
|
||||
after: Optional[str]
|
||||
|
||||
|
||||
class CursorPaging(BaseModel):
|
||||
"""
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-cursorpagingobject
|
||||
"""
|
||||
|
||||
cursors: Cursor
|
||||
href: str
|
||||
items: List[Dict[str, Any]]
|
||||
limit: int
|
||||
next_href: Optional[str] = Field(alias="next")
|
||||
total: int
|
||||
|
||||
|
||||
class Paging(BaseModel):
|
||||
"https://developer.spotify.com/documentation/web-api/reference/#object-pagingobject"
|
||||
|
||||
|
@ -1,13 +1,27 @@
|
||||
"""
|
||||
Classes designed to manage playlist
|
||||
"""
|
||||
from typing import Any, Dict, List
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from .track import SimplifiedTrack
|
||||
from .user import PublicUser
|
||||
|
||||
|
||||
class PlaylistTrack(BaseModel):
|
||||
"""
|
||||
Track entry as returned by the Playlist API
|
||||
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-playlisttrackobject
|
||||
"""
|
||||
|
||||
added_at: str
|
||||
added_by: PublicUser
|
||||
is_local: bool
|
||||
track: Optional[SimplifiedTrack]
|
||||
|
||||
|
||||
class SimplifiedPlaylist(BaseModel):
|
||||
"""
|
||||
Playlist as returned by the Playlist API
|
||||
@ -16,11 +30,11 @@ class SimplifiedPlaylist(BaseModel):
|
||||
"""
|
||||
|
||||
collaborative: bool
|
||||
description: str
|
||||
description: Optional[str]
|
||||
external_urls: Dict[str, str]
|
||||
href: str
|
||||
spotify_id: str = Field(alias="id")
|
||||
images: List[Dict[str, Any]]
|
||||
images: Optional[List[Dict[str, Any]]]
|
||||
name: str
|
||||
owner: PublicUser
|
||||
snapshot_id: str
|
||||
|
@ -1,13 +1,11 @@
|
||||
"""
|
||||
Classes designed to manage track-like objects
|
||||
"""
|
||||
from datetime import datetime
|
||||
from typing import Dict, List, Optional, Union
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from .album import SearchAlbum
|
||||
from .user import PublicUser
|
||||
|
||||
|
||||
class SimplifiedTrack(BaseModel):
|
||||
@ -18,7 +16,7 @@ class SimplifiedTrack(BaseModel):
|
||||
"""
|
||||
|
||||
artists: List[Dict[str, Union[Dict[str, str], str]]]
|
||||
available_markets: List[str]
|
||||
available_markets: Optional[List[str]]
|
||||
disc_number: int
|
||||
duration_ms: int
|
||||
explicit: bool
|
||||
@ -27,10 +25,10 @@ class SimplifiedTrack(BaseModel):
|
||||
spotify_id: str = Field(alias="id")
|
||||
is_local: bool
|
||||
is_playable: Optional[bool]
|
||||
linked_from: Optional[str]
|
||||
linked_from: Optional[Union[str, Dict[str, Union[str, Dict[str, str]]]]]
|
||||
name: str
|
||||
preview_url: Optional[str]
|
||||
restrictions: Optional[str]
|
||||
restrictions: Optional[Union[str, Dict[str, str]]]
|
||||
track_number: int
|
||||
spotify_type: str = Field(alias="type")
|
||||
uri: str
|
||||
@ -48,13 +46,12 @@ class Track(SimplifiedTrack):
|
||||
popularity: int
|
||||
|
||||
|
||||
class PlaylistTrack(BaseModel):
|
||||
class SavedTrack(BaseModel):
|
||||
"""
|
||||
Track as returned from a playlist
|
||||
Track as returned by the Library API
|
||||
|
||||
https://developer.spotify.com/documentation/web-api/reference/#object-savedtrackobject
|
||||
"""
|
||||
|
||||
added_at: datetime
|
||||
added_by: PublicUser
|
||||
is_local: bool
|
||||
primary_color: Optional[str]
|
||||
added_at: str
|
||||
track: Track
|
||||
|
Loading…
Reference in New Issue
Block a user