From 1dd79fa4f8e143538b3cbb543e068b0ecb1dd308 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Wed, 8 Sep 2021 21:26:55 -0400 Subject: [PATCH] Add more models to get some of the playlists I wanted to create going --- .pylintrc | 3 ++- spotify_model/__init__.py | 5 +++++ spotify_model/album.py | 2 +- spotify_model/playlist.py | 29 +++++++++++++++++++++++++++++ spotify_model/user.py | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 spotify_model/playlist.py create mode 100644 spotify_model/user.py diff --git a/.pylintrc b/.pylintrc index 5e019e6..a123761 100644 --- a/.pylintrc +++ b/.pylintrc @@ -155,7 +155,8 @@ disable=print-statement, comprehension-escape, # Manually added import-error, - too-few-public-methods + too-few-public-methods, + duplicate-code # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/spotify_model/__init__.py b/spotify_model/__init__.py index 238720f..12e9131 100644 --- a/spotify_model/__init__.py +++ b/spotify_model/__init__.py @@ -5,12 +5,17 @@ Client-agnostic model for marshalling Spotify data types. from .album import SearchAlbum, SimplifiedAlbum from .extra import ReleaseDatePrecision from .paging import Paging +from .playlist import SimplifiedPlaylist from .track import SimplifiedTrack +from .user import PrivateUser, PublicUser __all__ = [ "Paging", + "PrivateUser", + "PublicUser", "ReleaseDatePrecision", "SearchAlbum", "SimplifiedAlbum", + "SimplifiedPlaylist", "SimplifiedTrack", ] diff --git a/spotify_model/album.py b/spotify_model/album.py index a6b1261..528faca 100644 --- a/spotify_model/album.py +++ b/spotify_model/album.py @@ -24,7 +24,7 @@ class SearchAlbum(BaseModel): release_date: str release_date_precision: ReleaseDatePrecision total_tracks: int - type_: str = Field(alias="type") + spotify_type: str = Field(alias="type") uri: str diff --git a/spotify_model/playlist.py b/spotify_model/playlist.py new file mode 100644 index 0000000..f65f439 --- /dev/null +++ b/spotify_model/playlist.py @@ -0,0 +1,29 @@ +""" +Classes designed to manage playlist +""" +from typing import Any, Dict, List + +from pydantic import BaseModel, Field + +from .user import PublicUser + + +class SimplifiedPlaylist(BaseModel): + """ + Playlist as returned by the Playlist API + + https://developer.spotify.com/documentation/web-api/reference/#object-simplifiedplaylistobject + """ + + collaborative: bool + description: str + external_urls: Dict[str, str] + href: str + spotify_id: str = Field(alias="id") + images: List[Dict[str, Any]] + name: str + owner: PublicUser + snapshot_id: str + tracks: Dict[str, Any] + spotify_type: str = Field(alias="type") + uri: str diff --git a/spotify_model/user.py b/spotify_model/user.py new file mode 100644 index 0000000..d71f233 --- /dev/null +++ b/spotify_model/user.py @@ -0,0 +1,32 @@ +""" +Classes for managing users +""" +from typing import Any, Dict, List + +from pydantic import BaseModel, Field + + +class PublicUser(BaseModel): + """ + Public information associated with a user + + https://developer.spotify.com/documentation/web-api/reference/#object-publicuserobject + """ + + display_name: str + external_urls: Dict[str, str] + href: str + spotify_id: str = Field(alias="id") + spotify_type: str = Field(alias="type") + uri: str + + +class PrivateUser(PublicUser): + """ + Private information associated with a user + + https://developer.spotify.com/documentation/web-api/reference/#object-privateuserobject + """ + + followers: Dict[str, Any] + images: List[Dict[str, str]]