spotifywebapiPython 1.0.242__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.
Files changed (138) hide show
  1. spotifywebapipython/__init__.py +35 -0
  2. spotifywebapipython/const.py +114 -0
  3. spotifywebapipython/docs/__init__.html +2156 -0
  4. spotifywebapipython/docs/codecopy.js +70 -0
  5. spotifywebapipython/docs/index.html +514 -0
  6. spotifywebapipython/docs/search.js +46 -0
  7. spotifywebapipython/docs/spotifywebapipython/const.html +636 -0
  8. spotifywebapipython/docs/spotifywebapipython/saappmessages.html +540 -0
  9. spotifywebapipython/docs/spotifywebapipython/sautils.html +620 -0
  10. spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html +341 -0
  11. spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html +598 -0
  12. spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html +612 -0
  13. spotifywebapipython/docs/spotifywebapipython/spotifyclient.html +16557 -0
  14. spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html +518 -0
  15. spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html +421 -0
  16. spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html +400 -0
  17. spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html +635 -0
  18. spotifywebapipython/docs/spotifywebapipython.ico +0 -0
  19. spotifywebapipython/docs/spotifywebapipython_OLD.ico +0 -0
  20. spotifywebapipython/models/__init__.py +121 -0
  21. spotifywebapipython/models/album.py +170 -0
  22. spotifywebapipython/models/albumpagesaved.py +85 -0
  23. spotifywebapipython/models/albumpagesimplified.py +88 -0
  24. spotifywebapipython/models/albumsaved.py +102 -0
  25. spotifywebapipython/models/albumsimplified.py +308 -0
  26. spotifywebapipython/models/artist.py +146 -0
  27. spotifywebapipython/models/artistinfo.py +282 -0
  28. spotifywebapipython/models/artistinfotourevent.py +127 -0
  29. spotifywebapipython/models/artistpage.py +70 -0
  30. spotifywebapipython/models/artistsimplified.py +163 -0
  31. spotifywebapipython/models/audiobook.py +87 -0
  32. spotifywebapipython/models/audiobookpagesimplified.py +88 -0
  33. spotifywebapipython/models/audiobooksimplified.py +362 -0
  34. spotifywebapipython/models/audiofeatures.py +333 -0
  35. spotifywebapipython/models/author.py +67 -0
  36. spotifywebapipython/models/category.py +168 -0
  37. spotifywebapipython/models/categorypage.py +70 -0
  38. spotifywebapipython/models/chapter.py +84 -0
  39. spotifywebapipython/models/chapterpagesimplified.py +88 -0
  40. spotifywebapipython/models/chaptersimplified.py +387 -0
  41. spotifywebapipython/models/context.py +113 -0
  42. spotifywebapipython/models/copyright.py +79 -0
  43. spotifywebapipython/models/device.py +301 -0
  44. spotifywebapipython/models/episode.py +84 -0
  45. spotifywebapipython/models/episodepagesaved.py +85 -0
  46. spotifywebapipython/models/episodepagesimplified.py +88 -0
  47. spotifywebapipython/models/episodesaved.py +99 -0
  48. spotifywebapipython/models/episodesimplified.py +370 -0
  49. spotifywebapipython/models/explicitcontent.py +80 -0
  50. spotifywebapipython/models/externalids.py +91 -0
  51. spotifywebapipython/models/externalurls.py +104 -0
  52. spotifywebapipython/models/followers.py +81 -0
  53. spotifywebapipython/models/imageobject.py +193 -0
  54. spotifywebapipython/models/imagevibrantcolors.py +182 -0
  55. spotifywebapipython/models/linkedfrom.py +165 -0
  56. spotifywebapipython/models/narrator.py +67 -0
  57. spotifywebapipython/models/owner.py +162 -0
  58. spotifywebapipython/models/pageobject.py +343 -0
  59. spotifywebapipython/models/playeractions.py +196 -0
  60. spotifywebapipython/models/playerlastplayedinfo.py +334 -0
  61. spotifywebapipython/models/playerplaystate.py +467 -0
  62. spotifywebapipython/models/playerqueueinfo.py +207 -0
  63. spotifywebapipython/models/playhistory.py +136 -0
  64. spotifywebapipython/models/playhistorypage.py +85 -0
  65. spotifywebapipython/models/playlist.py +125 -0
  66. spotifywebapipython/models/playlistpage.py +85 -0
  67. spotifywebapipython/models/playlistpagesimplified.py +107 -0
  68. spotifywebapipython/models/playlistsimplified.py +334 -0
  69. spotifywebapipython/models/playlisttrack.py +143 -0
  70. spotifywebapipython/models/playlisttracksummary.py +80 -0
  71. spotifywebapipython/models/recommendationseed.py +135 -0
  72. spotifywebapipython/models/restrictions.py +86 -0
  73. spotifywebapipython/models/resumepoint.py +79 -0
  74. spotifywebapipython/models/searchresponse.py +391 -0
  75. spotifywebapipython/models/searchresultbase.py +299 -0
  76. spotifywebapipython/models/show.py +87 -0
  77. spotifywebapipython/models/showpagesaved.py +85 -0
  78. spotifywebapipython/models/showpagesimplified.py +88 -0
  79. spotifywebapipython/models/showsaved.py +99 -0
  80. spotifywebapipython/models/showsimplified.py +320 -0
  81. spotifywebapipython/models/spotifyconnectdevice.py +321 -0
  82. spotifywebapipython/models/spotifyconnectdevices.py +441 -0
  83. spotifywebapipython/models/track.py +142 -0
  84. spotifywebapipython/models/trackpage.py +110 -0
  85. spotifywebapipython/models/trackpagesaved.py +85 -0
  86. spotifywebapipython/models/trackpagesimplified.py +88 -0
  87. spotifywebapipython/models/trackrecommendations.py +88 -0
  88. spotifywebapipython/models/tracksaved.py +99 -0
  89. spotifywebapipython/models/tracksimplified.py +398 -0
  90. spotifywebapipython/models/userprofile.py +184 -0
  91. spotifywebapipython/models/userprofilesimplified.py +206 -0
  92. spotifywebapipython/models/zeroconfdiscoveryresult.py +592 -0
  93. spotifywebapipython/models/zeroconfproperty.py +93 -0
  94. spotifywebapipython/oauthcli/__init__.py +7 -0
  95. spotifywebapipython/oauthcli/authclient.py +1229 -0
  96. spotifywebapipython/saappmessages.py +86 -0
  97. spotifywebapipython/sautils.py +285 -0
  98. spotifywebapipython/spotifyapierror.py +66 -0
  99. spotifywebapipython/spotifyapimessage.py +269 -0
  100. spotifywebapipython/spotifyauthtoken.py +264 -0
  101. spotifywebapipython/spotifyclient.py +17885 -0
  102. spotifywebapipython/spotifyconnect/__init__.py +19 -0
  103. spotifywebapipython/spotifyconnect/spotifyconnectdeviceeventargs.py +67 -0
  104. spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py +2564 -0
  105. spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastapptask.py +467 -0
  106. spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastcontroller.py +701 -0
  107. spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastlistener.py +359 -0
  108. spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastmultizonelistener.py +212 -0
  109. spotifywebapipython/spotifyconnect/spotifyconnectzeroconfexceptions.py +20 -0
  110. spotifywebapipython/spotifyconnect/spotifyconnectzeroconflistener.py +335 -0
  111. spotifywebapipython/spotifydiscovery.py +473 -0
  112. spotifywebapipython/spotifymediatypes.py +53 -0
  113. spotifywebapipython/spotifywebapiauthenticationerror.py +122 -0
  114. spotifywebapipython/spotifywebapierror.py +106 -0
  115. spotifywebapipython/spotifywebplayertoken.py +743 -0
  116. spotifywebapipython/vibrant/__init__.py +17 -0
  117. spotifywebapipython/vibrant/generator.py +261 -0
  118. spotifywebapipython/vibrant/image.py +100 -0
  119. spotifywebapipython/vibrant/main.py +34 -0
  120. spotifywebapipython/vibrant/models.py +93 -0
  121. spotifywebapipython/vibrant/utils.py +56 -0
  122. spotifywebapipython/zeroconfapi/__init__.py +23 -0
  123. spotifywebapipython/zeroconfapi/authenticationtypes.py +38 -0
  124. spotifywebapipython/zeroconfapi/blobbuilder.py +370 -0
  125. spotifywebapipython/zeroconfapi/credentials.py +37 -0
  126. spotifywebapipython/zeroconfapi/cryptodiffiehellman.py +89 -0
  127. spotifywebapipython/zeroconfapi/helpers.py +64 -0
  128. spotifywebapipython/zeroconfapi/spotifyzeroconfapierror.py +108 -0
  129. spotifywebapipython/zeroconfapi/zeroconfconnect.py +1327 -0
  130. spotifywebapipython/zeroconfapi/zeroconfgetinfo.py +572 -0
  131. spotifywebapipython/zeroconfapi/zeroconfgetinfoalias.py +109 -0
  132. spotifywebapipython/zeroconfapi/zeroconfgetinfodrmmediaformat.py +90 -0
  133. spotifywebapipython/zeroconfapi/zeroconfresponse.py +195 -0
  134. spotifywebapipython-1.0.242.dist-info/LICENSE +22 -0
  135. spotifywebapipython-1.0.242.dist-info/METADATA +219 -0
  136. spotifywebapipython-1.0.242.dist-info/RECORD +138 -0
  137. spotifywebapipython-1.0.242.dist-info/WHEEL +5 -0
  138. spotifywebapipython-1.0.242.dist-info/top_level.txt +1 -0
