From 62550adcc1cc2b0d64c1bd7a5ab8ce990b7aa730 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Fri, 10 Sep 2021 00:25:35 -0400 Subject: [PATCH 1/2] Add the full Track object --- spotify_model/__init__.py | 3 ++- spotify_model/album.py | 2 +- spotify_model/track.py | 18 ++++++++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/spotify_model/__init__.py b/spotify_model/__init__.py index 12e9131..65e48d3 100644 --- a/spotify_model/__init__.py +++ b/spotify_model/__init__.py @@ -6,7 +6,7 @@ from .album import SearchAlbum, SimplifiedAlbum from .extra import ReleaseDatePrecision from .paging import Paging from .playlist import SimplifiedPlaylist -from .track import SimplifiedTrack +from .track import SimplifiedTrack, Track from .user import PrivateUser, PublicUser __all__ = [ @@ -18,4 +18,5 @@ __all__ = [ "SimplifiedAlbum", "SimplifiedPlaylist", "SimplifiedTrack", + "Track", ] diff --git a/spotify_model/album.py b/spotify_model/album.py index 528faca..16360a4 100644 --- a/spotify_model/album.py +++ b/spotify_model/album.py @@ -30,7 +30,7 @@ class SearchAlbum(BaseModel): class SimplifiedAlbum(SearchAlbum): """ - Album as returned by the Album API + Album as returned by non-album APIs https://developer.spotify.com/documentation/web-api/reference/#object-simplifiedalbumobject """ diff --git a/spotify_model/track.py b/spotify_model/track.py index 1e44a70..a12479d 100644 --- a/spotify_model/track.py +++ b/spotify_model/track.py @@ -5,10 +5,12 @@ from typing import Dict, List, Optional, Union from pydantic import BaseModel, Field +from .album import SimplifiedAlbum + class SimplifiedTrack(BaseModel): """ - Track as returned by the Tracks API + Track as returned by non-track APIs https://developer.spotify.com/documentation/web-api/reference/#object-simplifiedtrackobject """ @@ -28,5 +30,17 @@ class SimplifiedTrack(BaseModel): preview_url: Optional[str] restrictions: Optional[str] track_number: int - type_: str = Field(alias="type") + spotify_type: str = Field(alias="type") uri: str + + +class Track(SimplifiedTrack): + """ + Track as returned by the Tracks APIs + + https://developer.spotify.com/documentation/web-api/reference/#object-trackobject + """ + + album: SimplifiedAlbum + external_ids: Dict[str, str] + popularity: int -- 2.45.2 From b65ce11c3be8634bef705bda412030b5a247fd60 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Fri, 10 Sep 2021 22:11:03 -0400 Subject: [PATCH 2/2] Test that label playlists are working --- spotify_model/__init__.py | 3 ++- spotify_model/track.py | 18 ++++++++++++++++-- spotify_model/user.py | 4 ++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/spotify_model/__init__.py b/spotify_model/__init__.py index 65e48d3..3eae198 100644 --- a/spotify_model/__init__.py +++ b/spotify_model/__init__.py @@ -6,11 +6,12 @@ from .album import SearchAlbum, SimplifiedAlbum from .extra import ReleaseDatePrecision from .paging import Paging from .playlist import SimplifiedPlaylist -from .track import SimplifiedTrack, Track +from .track import PlaylistTrack, SimplifiedTrack, Track from .user import PrivateUser, PublicUser __all__ = [ "Paging", + "PlaylistTrack", "PrivateUser", "PublicUser", "ReleaseDatePrecision", diff --git a/spotify_model/track.py b/spotify_model/track.py index a12479d..8e8d99a 100644 --- a/spotify_model/track.py +++ b/spotify_model/track.py @@ -1,11 +1,13 @@ """ 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 SimplifiedAlbum +from .album import SearchAlbum +from .user import PublicUser class SimplifiedTrack(BaseModel): @@ -41,6 +43,18 @@ class Track(SimplifiedTrack): https://developer.spotify.com/documentation/web-api/reference/#object-trackobject """ - album: SimplifiedAlbum + album: SearchAlbum external_ids: Dict[str, str] popularity: int + + +class PlaylistTrack(BaseModel): + """ + Track as returned from a playlist + """ + + added_at: datetime + added_by: PublicUser + is_local: bool + primary_color: Optional[str] + track: Track diff --git a/spotify_model/user.py b/spotify_model/user.py index d71f233..8ae25e7 100644 --- a/spotify_model/user.py +++ b/spotify_model/user.py @@ -1,7 +1,7 @@ """ Classes for managing users """ -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field @@ -13,7 +13,7 @@ class PublicUser(BaseModel): https://developer.spotify.com/documentation/web-api/reference/#object-publicuserobject """ - display_name: str + display_name: Optional[str] external_urls: Dict[str, str] href: str spotify_id: str = Field(alias="id") -- 2.45.2