spotifywebapiPython 1.0.18__py3-none-any.whl → 1.0.20__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of spotifywebapiPython might be problematic. Click here for more details.
- {spotifywebapiPython-1.0.18.dist-info → spotifywebapiPython-1.0.20.dist-info}/METADATA +1 -1
- {spotifywebapiPython-1.0.18.dist-info → spotifywebapiPython-1.0.20.dist-info}/RECORD +41 -41
- spotifywebapipython/const.py +1 -1
- spotifywebapipython/docs/__init__.html +20 -2
- spotifywebapipython/docs/index.html +2 -2
- spotifywebapipython/docs/search.js +1 -1
- spotifywebapipython/docs/spotifywebapiPython/const.html +3 -3
- spotifywebapipython/docs/spotifywebapiPython/saappmessages.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/sautils.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifyapierror.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifyapimessage.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifyauthtoken.html +3 -3
- spotifywebapipython/docs/spotifywebapiPython/spotifyclient.html +4 -4
- spotifywebapipython/docs/spotifywebapiPython/spotifywebapiauthenticationerror.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifywebapierror.html +2 -2
- spotifywebapipython/models/albumpagesaved.py +15 -0
- spotifywebapipython/models/albumsimplified.py +13 -2
- spotifywebapipython/models/artist.py +11 -0
- spotifywebapipython/models/artistsimplified.py +2 -2
- spotifywebapipython/models/audiobooksimplified.py +13 -4
- spotifywebapipython/models/category.py +13 -2
- spotifywebapipython/models/chaptersimplified.py +13 -2
- spotifywebapipython/models/episodepagesaved.py +15 -0
- spotifywebapipython/models/episodesimplified.py +13 -2
- spotifywebapipython/models/playhistorypage.py +15 -0
- spotifywebapipython/models/playlist.py +14 -0
- spotifywebapipython/models/playlistpage.py +15 -0
- spotifywebapipython/models/playlistsimplified.py +13 -2
- spotifywebapipython/models/playlisttrack.py +12 -0
- spotifywebapipython/models/showpagesaved.py +15 -0
- spotifywebapipython/models/showsimplified.py +13 -2
- spotifywebapipython/models/track.py +11 -0
- spotifywebapipython/models/trackpagesaved.py +15 -0
- spotifywebapipython/models/trackrecommendations.py +5 -5
- spotifywebapipython/models/tracksaved.py +4 -4
- spotifywebapipython/models/tracksimplified.py +12 -2
- spotifywebapipython/models/userprofilesimplified.py +11 -0
- spotifywebapipython/spotifyauthtoken.py +1 -1
- {spotifywebapiPython-1.0.18.dist-info → spotifywebapiPython-1.0.20.dist-info}/LICENSE +0 -0
- {spotifywebapiPython-1.0.18.dist-info → spotifywebapiPython-1.0.20.dist-info}/WHEEL +0 -0
- {spotifywebapiPython-1.0.18.dist-info → spotifywebapiPython-1.0.20.dist-info}/top_level.txt +0 -0
|
@@ -94,7 +94,7 @@ class EpisodeSimplified:
|
|
|
94
94
|
def __eq__(self, other):
|
|
95
95
|
try:
|
|
96
96
|
return self.Name == other.Name
|
|
97
|
-
except Exception
|
|
97
|
+
except Exception:
|
|
98
98
|
if (isinstance(self, EpisodeSimplified )) and (isinstance(other, EpisodeSimplified )):
|
|
99
99
|
return self.Name == other.Name
|
|
100
100
|
return False
|
|
@@ -102,7 +102,7 @@ class EpisodeSimplified:
|
|
|
102
102
|
def __lt__(self, other):
|
|
103
103
|
try:
|
|
104
104
|
return self.Name < other.Name
|
|
105
|
-
except Exception
|
|
105
|
+
except Exception:
|
|
106
106
|
if (isinstance(self, EpisodeSimplified )) and (isinstance(other, EpisodeSimplified )):
|
|
107
107
|
return self.Name < other.Name
|
|
108
108
|
return False
|
|
@@ -193,6 +193,17 @@ class EpisodeSimplified:
|
|
|
193
193
|
return self._Images
|
|
194
194
|
|
|
195
195
|
|
|
196
|
+
@property
|
|
197
|
+
def ImageUrl(self) -> str:
|
|
198
|
+
"""
|
|
199
|
+
Gets the first image url in the `Images` list, if images are defined;
|
|
200
|
+
otherwise, null.
|
|
201
|
+
"""
|
|
202
|
+
if len(self._Images) > 0:
|
|
203
|
+
return self._Images[0].Url
|
|
204
|
+
return None
|
|
205
|
+
|
|
206
|
+
|
|
196
207
|
@property
|
|
197
208
|
def IsExternallyHosted(self) -> bool:
|
|
198
209
|
"""
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
from ..sautils import export
|
|
5
5
|
from .pageobject import PageObject
|
|
6
6
|
from .playhistory import PlayHistory
|
|
7
|
+
from .track import Track
|
|
7
8
|
|
|
8
9
|
@export
|
|
9
10
|
class PlayHistoryPage(PageObject):
|
|
@@ -56,6 +57,20 @@ class PlayHistoryPage(PageObject):
|
|
|
56
57
|
return self._Items
|
|
57
58
|
|
|
58
59
|
|
|
60
|
+
def GetTracks(self) -> list[Track]:
|
|
61
|
+
"""
|
|
62
|
+
Gets a list of all tracks contained in the underlying `Items` list.
|
|
63
|
+
|
|
64
|
+
This is a convenience method so one does not have to loop through the `Items`
|
|
65
|
+
array of PlayHistory objects to get the list of tracks.
|
|
66
|
+
"""
|
|
67
|
+
result:list[Track] = []
|
|
68
|
+
item:PlayHistory
|
|
69
|
+
for item in self._Items:
|
|
70
|
+
result.append(item.Track)
|
|
71
|
+
return result
|
|
72
|
+
|
|
73
|
+
|
|
59
74
|
def ToString(self, includeItems:bool=False) -> str:
|
|
60
75
|
"""
|
|
61
76
|
Returns a displayable string representation of the class.
|
|
@@ -5,6 +5,7 @@ from ..sautils import export
|
|
|
5
5
|
from .followers import Followers
|
|
6
6
|
from .playlistpage import PlaylistPage
|
|
7
7
|
from .playlistsimplified import PlaylistSimplified
|
|
8
|
+
from .track import Track
|
|
8
9
|
|
|
9
10
|
@export
|
|
10
11
|
class Playlist(PlaylistSimplified):
|
|
@@ -70,6 +71,19 @@ class Playlist(PlaylistSimplified):
|
|
|
70
71
|
return self._Tracks
|
|
71
72
|
|
|
72
73
|
|
|
74
|
+
def GetTracks(self) -> list[Track]:
|
|
75
|
+
"""
|
|
76
|
+
Gets a list of all tracks contained in the underlying `Items` list.
|
|
77
|
+
|
|
78
|
+
This is a convenience method so one does not have to loop through the `Items`
|
|
79
|
+
array of PlaylistPage objects to get the list of tracks.
|
|
80
|
+
"""
|
|
81
|
+
result:list[Track] = []
|
|
82
|
+
if self._Tracks is not None:
|
|
83
|
+
result = self._Tracks.GetTracks()
|
|
84
|
+
return result
|
|
85
|
+
|
|
86
|
+
|
|
73
87
|
def ToDictionary(self) -> dict:
|
|
74
88
|
"""
|
|
75
89
|
Returns a dictionary representation of the class.
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
from ..sautils import export
|
|
5
5
|
from .pageobject import PageObject
|
|
6
6
|
from .playlisttrack import PlaylistTrack
|
|
7
|
+
from .track import Track
|
|
7
8
|
|
|
8
9
|
@export
|
|
9
10
|
class PlaylistPage(PageObject):
|
|
@@ -56,6 +57,20 @@ class PlaylistPage(PageObject):
|
|
|
56
57
|
return self._Items
|
|
57
58
|
|
|
58
59
|
|
|
60
|
+
def GetTracks(self) -> list[Track]:
|
|
61
|
+
"""
|
|
62
|
+
Gets a list of all tracks contained in the underlying `Items` list.
|
|
63
|
+
|
|
64
|
+
This is a convenience method so one does not have to loop through the `Items`
|
|
65
|
+
array of PlaylistTrack objects to get the list of tracks.
|
|
66
|
+
"""
|
|
67
|
+
result:list[Track] = []
|
|
68
|
+
item:PlaylistTrack
|
|
69
|
+
for item in self._Items:
|
|
70
|
+
result.append(item.Track)
|
|
71
|
+
return result
|
|
72
|
+
|
|
73
|
+
|
|
59
74
|
def ToString(self, includeItems:bool=False) -> str:
|
|
60
75
|
"""
|
|
61
76
|
Returns a displayable string representation of the class.
|
|
@@ -85,7 +85,7 @@ class PlaylistSimplified:
|
|
|
85
85
|
def __eq__(self, other):
|
|
86
86
|
try:
|
|
87
87
|
return self.Name == other.Name
|
|
88
|
-
except Exception
|
|
88
|
+
except Exception:
|
|
89
89
|
if (isinstance(self, PlaylistSimplified )) and (isinstance(other, PlaylistSimplified )):
|
|
90
90
|
return self.Name == other.Name
|
|
91
91
|
return False
|
|
@@ -93,7 +93,7 @@ class PlaylistSimplified:
|
|
|
93
93
|
def __lt__(self, other):
|
|
94
94
|
try:
|
|
95
95
|
return self.Name < other.Name
|
|
96
|
-
except Exception
|
|
96
|
+
except Exception:
|
|
97
97
|
if (isinstance(self, PlaylistSimplified )) and (isinstance(other, PlaylistSimplified )):
|
|
98
98
|
return self.Name < other.Name
|
|
99
99
|
return False
|
|
@@ -155,6 +155,17 @@ class PlaylistSimplified:
|
|
|
155
155
|
return self._Images
|
|
156
156
|
|
|
157
157
|
|
|
158
|
+
@property
|
|
159
|
+
def ImageUrl(self) -> str:
|
|
160
|
+
"""
|
|
161
|
+
Gets the first image url in the `Images` list, if images are defined;
|
|
162
|
+
otherwise, null.
|
|
163
|
+
"""
|
|
164
|
+
if len(self._Images) > 0:
|
|
165
|
+
return self._Images[0].Url
|
|
166
|
+
return None
|
|
167
|
+
|
|
168
|
+
|
|
158
169
|
@property
|
|
159
170
|
def Name(self) -> str:
|
|
160
171
|
"""
|
|
@@ -72,6 +72,18 @@ class PlaylistTrack:
|
|
|
72
72
|
return self._AddedBy
|
|
73
73
|
|
|
74
74
|
|
|
75
|
+
@property
|
|
76
|
+
def ImageUrl(self) -> str:
|
|
77
|
+
"""
|
|
78
|
+
Gets the first image url in the underlying track album `Images` list, if images are defined;
|
|
79
|
+
otherwise, null.
|
|
80
|
+
"""
|
|
81
|
+
if self._Track is not None:
|
|
82
|
+
if self._Track.Album is not None:
|
|
83
|
+
return self._Track.Album.ImageUrl
|
|
84
|
+
return None
|
|
85
|
+
|
|
86
|
+
|
|
75
87
|
@property
|
|
76
88
|
def IsLocal(self) -> bool:
|
|
77
89
|
"""
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# our package imports.
|
|
4
4
|
from ..sautils import export
|
|
5
|
+
from .show import Show
|
|
5
6
|
from .showsaved import ShowSaved
|
|
6
7
|
from .pageobject import PageObject
|
|
7
8
|
|
|
@@ -56,6 +57,20 @@ class ShowPageSaved(PageObject):
|
|
|
56
57
|
return self._Items
|
|
57
58
|
|
|
58
59
|
|
|
60
|
+
def GetShows(self) -> list[Show]:
|
|
61
|
+
"""
|
|
62
|
+
Gets a list of all shows contained in the underlying `Items` list.
|
|
63
|
+
|
|
64
|
+
This is a convenience method so one does not have to loop through the `Items`
|
|
65
|
+
array of ShowSaved objects to get the list of shows.
|
|
66
|
+
"""
|
|
67
|
+
result:list[Show] = []
|
|
68
|
+
item:ShowSaved
|
|
69
|
+
for item in self._Items:
|
|
70
|
+
result.append(item.Show)
|
|
71
|
+
return result
|
|
72
|
+
|
|
73
|
+
|
|
59
74
|
def ToString(self, includeItems:bool=False) -> str:
|
|
60
75
|
"""
|
|
61
76
|
Returns a displayable string representation of the class.
|
|
@@ -86,7 +86,7 @@ class ShowSimplified:
|
|
|
86
86
|
def __eq__(self, other):
|
|
87
87
|
try:
|
|
88
88
|
return self.Name == other.Name
|
|
89
|
-
except Exception
|
|
89
|
+
except Exception:
|
|
90
90
|
if (isinstance(self, ShowSimplified )) and (isinstance(other, ShowSimplified )):
|
|
91
91
|
return self.Name == other.Name
|
|
92
92
|
return False
|
|
@@ -94,7 +94,7 @@ class ShowSimplified:
|
|
|
94
94
|
def __lt__(self, other):
|
|
95
95
|
try:
|
|
96
96
|
return self.Name < other.Name
|
|
97
|
-
except Exception
|
|
97
|
+
except Exception:
|
|
98
98
|
if (isinstance(self, ShowSimplified )) and (isinstance(other, ShowSimplified )):
|
|
99
99
|
return self.Name < other.Name
|
|
100
100
|
return False
|
|
@@ -174,6 +174,17 @@ class ShowSimplified:
|
|
|
174
174
|
return self._Images
|
|
175
175
|
|
|
176
176
|
|
|
177
|
+
@property
|
|
178
|
+
def ImageUrl(self) -> str:
|
|
179
|
+
"""
|
|
180
|
+
Gets the first image url in the `Images` list, if images are defined;
|
|
181
|
+
otherwise, null.
|
|
182
|
+
"""
|
|
183
|
+
if len(self._Images) > 0:
|
|
184
|
+
return self._Images[0].Url
|
|
185
|
+
return None
|
|
186
|
+
|
|
187
|
+
|
|
177
188
|
@property
|
|
178
189
|
def IsExternallyHosted(self) -> bool:
|
|
179
190
|
"""
|
|
@@ -72,6 +72,17 @@ class Track(TrackSimplified):
|
|
|
72
72
|
return self._ExternalIds
|
|
73
73
|
|
|
74
74
|
|
|
75
|
+
@property
|
|
76
|
+
def ImageUrl(self) -> str:
|
|
77
|
+
"""
|
|
78
|
+
Gets the first image url in the album `Images` list, if images are defined;
|
|
79
|
+
otherwise, null.
|
|
80
|
+
"""
|
|
81
|
+
if self._Album is not None:
|
|
82
|
+
return self._Album.ImageUrl
|
|
83
|
+
return None
|
|
84
|
+
|
|
85
|
+
|
|
75
86
|
@property
|
|
76
87
|
def Popularity(self) -> int:
|
|
77
88
|
"""
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# our package imports.
|
|
4
4
|
from ..sautils import export
|
|
5
|
+
from .track import Track
|
|
5
6
|
from .tracksaved import TrackSaved
|
|
6
7
|
from .pageobject import PageObject
|
|
7
8
|
|
|
@@ -56,6 +57,20 @@ class TrackPageSaved(PageObject):
|
|
|
56
57
|
return self._Items
|
|
57
58
|
|
|
58
59
|
|
|
60
|
+
def GetTracks(self) -> list[Track]:
|
|
61
|
+
"""
|
|
62
|
+
Gets a list of all tracks contained in the underlying `Items` list.
|
|
63
|
+
|
|
64
|
+
This is a convenience method so one does not have to loop through the `Items`
|
|
65
|
+
array of TrackSaved objects to get the list of tracks.
|
|
66
|
+
"""
|
|
67
|
+
result:list[Track] = []
|
|
68
|
+
item:TrackSaved
|
|
69
|
+
for item in self._Items:
|
|
70
|
+
result.append(item.Track)
|
|
71
|
+
return result
|
|
72
|
+
|
|
73
|
+
|
|
59
74
|
def ToString(self, includeItems:bool=False) -> str:
|
|
60
75
|
"""
|
|
61
76
|
Returns a displayable string representation of the class.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# our package imports.
|
|
4
4
|
from ..sautils import export
|
|
5
5
|
from .recommendationseed import RecommendationSeed
|
|
6
|
-
from .
|
|
6
|
+
from .track import Track
|
|
7
7
|
|
|
8
8
|
@export
|
|
9
9
|
class TrackRecommendations:
|
|
@@ -21,7 +21,7 @@ class TrackRecommendations:
|
|
|
21
21
|
attributes; otherwise, None to not load attributes.
|
|
22
22
|
"""
|
|
23
23
|
self._Seeds:list[RecommendationSeed] = []
|
|
24
|
-
self._Tracks:list[
|
|
24
|
+
self._Tracks:list[Track] = []
|
|
25
25
|
|
|
26
26
|
if (root is None):
|
|
27
27
|
|
|
@@ -36,7 +36,7 @@ class TrackRecommendations:
|
|
|
36
36
|
|
|
37
37
|
items:list = root.get('tracks',[])
|
|
38
38
|
for item in items:
|
|
39
|
-
self._Tracks.append(
|
|
39
|
+
self._Tracks.append(Track(root=item))
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def __repr__(self) -> str:
|
|
@@ -56,9 +56,9 @@ class TrackRecommendations:
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
@property
|
|
59
|
-
def Tracks(self) -> list[
|
|
59
|
+
def Tracks(self) -> list[Track]:
|
|
60
60
|
"""
|
|
61
|
-
A list of
|
|
61
|
+
A list of Track objects, ordered according to the parameters supplied.
|
|
62
62
|
on the `GetTrackRecommendations` method.
|
|
63
63
|
"""
|
|
64
64
|
return self._Tracks
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# our package imports.
|
|
4
4
|
from ..sautils import export
|
|
5
|
-
from .
|
|
5
|
+
from .track import Track
|
|
6
6
|
|
|
7
7
|
@export
|
|
8
8
|
class TrackSaved:
|
|
@@ -19,8 +19,8 @@ class TrackSaved:
|
|
|
19
19
|
Spotify Web API JSON response in dictionary format, used to load object
|
|
20
20
|
attributes; otherwise, None to not load attributes.
|
|
21
21
|
"""
|
|
22
|
-
self._Track:TrackSimplified = None
|
|
23
22
|
self._AddedAt:str = None
|
|
23
|
+
self._Track:Track = None
|
|
24
24
|
|
|
25
25
|
if (root is None):
|
|
26
26
|
|
|
@@ -33,7 +33,7 @@ class TrackSaved:
|
|
|
33
33
|
# process all collections and objects.
|
|
34
34
|
item:dict = root.get('track',None)
|
|
35
35
|
if item is not None:
|
|
36
|
-
self._Track =
|
|
36
|
+
self._Track = Track(root=item)
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
def __repr__(self) -> str:
|
|
@@ -58,7 +58,7 @@ class TrackSaved:
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
@property
|
|
61
|
-
def Track(self) ->
|
|
61
|
+
def Track(self) -> Track:
|
|
62
62
|
"""
|
|
63
63
|
Information about the track.
|
|
64
64
|
"""
|
|
@@ -89,7 +89,7 @@ class TrackSimplified:
|
|
|
89
89
|
def __eq__(self, other):
|
|
90
90
|
try:
|
|
91
91
|
return self.Name == other.Name
|
|
92
|
-
except Exception
|
|
92
|
+
except Exception:
|
|
93
93
|
if (isinstance(self, TrackSimplified )) and (isinstance(other, TrackSimplified )):
|
|
94
94
|
return self.Name == other.Name
|
|
95
95
|
return False
|
|
@@ -97,7 +97,7 @@ class TrackSimplified:
|
|
|
97
97
|
def __lt__(self, other):
|
|
98
98
|
try:
|
|
99
99
|
return self.Name < other.Name
|
|
100
|
-
except Exception
|
|
100
|
+
except Exception:
|
|
101
101
|
if (isinstance(self, TrackSimplified )) and (isinstance(other, TrackSimplified )):
|
|
102
102
|
return self.Name < other.Name
|
|
103
103
|
return False
|
|
@@ -167,6 +167,16 @@ class TrackSimplified:
|
|
|
167
167
|
return self._Id
|
|
168
168
|
|
|
169
169
|
|
|
170
|
+
@property
|
|
171
|
+
def ImageUrl(self) -> str:
|
|
172
|
+
"""
|
|
173
|
+
Always returns null, as tracks currently do not support images.
|
|
174
|
+
|
|
175
|
+
Added for compatibility with other objects.
|
|
176
|
+
"""
|
|
177
|
+
return None
|
|
178
|
+
|
|
179
|
+
|
|
170
180
|
@property
|
|
171
181
|
def IsLocal(self) -> bool:
|
|
172
182
|
"""
|
|
@@ -129,6 +129,17 @@ class UserProfileSimplified:
|
|
|
129
129
|
return self._Images
|
|
130
130
|
|
|
131
131
|
|
|
132
|
+
@property
|
|
133
|
+
def ImageUrl(self) -> str:
|
|
134
|
+
"""
|
|
135
|
+
Gets the first image url in the `Images` list, if images are defined;
|
|
136
|
+
otherwise, null.
|
|
137
|
+
"""
|
|
138
|
+
if len(self._Images) > 0:
|
|
139
|
+
return self._Images[0].Url
|
|
140
|
+
return None
|
|
141
|
+
|
|
142
|
+
|
|
132
143
|
@property
|
|
133
144
|
def Type(self) -> str:
|
|
134
145
|
"""
|
|
@@ -146,7 +146,7 @@ class SpotifyAuthToken:
|
|
|
146
146
|
"""
|
|
147
147
|
Returns the value portion of the authorization header, in the form of '{tokentype} {token}'.
|
|
148
148
|
|
|
149
|
-
Example: `Bearer
|
|
149
|
+
Example: `Bearer {token value ...}'
|
|
150
150
|
"""
|
|
151
151
|
return '{tokentype} {token}'.format(tokentype=self.TokenType, token=self.AccessToken)
|
|
152
152
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|