@@ -0,0 +1,90 @@
1
+ # external package imports.
2
+
3
+ # our package imports.
4
+ from ..sautils import export
5
+
6
+ @export
7
+ class ZeroconfGetInfoDrmMediaFormat:
8
+ """
9
+ Spotify Zeroconf API GetInfo DRM Media Format object.
10
+ """
11
+
12
+ def __init__(self, root:dict=None) -> None:
13
+ """
14
+ Initializes a new instance of the class.
15
+
16
+ Args:
17
+ root (dict):
18
+ Spotify Web API JSON response in dictionary format, used to load object
19
+ attributes; otherwise, None to not load attributes.
20
+ """
21
+ self._Drm:int = None
22
+ self._Formats:int = None
23
+
24
+ if (root is None):
25
+
26
+ pass
27
+
28
+ else:
29
+
30
+ self._Drm = root.get('drm', None)
31
+ self._Formats = root.get('formats', None)
32
+
33
+
34
+ def __repr__(self) -> str:
35
+ return self.ToString()
36
+
37
+
38
+ def __str__(self) -> str:
39
+ return self.ToString()
40
+
41
+
42
+ @property
43
+ def Drm(self) -> int:
44
+ """
45
+ DRM format which the integration supports (SpDrmFormat).
46
+
47
+ kSpDrmFormatUnknown Unknown DRM.
48
+ kSpDrmFormatUnencrypted No DRM, unencrypted.
49
+ kSpDrmFormatFairPlay FairPlay.
50
+ kSpDrmFormatWidevine Widevine.
51
+ kSpDrmFormatPlayReady PlayReady.
52
+ """
53
+ return self._Drm
54
+
55
+
56
+ @property
57
+ def Formats(self) -> int:
58
+ """
59
+ Supported media formats for a DRM.
60
+ """
61
+ return self._Formats
62
+
63
+
64
+ def ToDictionary(self) -> dict:
65
+ """
66
+ Returns a dictionary representation of the class.
67
+ """
68
+ result:dict = \
69
+ {
70
+ 'Drm': self._Drm,
71
+ 'Formats': self._Formats,
72
+ }
73
+ return result
74
+
75
+
76
+ def ToString(self, includeTitle:bool=False) -> str:
77
+ """
78
+ Returns a displayable string representation of the class.
79
+
80
+ Args:
81
+ includeTitle (str):
82
+ True to include the class name title prefix.
83
+ """
84
+ msg:str = ''
85
+ if includeTitle:
86
+ msg = 'ZeroconfGetInfoDrmMediaFormat:'
87
+
88
+ if self._Drm is not None: msg = '%s\n Drm=%s' % (msg, str(self._Drm))
89
+ if self._Formats is not None: msg = '%s\n Formats=%s' % (msg, str(self._Formats))
90
+ return msg
@@ -0,0 +1,195 @@
1
+ # external package imports.
2
+
3
+ # our package imports.
4
+ from ..sautils import export
5
+
6
+ @export
7
+ class ZeroconfResponse:
8
+ """
9
+ Spotify Zeroconf API basic response object.
10
+ """
11
+
12
+ def __init__(self, root:dict=None) -> None:
13
+ """
14
+ Initializes a new instance of the class.
15
+
16
+ Args:
17
+ root (dict):
18
+ Spotify Web API JSON response in dictionary format, used to load object
19
+ attributes; otherwise, None to not load attributes.
20
+ """
21
+ self._InteractionIDs:list[str] = []
22
+ self._SpotifyError:int = None
23
+ self._Status:int = None
24
+ self._StatusString:str = None
25
+ self._ResponseSource:str = None
26
+
27
+ if (root is None):
28
+
29
+ pass
30
+
31
+ else:
32
+
33
+ # some devices return the `status` and `spotifyError` values as string,
34
+ # while others return them as numeric; use the property setters to
35
+ # convert them to numeric if they are strings that contain a numeric value.
36
+ self._ResponseSource = root.get('responseSource', None)
37
+ self.SpotifyError = root.get('spotifyError', None)
38
+ self.Status = root.get('status', None)
39
+ self._StatusString = root.get('statusString', None)
40
+
41
+ # process all collections and objects.
42
+ items:list = root.get('interactionIDs',None)
43
+ if items is not None:
44
+ for item in items:
45
+ self._InteractionIDs.append(item)
46
+
47
+
48
+ def __repr__(self) -> str:
49
+ return self.ToString()
50
+
51
+
52
+ def __str__(self) -> str:
53
+ return self.ToString()
54
+
55
+
56
+ @property
57
+ def HasInteractionIDs(self) -> bool:
58
+ """
59
+ Returns True if interactionIDs entries defined;
60
+ otherwise, False.
61
+ """
62
+ return (len(self._InteractionIDs) > 0)
63
+
64
+
65
+ @property
66
+ def InteractionIDs(self) -> list[str]:
67
+ """
68
+ In a Google Cast Spotify Connect session, the interactionId (sometimes seen as interactionIDs,
69
+ interaction_id, or similar in logs or APIs) is a unique identifier assigned to track and correlate
70
+ events or commands related to a specific user interaction or session lifecycle (e.g. play, pause,
71
+ volume change, add user, etc).
72
+
73
+ Spotify client apps (e.g. mobile app, desktop app, or embedded SDK like Librespot) are responsible
74
+ for generating and attaching the interactionId. This is usually done just before the getInfo
75
+ message call, so that it can be included in the getInfo payload.
76
+
77
+ It is usually a UUID (Universally Unique Identifier) or similarly unique string.
78
+ """
79
+ return self._InteractionIDs
80
+
81
+ @InteractionIDs.setter
82
+ def InteractionIDs(self, value:list[str]):
83
+ """
84
+ Sets the InteractionIDs property value.
85
+ """
86
+ if (isinstance(value, list)):
87
+ self._InteractionIDs = value
88
+
89
+
90
+ @property
91
+ def ResponseSource(self) -> str:
92
+ """
93
+ Response source string (e.g. "", "eSDK", etc).
94
+ """
95
+ return self._ResponseSource
96
+
97
+ @ResponseSource.setter
98
+ def ResponseSource(self, value:str):
99
+ """
100
+ Sets the ResponseSource property value.
101
+ """
102
+ if (isinstance(value, str)) or (value is None):
103
+ self._ResponseSource = value or ""
104
+
105
+
106
+ @property
107
+ def SpotifyError(self) -> int:
108
+ """
109
+ The last error code returned by a Spotify API call or the SpCallbackError() callback (e.g. 0, -119, etc).
110
+ """
111
+ return self._SpotifyError
112
+
113
+ @SpotifyError.setter
114
+ def SpotifyError(self, value:int):
115
+ """
116
+ Sets the SpotifyError property value.
117
+ """
118
+ if isinstance(value, int):
119
+ self._SpotifyError = value
120
+ elif isinstance(value, str):
121
+ if value.isnumeric():
122
+ self._SpotifyError = int(value)
123
+
124
+
125
+ @property
126
+ def Status(self) -> int:
127
+ """
128
+ A code indicating the result of the operation (e.g. 101, 402, etc).
129
+ """
130
+ return self._Status
131
+
132
+ @Status.setter
133
+ def Status(self, value:int):
134
+ """
135
+ Sets the Status property value.
136
+ """
137
+ if isinstance(value, int):
138
+ self._Status = value
139
+ elif isinstance(value, str):
140
+ if value.isnumeric():
141
+ self._Status = int(value)
142
+
143
+
144
+ @property
145
+ def StatusString(self) -> str:
146
+ """
147
+ The string describing the status code; some examples are:
148
+ - "OK" (kSpErrorOk)
149
+ - "ERROR-SPOTIFY-ERROR"
150
+ - "ERROR-LOGIN-FAILED" (kSpErrorZeroConfLoginFailed )
151
+ """
152
+ return self._StatusString
153
+
154
+ @StatusString.setter
155
+ def StatusString(self, value:str):
156
+ """
157
+ Sets the StatusString property value.
158
+ """
159
+ if isinstance(value, str):
160
+ self._StatusString = value
161
+
162
+
163
+ def ToDictionary(self) -> dict:
164
+ """
165
+ Returns a dictionary representation of the class.
166
+ """
167
+ result:dict = \
168
+ {
169
+ 'SpotifyError': self._SpotifyError,
170
+ 'Status': self._Status,
171
+ 'StatusString': self._StatusString,
172
+ 'ResponseSource': self._ResponseSource,
173
+ 'InteractionIDs': [ item for item in self._InteractionIDs ],
174
+ }
175
+ return result
176
+
177
+
178
+ def ToString(self, includeTitle:bool=True) -> str:
179
+ """
180
+ Returns a displayable string representation of the class.
181
+
182
+ Args:
183
+ includeTitle (str):
184
+ True to include the class name title prefix.
185
+ """
186
+ msg:str = ''
187
+ if includeTitle:
188
+ msg = 'ZeroconfResponse:'
189
+
190
+ if self._SpotifyError is not None: msg = '%s\n SpotifyError="%s"' % (msg, str(self._SpotifyError))
191
+ if self._Status is not None: msg = '%s\n Status="%s"' % (msg, str(self._Status))
192
+ if self._StatusString is not None: msg = '%s\n StatusString="%s"' % (msg, str(self._StatusString))
193
+ if self._ResponseSource is not None: msg = '%s\n ResponseSource="%s"' % (msg, str(self._ResponseSource))
194
+ if self._InteractionIDs is not None: msg = '%s\n InteractionIDs=%s' % (msg, str(self._InteractionIDs))
195
+ return msg
@@ -0,0 +1,22 @@
1
+ # MIT License
2
+ #
3
+ # Copyright (c) 2023 MatrixEditor
4
+ # Copyright (c) 2023 - 2025 Todd Lucas @thlucas1
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.
@@ -0,0 +1,219 @@
1
+ Metadata-Version: 2.1
2
+ Name: spotifywebapipython
3
+ Version: 1.0.242
4
+ Summary: Spotify Web API Python3 Library
5
+ Author: Todd Lucas
6
+ Author-email: <thlucas@yahoo.com>
7
+ Project-URL: Changelog, https://github.com/thlucas1/spotifywebapiPython/blob/master/CHANGELOG.md
8
+ Project-URL: Documentation, https://spotifywebapiPython.readthedocs.io/en/latest/__init__.html
9
+ Project-URL: GitHub, https://github.com/thlucas1/spotifywebapiPython
10
+ Keywords: spotify,spotifywebapi,api,audio,music,library
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Operating System :: Microsoft :: Windows
15
+ Classifier: Operating System :: MacOS :: MacOS X
16
+ Classifier: Operating System :: Unix
17
+ Classifier: Topic :: Software Development :: Libraries
18
+ Classifier: Topic :: Multimedia :: Sound/Audio :: Players
19
+ Classifier: Natural Language :: English
20
+ Classifier: License :: OSI Approved :: MIT License
21
+ Requires-Python: >3.11.0
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: lxml >=5.2.0
25
+ Requires-Dist: oauthlib >=3.2.2
26
+ Requires-Dist: pillow >=10.3.0
27
+ Requires-Dist: platformdirs >=4.1.0
28
+ Requires-Dist: PyChromecast >=14.0.7
29
+ Requires-Dist: pyotp >=2.9.0
30
+ Requires-Dist: requests >=2.31.0
31
+ Requires-Dist: requests-oauthlib >=1.3.1
32
+ Requires-Dist: smartinspectpython >=3.0.38
33
+ Requires-Dist: soco >=0.30.6
34
+ Requires-Dist: urllib3 >=2.0
35
+ Requires-Dist: zeroconf >=0.132.2
36
+
37
+ <h1 class="modulename">
38
+ Spotify Web API Python3 Library
39
+ </h1>
40
+
41
+ ## Overview
42
+ This API provides Python programmers the ability to retrieve information from the Spotify Web API from any program written in Python 3. It also allows player control via Spotify Connect devices.
43
+
44
+ More information about the Spotify Web API can be found on the <a href="https://developer.spotify.com/documentation/web-api" target="_blank">Spotify Developer Portal page</a>.
45
+
46
+ *IMPORTANT*
47
+ This API assumes you will adhere to all of the terms set forth in the <a href="https://developer.spotify.com/terms" target="_blank">Spotify Developer Terms of Use</a>. The developers of this API are not responsible for misuse of the underlying Spotify Web API.
48
+
49
+ ## Features
50
+
51
+ This API supports all of the features of the Spotify Web API including access to all end points, and support for user authorization with scope(s). Check out the [Spotify Web API documentation](https://developer.spotify.com/documentation/web-api) page for more details.
52
+
53
+ The following features are supported by this API.
54
+ - Authorization: Token generation (Authorization Code, Authorization Code PKCE, Client Credentials) with Scope(s), auto token storage and renewal.
55
+ - Albums: Get Album(s), Get Album Tracks, User Favorites (Get,Add,Remove,Check), Get New Releases.
56
+ - Artists: Get Artist(s), Get Artist's Albums, Get Artist's Top Tracks, Get Related Artists.
57
+ - Audiobooks: Get Audiobook(s), Get Audiobook Chapters, User Favorites (Get,Add,Remove,Check).
58
+ - Categories: Get Several Browse Categories, Get Single Browse Category.
59
+ - Chapters: Get a Chapter, Get Several Chapters.
60
+ - Episodes: Get Episode(s), User Favorites (Get,Add,Remove,Check).
61
+ - Genres: Get Available Genre Seeds.
62
+ - Markets: Get Available Markets.
63
+ - Player: Get Playback State, Transfer Playback, Get Available Devices, Get Currently Playing Track, Start/Resume/Pause/Skip/Seek/Repeat/Shuffle/Volume Playback, Get Recently Played Tracks, Get the User's Queue, Add Item to Playback Queue.
64
+ - Playlists: Get Playlist(s), Change Playlist Details, Get/Update/Add/Remove Playlist Items, Get Favorites, Get User's Playlists, Create Playlist, Get Featured Playlists, Get Category's Playlists, Get Playlist Cover Image, Add Custom Playlist Cover Image
65
+ - Search: Search for Albums/Artists/Audiobooks/Episodes/Playlists/Shows/Tracks.
66
+ - Shows: Get Show(s), Get Show Episodes, User Favorites (Get,Add,Remove,Check).
67
+ - Tracks: Get Track(s), User Favorites (Get,Add,Remove,Check), Get Track(s) Audio Features, Recommendations, Analysis.
68
+ - Users: Get Current/Another User's Profile, Get Top Items, Favorites (Follow,Unfollow,Check) Artists/Playlist/Users.
69
+ - Supports caching of rarely changed configuration data: Categories, Devices, Genres, Markets, UserProfile, etc.
70
+ - ... and more
71
+
72
+ ## Requirements and Dependencies
73
+ The following requirements must be met in order to utilize this API:
74
+
75
+ * You must have a Spotify account (free or premium). Note that some API functions require a PREMIUM account in order to work. Check the [Spotify Developer Documentation](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) pages for more details.
76
+ * You will need to create a Spotify App in order to access the Spotify Web API. An App provides the Client ID and Client Secret needed to request an access token by implementing any of the OAuth2 authorization flows. More information about creating an application can be found on the Spotify [Getting started with Web API](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) page.
77
+
78
+ The following Python-related requirements must be met in order to utilize this API:
79
+
80
+ * Python 3.9 or greater (Python 2 not supported).
81
+
82
+ ## Documentation
83
+ Documentation is located in the package library under the 'docs' folder; use the index.html as your starting point.
84
+ You can also view the latest docs on the <a href="https://spotifywebapipython.readthedocs.io/en/latest/__init__.html" target="_blank">readthedocs web-site</a>.
85
+
86
+ ## Installation
87
+
88
+ This module can be easily installed via pip:
89
+ ``` bash
90
+ $ python3 -m pip install spotifywebapipython
91
+ ```
92
+
93
+ ## Quick-Start Sample Code
94
+
95
+ Almost every method is documented with sample code; just click on the "Sample Code" links under the method, and use the "Copy to Clipboard" functionality to copy / paste.
96
+
97
+ Check out the following classes to get you started:
98
+ - `spotifywebapipython.spotifyclient.SpotifyClient` - main client class.
99
+
100
+ ## Licensing
101
+ This project is licensed and distributed under the terms of the MIT End-User License Agreement (EULA) license.
102
+
103
+ ## Logging / Tracing Support
104
+
105
+ The SmartInspectPython package (installed with this package) can be used to easily debug your applications that utilize this API.
106
+
107
+ The following topics and code samples will get you started on how to enable logging support.
108
+ Note that logging support can be turned on and off without changing code or restarting the application.
109
+ Click on the topics below to expand the section and reveal more information.
110
+
111
+ <details>
112
+ <summary>Configure Logging Support Settings File</summary>
113
+ <br/>
114
+ Add the following lines to a new file (e.g. "smartinspect.cfg") in your application startup / test directory.
115
+ Note the file name can be whatever you like, just specify it on the call to `SiAuto.Si.LoadConfiguration()` when initializing the logger.
116
+
117
+ ``` ini
118
+ ; smartinspect.cfg
119
+
120
+ ; SmartInspect Logging Configuration General settings.
121
+ ; - "Enabled" parameter to turn logging on (True) or off (False).
122
+ ; - "Level" parameter to control the logging level (Debug|Verbose|Message|Warning|Error).
123
+ ; - "AppName" parameter to control the application name.
124
+ Enabled = False
125
+ Level = Verbose
126
+ DefaultLevel = Debug
127
+ AppName = My Application Name
128
+
129
+ ; SmartInspect Logging Configuration Output settings.
130
+ ; - Log to SmartInspect Console Viewer running on the specified network address.
131
+ Connections = tcp(host=192.168.1.1,port=4228,timeout=5000,reconnect=true,reconnect.interval=10s,async.enabled=true)
132
+ ; - Log to a file, keeping 14 days worth of logs.
133
+ ;Connections = "file(filename=\"./tests/logfiles/logfile.log\", rotate=daily, maxparts=14, append=true)"
134
+ ; - Log to an encrypted file, keeping 14 days worth of logs.
135
+ ;Connections = "file(filename=\"./tests/logfiles/logfileEncrypted.sil\", encrypt=true, key=""1234567890123456"", rotate=daily, maxparts=14, append=true)"
136
+
137
+ ; set defaults for new sessions
138
+ ; note that session defaults do not apply to the SiAuto.Main session, since
139
+ ; this session was already added before a configuration file can be loaded.
140
+ ; session defaults only apply to newly added sessions and do not affect existing sessions.
141
+ SessionDefaults.Active = True
142
+ SessionDefaults.Level = Message
143
+ SessionDefaults.ColorBG = 0xFFFFFF
144
+
145
+ ; configure some individual session properties.
146
+ ; note that this does not add the session to the sessionmanager; it simply
147
+ ; sets the property values IF the session name already exists.
148
+ Session.Main.Active = True
149
+ Session.Main.ColorBG = 0xFFFFFF
150
+ ```
151
+
152
+ </details>
153
+
154
+ <details>
155
+ <summary>Initialize Logging Support, MAIN module</summary>
156
+ <br/>
157
+ Add the following lines to your program startup module.
158
+ This will import the necessary package modules, and initialize logging support.
159
+ NOTE - This code should only be executed one time!
160
+
161
+ ``` python
162
+ # load SmartInspect settings from a configuration settings file.
163
+ from smartinspectpython.siauto import *
164
+ siConfigPath:str = "./tests/smartinspect.cfg"
165
+ SIAuto.Si.LoadConfiguration(siConfigPath)
166
+
167
+ # start monitoring the configuration file for changes, and reload it when it changes.
168
+ # this will check the file for changes every 60 seconds.
169
+ siConfig:SIConfigurationTimer = SIConfigurationTimer(SIAuto.Si, siConfigPath)
170
+
171
+ # get smartinspect logger reference.
172
+ _logsi:SISession = SIAuto.Main
173
+
174
+ # log system environment and application startup parameters.
175
+ _logsi.LogSeparator(SILevel.Fatal)
176
+ _logsi.LogAppDomain(SILevel.Verbose)
177
+ _logsi.LogSystem(SILevel.Verbose)
178
+ ```
179
+
180
+ </details>
181
+
182
+ <details>
183
+ <summary>Initialize Logging Support, CLASS or sub-modules</summary>
184
+ <br/>
185
+ Add the following lines to your program supporting modules.
186
+ This will import the necessary package modules, and initialize the shared logging session.
187
+
188
+ ``` python
189
+ # get smartinspect logger reference.
190
+ from smartinspectpython.siauto import *
191
+ _logsi:SISession = SIAuto.Main
192
+ ```
193
+
194
+ </details>
195
+
196
+ <details>
197
+ <summary>More Information on SmartInspect</summary>
198
+ <br/>
199
+ You can use SmartInspectPython by itself to create log files for your own applications.
200
+ Use the following PIP command to install the SmartInspectPython package from PyPi.org:
201
+
202
+ ``` bash
203
+ $ python3 -m pip install smartinspectpython
204
+ ```
205
+
206
+ The SmarrtInspect Redistributable Console Viewer (free) is required to view SmartInspect Log (.sil) formatted log files, as well capture packets via the TcpProtocol or PipeProtocol connections. The Redistributable Console Viewer can be downloaded from the <a href="https://code-partners.com/offerings/smartinspect/releases/" target="_blank">Code-Partners Software Downloads Page</a>. Note that the "Redistributable Console Viewer" is a free product, while the "SmartInspect Full Setup" is the Professional level viewer that adds a few more bells and whistles for a fee. Also note that a Console Viewer is NOT required to view plain text (non .sil) formatted log files.
207
+ </details>
208
+
209
+ ## Contributing
210
+
211
+ Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
212
+
213
+ If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
214
+
215
+ 1. Fork the Project
216
+ 2. Create your Feature Branch `git checkout -b feature/AmazingFeature`
217
+ 3. Commit your Changes `git commit -m 'Add some AmazingFeature'`
218
+ 4. Push to the Branch `git push origin feature/AmazingFeature`
219
+ 5. Open a Pull Request
@@ -0,0 +1,138 @@
1
+ spotifywebapipython/__init__.py,sha256=SnB5BsUGChYgcZHjhZenqYZkb_v3c8aiAUQLkp4lYSY,1205
2
+ spotifywebapipython/const.py,sha256=8qeJ5D1vChWER6MbZl4K_TEByw1PvcE4UIQzXsVeyI8,3739
3
+ spotifywebapipython/saappmessages.py,sha256=KWy4H0ePYARZgtGYc2CHXRY0JOQ0bqr0JuDKRBu-wjA,4645
4
+ spotifywebapipython/sautils.py,sha256=j3f_Lu3Tb5D7-Gd2rJ2Ep901W-4XDp6Vq6XXVl8DX5I,8098
5
+ spotifywebapipython/spotifyapierror.py,sha256=23_CYlxWN0BceYYCLpBpunl55vEwPr_wFf34l74xzeA,1855
6
+ spotifywebapipython/spotifyapimessage.py,sha256=wCnW8jYMLS3x9kjyXPgXXZqaf1HeMTTXzU8u_Dm5pfA,8447
7
+ spotifywebapipython/spotifyauthtoken.py,sha256=iVg2Pa5mfMqYe4qgc5H8td6JzJlaDqk4vMEhH5LmtfI,9289
8
+ spotifywebapipython/spotifyclient.py,sha256=Pvu9f8xgp5KfNdCb1LJCwHsSi15VHVX1fzgmQlVO7HU,838047
9
+ spotifywebapipython/spotifydiscovery.py,sha256=cyysxl8PQj9yGHVbaqhSF3SStlrp-NvfGAudM-dDmg0,20290
10
+ spotifywebapipython/spotifymediatypes.py,sha256=hxpBTBb6YRkRxy4rneinLhGugzfw7NTnm1OZg-r5kMI,989
11
+ spotifywebapipython/spotifywebapiauthenticationerror.py,sha256=5A0MKvYo3Ypv0ZeSSfLHuFLwzoUUu044bBoUgMfNXNw,3940
12
+ spotifywebapipython/spotifywebapierror.py,sha256=5cga9213J_nFQ0UX4vSn3dpyinASKTRiH0wAR4nLjvs,3147
13
+ spotifywebapipython/spotifywebplayertoken.py,sha256=axj1j1lM7COiiZfpElkJRdnk4AmE6bAQcjKshUIz1Nk,35813
14
+ spotifywebapipython/docs/__init__.html,sha256=iFhfVsOROFyt6XfpYQ2YF5VsrRgoDAB2C8tph1Nb8zM,176479
15
+ spotifywebapipython/docs/codecopy.js,sha256=ryuoZwLIL03YitjjFzn49UO5ta7-OBos6LNA3qHhFzs,3120
16
+ spotifywebapipython/docs/index.html,sha256=94otrEDC8AYSkSMPw4GrVp976bYkT-eMN2oSqKe6sHo,48381
17
+ spotifywebapipython/docs/search.js,sha256=JiKFkRcI_9KVy_BHLnjWOkQpxfJZXJJxMzwBCkm7-T4,8834340
18
+ spotifywebapipython/docs/spotifywebapipython.ico,sha256=YImj39fqqSPSuB2-sMDlUYDd6YwRfQeJRtq4FjwWglg,16410
19
+ spotifywebapipython/docs/spotifywebapipython_OLD.ico,sha256=YIv5LjcD4bTIJQSOr8jjwbWaeB3QkElRwkTOePiGbZo,14904
20
+ spotifywebapipython/docs/spotifywebapipython/const.html,sha256=uWV5_DUOnA1fYmMk8w0tPoqcpyECegSFiWvuaTC0aBU,59034
21
+ spotifywebapipython/docs/spotifywebapipython/saappmessages.html,sha256=RSld-X1qCcyR0Hbx7WGRQx6kUqHBPzeGUq14DomlbQc,60895
22
+ spotifywebapipython/docs/spotifywebapipython/sautils.html,sha256=IP0lc-PfOOKGfR_bSBlPJk8cTCZGq_lK9YYz13Djsuk,61063
23
+ spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html,sha256=10CybiTbALaGGreBHuUVvsqbFIcIyxng1atrcNxmvxk,48054
24
+ spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html,sha256=1leTBYiufl5Osm1iYRF8ygqaVTkkDbEDSU7_IQn1Vn4,59210
25
+ spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html,sha256=M24hSCBK9aiisNCn9gRH5ALcOmFUspuxEYKUIKUt4kI,59256
26
+ spotifywebapipython/docs/spotifywebapipython/spotifyclient.html,sha256=oGJsLHQu2orBH95Uuqn7zmIwp0-WK1Hmn5vLkdNGIok,1607585
27
+ spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html,sha256=ks0VM6oEbveT4e5WQfQBC2IiLXdWC14wxI3KXKQyzaM,57662
28
+ spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html,sha256=x-ciwwSk8SkvUoqzJ0ZnF8vDtXy1qp5qemANuQuPwPI,52174
29
+ spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html,sha256=gaIg5UNKBQu-Ufr53i-OtQ8wVRxKL0jWy4jKhXlNR3k,50592
30
+ spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html,sha256=VEjn---hqJ3eKFysG6o1jGniP5K1ByqXA06aUP-T0jc,62204
31
+ spotifywebapipython/models/__init__.py,sha256=UqUPpqOziZuHSJDJXCbgBeICWCFybGqv7uuuN0hvW2E,4344
32
+ spotifywebapipython/models/album.py,sha256=U3Pdw0-EL33LdkeiN31fjZ23rlLk6DNGV8jRmZU7EyQ,5170
33
+ spotifywebapipython/models/albumpagesaved.py,sha256=SBYMhkh5ZsMrRAXl-cm9zsxMDh8gO190ENq6Py2TyGY,2417
34
+ spotifywebapipython/models/albumpagesimplified.py,sha256=zOqN6blzbXQSgrAraVaxX-SgaunNyqJ2v2bauFPhsVo,2504
35
+ spotifywebapipython/models/albumsaved.py,sha256=IU1Wg_aN3T6KN7uT9G2mYO_rtmzbLoZ8gKX0RLQybq4,2824
36
+ spotifywebapipython/models/albumsimplified.py,sha256=1_hLQ2_wSGuBIrDwdDRvforupulee-7-0r4krMmR5zs,9895
37
+ spotifywebapipython/models/artist.py,sha256=djzooqVygnOz6b6C17IP3RGx907aAAKt2tNzNLk1Eow,4443
38
+ spotifywebapipython/models/artistinfo.py,sha256=9RZqHEJaKI-zWM8ti5SxuzQwKiJwHQzShJXAzNgMmzA,8513
39
+ spotifywebapipython/models/artistinfotourevent.py,sha256=k9v26JL_Dsva5o0NJU3KjRfSJuUZkhWLe7CETaSQ7Fk,3478
40
+ spotifywebapipython/models/artistpage.py,sha256=pX03cygB1cvkRHdOAVLvqcIxsZNM12OPs1XHjNjRvCg,1894
41
+ spotifywebapipython/models/artistsimplified.py,sha256=IUYTFzfj__IpUsDulSWSQkt720_6cDFas3ezWCB7a_A,4495
42
+ spotifywebapipython/models/audiobook.py,sha256=_t4WyGUKGX6uMWHa_CroiPz4Jw694r2iKvRy20m3bt0,2354
43
+ spotifywebapipython/models/audiobookpagesimplified.py,sha256=IeCIIwK3oLlV_jJp4gE4rV8mgLsipmyoL16VzAMWn7o,2548
44
+ spotifywebapipython/models/audiobooksimplified.py,sha256=zhAK3oalUd1ls5z5-lY44OLk60XfvddbPZJMrBRLqk4,11758
45
+ spotifywebapipython/models/audiofeatures.py,sha256=dk8SX-DgWItLqD3TKzW5Ynt69BtiZlJrmoU6bsjgIZs,12021
46
+ spotifywebapipython/models/author.py,sha256=EQpWmgLx15lei-QRwBhEC86FILDTXMyJysMLnyfSYaQ,1512
47
+ spotifywebapipython/models/category.py,sha256=61DamxiR91UuC7yLTRHvaUB77vtjiACJaBbGAQVKisA,4717
48
+ spotifywebapipython/models/categorypage.py,sha256=HBWpQYK5fGc2bOQfrrfqFo7BIX9WYuRFEnzYQD1mbPQ,1903
49
+ spotifywebapipython/models/chapter.py,sha256=LUEFwyW-o6rTc6KjOfap7QSAKcREgr1L4UjArBa5KSE,2276
50
+ spotifywebapipython/models/chapterpagesimplified.py,sha256=YYORDKxxZaOVUtCvPZCXD6LMiDQ6govh7vH0J7_MqCA,2526
51
+ spotifywebapipython/models/chaptersimplified.py,sha256=qlL69FkzIWU0dF_aN6roiu2gGwDC-uY5u_oWJe4-KtI,12917
52
+ spotifywebapipython/models/context.py,sha256=BqlgfTKS7j6ILtmZS7sVHaHYP8ps1MUWhzmXg5hgCUk,3035
53
+ spotifywebapipython/models/copyright.py,sha256=4fytdyguXLbHISkRbioG3WORu6flCeC6L_mLvEG5v-A,1924
54
+ spotifywebapipython/models/device.py,sha256=T3m8AelKsMDlV3Z5rKxXzanOz_2dGxTtv2dUs2oZT6A,9166
55
+ spotifywebapipython/models/episode.py,sha256=EAUbp-HtaDdznDQETjCvlTibeoNmUjk2uBBb4xF1GEQ,2190
56
+ spotifywebapipython/models/episodepagesaved.py,sha256=S-52Mx3kNPr8T7fXHbVLog86PPTde43fzz9t2fHPJ3c,2457
57
+ spotifywebapipython/models/episodepagesimplified.py,sha256=L420Ep_QQVBgOf2-4zaQ2zzlp7Zcm0ALHp27jgcTAsI,2526
58
+ spotifywebapipython/models/episodesaved.py,sha256=vlwpYiCKnEWnYtUIaeIuFD4CWHmzEXi0lDIPfb1OWyk,2775
59
+ spotifywebapipython/models/episodesimplified.py,sha256=OgQfQmofakYsNja6zJFTBpKKqTVm3B-P5xwZsVyzWL0,12339
60
+ spotifywebapipython/models/explicitcontent.py,sha256=_lma2qEqVkDF_rE8hlG5CJ1qWN3slZ3A3wHEWhY1fUw,2165
61
+ spotifywebapipython/models/externalids.py,sha256=CsLdAslTyDPK_hU1UepmCOJLe8bXZMUCJeH5xlpm-0o,2223
62
+ spotifywebapipython/models/externalurls.py,sha256=wFMpa9Yj9c6-XmsnYDoOBWPL54qGaADJAROC-CpW4tc,2729
63
+ spotifywebapipython/models/followers.py,sha256=W_KUqxuuu1z7uA0AnLCL6g_k2Ruhqa86_kKjOLctaSE,1955
64
+ spotifywebapipython/models/imageobject.py,sha256=7wgnSlKK90RJksDKpp8jLbteqscAd6mIbT3-oouhPTk,5992
65
+ spotifywebapipython/models/imagevibrantcolors.py,sha256=ZcjejU_EBScyTGFPm6Q1kQdUJt_OXW1XHoNAqWIjY0w,7135
66
+ spotifywebapipython/models/linkedfrom.py,sha256=F387txDtFQyEOP6u8S6DhAlceNhU5GcWrsQ1VQ33nIk,4602
67
+ spotifywebapipython/models/narrator.py,sha256=8gkYk8YkWX7m0ErDs9pwkWbXKkGmCMCFVPTdF6ONqZA,1522
68
+ spotifywebapipython/models/owner.py,sha256=RokGhciF6TV43svWzeqyvKClhm1YuT0jW5XTx54ZEsI,4543
69
+ spotifywebapipython/models/pageobject.py,sha256=6F50G_aA6rtvTpeyf4yG1rnMRiEFIz-N6lcXgfqtAXQ,11000
70
+ spotifywebapipython/models/playeractions.py,sha256=GaqEBcmHev8eoCXb51xt8O9trqeOhIpIysjlKYWOBY0,6564
71
+ spotifywebapipython/models/playerlastplayedinfo.py,sha256=bR6L0u9X7nlCuz21wyzGvUuDXCyDiUiC9KJfgtNltB4,10939
72
+ spotifywebapipython/models/playerplaystate.py,sha256=v5uzD-ck6SvMpWASKbXsAHrDC6-uhZglpszVXXLNQ3g,15231
73
+ spotifywebapipython/models/playerqueueinfo.py,sha256=71K5ZZhZDg92ZCqM2yYLdm6Zi9V1WgCehq8fMA0F5fc,7182
74
+ spotifywebapipython/models/playhistory.py,sha256=GO2rM1H6O5BvKuCDKq7p7rb1vBk7JF-QoHeU9nJ_4i0,3853
75
+ spotifywebapipython/models/playhistorypage.py,sha256=kwBbpQ2HPURxyg6BTbAdOVeMPVGlwDVj8sxfgQGYmek,2430
76
+ spotifywebapipython/models/playlist.py,sha256=nCtiEP7kHwftw8PNgKT8CxNlkQLQoOsw6kegU_Dz7uE,3711
77
+ spotifywebapipython/models/playlistpage.py,sha256=XfItVPK3MP4cEjzv8bmqboXIsSEvaZyroEuP2_7vIuM,2438
78
+ spotifywebapipython/models/playlistpagesimplified.py,sha256=kZZHHpaGnqNG7SMQ5B8dHAxLV-m2VLzoepIgySLNGuY,3197
79
+ spotifywebapipython/models/playlistsimplified.py,sha256=JBt64YE2rpxfUdZOKhqQWs4Xl5gdMD4pfaErhrCzS-E,10339
80
+ spotifywebapipython/models/playlisttrack.py,sha256=HGgToRnRcs7CKQEC7anYs2d2Uxwt5DUyhWU82wtmiIc,4016
81
+ spotifywebapipython/models/playlisttracksummary.py,sha256=hOBNsK3y1SUMwyNrOJZbcxjtGk50_6mIibP2JTDXWSA,2088
82
+ spotifywebapipython/models/recommendationseed.py,sha256=uLPZZ_pERIuOXJrjmdqyfE9OwDK2RwOUyMJNlWVwE_o,4107
83
+ spotifywebapipython/models/restrictions.py,sha256=xWLSyjUeYColnbeVmibW2qkUl1VWiPEHAXviEGvhvy0,2387
84
+ spotifywebapipython/models/resumepoint.py,sha256=BTP5lBP48e5791fS1TY30lfdCmeHdZnuPi0-eDxDUHM,2159
85
+ spotifywebapipython/models/searchresponse.py,sha256=0tK8B4w4ecueCi10YkzUfuzIC_GR5HWSjCvwTaRbzNE,12443
86
+ spotifywebapipython/models/searchresultbase.py,sha256=KMlqmVX3N4fjOyFtIcs3se1cJ_Kl7qKFr24imF96zq0,9275
87
+ spotifywebapipython/models/show.py,sha256=ETIngRpfHS5GjuHE4t55nbvC1TjXIe2e7wl_kvmBQ04,2322
88
+ spotifywebapipython/models/showpagesaved.py,sha256=jK4YR6NU4uyAIb-B1ww1q8laDhz_BKM8GXUIJLrzkok,2397
89
+ spotifywebapipython/models/showpagesimplified.py,sha256=UzF-YbiXLNtPBTQGKv7XTHuopRyt0FC9ZZhTGBmzRBg,2482
90
+ spotifywebapipython/models/showsaved.py,sha256=I3R6eRUaSdLFxcfs5eSZCs4e1rxc4VOlCOlkVK7hgGc,2756
91
+ spotifywebapipython/models/showsimplified.py,sha256=5N-trJAuXGJO9SZw6yEzCkC2KWq0Rfr1Vf31zM5ImIM,10452
92
+ spotifywebapipython/models/spotifyconnectdevice.py,sha256=OWj0XgDfU-XPWZmPaARMRYuCF_m5d4Owi0JFC_2H0w8,10095
93
+ spotifywebapipython/models/spotifyconnectdevices.py,sha256=yQZm3cqbgFQEOC2_41wqcD1ZYetb18pKzxQL6tbXnIg,15938
94
+ spotifywebapipython/models/track.py,sha256=6SNf8vLOxWPMSvpQlUfzzm99q_7hF7kPZ4usOw_2sfU,4515
95
+ spotifywebapipython/models/trackpage.py,sha256=WiaBN8NypQhWSEt4CwJ2vpVEn2sSHF8okqoYxl_QJgg,3281
96
+ spotifywebapipython/models/trackpagesaved.py,sha256=fOv-5DnbkH__WcyUNjMudS4-d0Cyl5TdzICKC-sPh8g,2417
97
+ spotifywebapipython/models/trackpagesimplified.py,sha256=DBYo2WRq8MXVG9PCp0xv1susW4hxbk05tT6qK1z3vi0,2493
98
+ spotifywebapipython/models/trackrecommendations.py,sha256=D-CJRxOoX5jGKkxthjg5ZcQ_MITPt8InPUNZh-g4pQg,2507
99
+ spotifywebapipython/models/tracksaved.py,sha256=uwnTpawf7ymXlF_b4p1RyjonUwUFRp0q_y_kuSP6Vfs,2725
100
+ spotifywebapipython/models/tracksimplified.py,sha256=fqIH45BsTRPbwq0ytss3r9YTCn1TtJSwBLAelJ2dWJY,13199
101
+ spotifywebapipython/models/userprofile.py,sha256=H2q74UJqitBxyBCCWmTyhLMk_bNlyREPcW-Sxu-iFz0,5896
102
+ spotifywebapipython/models/userprofilesimplified.py,sha256=eknW29IFnTdzEJr2lXrVkQLEIootLzDNizrmAILfvmc,6155
103
+ spotifywebapipython/models/zeroconfdiscoveryresult.py,sha256=5MPSu7pLLh5SBrm7N6UbJ9K2zCNszBQr1CKUArmdk08,20245
104
+ spotifywebapipython/models/zeroconfproperty.py,sha256=sXGUqbHhFMutCNKFJwJKbNbbQAnBnR7Ob5wNDSePxZk,2141
105
+ spotifywebapipython/oauthcli/__init__.py,sha256=K37XTxYAKT0n8otCNzWbjgJ10fAPN4WL6seEpwvWyo4,168
106
+ spotifywebapipython/oauthcli/authclient.py,sha256=MlIe1fuAgbl2lMpfu0oxj-C3IO9N8rZCNpmMYUk2a5o,53662
107
+ spotifywebapipython/spotifyconnect/__init__.py,sha256=9Xl5KiJFvWLbsdb4YQ0xmF67i36ybpXCCXrWeNsKEvc,1108
108
+ spotifywebapipython/spotifyconnect/spotifyconnectdeviceeventargs.py,sha256=35hKa0FAaPgy7W8D6MFXmga667pjwXITo8jSj1TDfE8,1988
109
+ spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py,sha256=QA8LvOfw66g0MJ_uhNfW84p7gVz2cZD3S4ZUQJIN194,140389
110
+ spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastapptask.py,sha256=lCALM8X980_pKM4L7k8NaXKXEABd4FuhHyMMB9nLerg,22225
111
+ spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastcontroller.py,sha256=lfojmWPq8SpWiqL3CxFjHxT0VObNk7OnsKIRl7jhgxE,32494
112
+ spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastlistener.py,sha256=DCSPmbKPUqKlKpSMvujWBHHKbntXT7_9QkKBgymuTOs,15928
113
+ spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastmultizonelistener.py,sha256=uDO2w_GIJI8vnpp9KAxJhz8dNH7PbOJUtW1iQT-DOTI,9365
114
+ spotifywebapipython/spotifyconnect/spotifyconnectzeroconfexceptions.py,sha256=aesGauxMoKupdTPR5rL2-rXBC3SEvH_9bQQx2Vh-abs,524
115
+ spotifywebapipython/spotifyconnect/spotifyconnectzeroconflistener.py,sha256=JJovru9o_ie_i9eYb-eZJlPjM-0TQmqU-q3n9F0U-AE,14561
116
+ spotifywebapipython/vibrant/__init__.py,sha256=3O_xwJ59vgxxm7ztGe49Kl4F81nP5aoflDlgQpxjhQA,645
117
+ spotifywebapipython/vibrant/generator.py,sha256=UFLketHF_gAjjC-VQCP8vCUFCgZEYxqN91m1_IeOtj0,7462
118
+ spotifywebapipython/vibrant/image.py,sha256=pilFUUKgRWmkG-C9vfdNlBQfs0-_XbQUpXZjq2JbFGY,3082
119
+ spotifywebapipython/vibrant/main.py,sha256=LQPTYZEnnVecYagXfU7lWc5Ij1pS0h7w6btSw2A7S4c,836
120
+ spotifywebapipython/vibrant/models.py,sha256=VWx3qXUEFpistr1aXVfuAGahXGdcrnaCfK_jesk_4fc,2558
121
+ spotifywebapipython/vibrant/utils.py,sha256=l3lQxS-QN2IzVt8ApsuBO5cQZzumQr-v6rGG1UkLmB4,1398
122
+ spotifywebapipython/zeroconfapi/__init__.py,sha256=1rb_p9ycfpI-nuL1EElNRWfxbhsDJgpdxsZEm_NNvMs,816
123
+ spotifywebapipython/zeroconfapi/authenticationtypes.py,sha256=pm857sQhKgHHTLvezLOMfy7f7BkIBtlnbcQD1bToPOk,670
124
+ spotifywebapipython/zeroconfapi/blobbuilder.py,sha256=byGwZoCduQSoX2VKDl2n8xUJug6g1hrrxaa5nyE78dE,18005
125
+ spotifywebapipython/zeroconfapi/credentials.py,sha256=37kwwZ2Hw4-ThP4CYBvaWmuJKi5yBAwv8URq4ZhYDlY,1283
126
+ spotifywebapipython/zeroconfapi/cryptodiffiehellman.py,sha256=k-nMR68GtzODYsQrwCpvFE2XNxv-XUFbMemplldtwp4,3340
127
+ spotifywebapipython/zeroconfapi/helpers.py,sha256=3JuhSYlT7xmOJC522xhcMsZKkjJnDV3ziP5rZUmeIcQ,1429
128
+ spotifywebapipython/zeroconfapi/spotifyzeroconfapierror.py,sha256=rTwIrr1qV0UiQS_zBufboyZ3A3yGrdCsTAOiVA5dvzY,3031
129
+ spotifywebapipython/zeroconfapi/zeroconfconnect.py,sha256=-Z0IarGOT1tvy08slhPrm1VBtDA-WQoPBc5ZNQBr8nk,66639
130
+ spotifywebapipython/zeroconfapi/zeroconfgetinfo.py,sha256=APayso_F7lCsdzzrkescgd-nKukUah3Kjfs-5F2tnvU,21415
131
+ spotifywebapipython/zeroconfapi/zeroconfgetinfoalias.py,sha256=FZJM23HIPJSfhXIC3-EuS1XhawheoG5maSp7__k4yBo,2932
132
+ spotifywebapipython/zeroconfapi/zeroconfgetinfodrmmediaformat.py,sha256=c5uk8ljsIuBK3w2jahHKQuoWvm245LOjUBitetXx5Mo,2347
133
+ spotifywebapipython/zeroconfapi/zeroconfresponse.py,sha256=mAPIDj5MG53x8peiScrp7OJblwy_o_Sto4wqE0rGujU,6445
134
+ spotifywebapipython-1.0.242.dist-info/LICENSE,sha256=KGcc9g0zwqNLcWnSn_ezv1UtKyhMENFhvtixpxUPNsE,1177
135
+ spotifywebapipython-1.0.242.dist-info/METADATA,sha256=n1MfQXwZomINWH6cXnoD2Q5TmwNX7-4MkH0GTcSN9GQ,11613
136
+ spotifywebapipython-1.0.242.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
137
+ spotifywebapipython-1.0.242.dist-info/top_level.txt,sha256=jTBLFlijKTesYh2dteAz4vb17qjaqWKeDjpnnwTcrjs,20
138
+ spotifywebapipython-1.0.242.dist-info/RECORD,,