spotifywebapiPython 1.0.171__py3-none-any.whl → 1.0.173__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.171.dist-info → spotifywebapiPython-1.0.173.dist-info}/METADATA +1 -1
- {spotifywebapiPython-1.0.171.dist-info → spotifywebapiPython-1.0.173.dist-info}/RECORD +22 -22
- spotifywebapipython/const.py +1 -1
- spotifywebapipython/docs/__init__.html +16 -4
- 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 +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifyclient.html +134 -38
- spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html +2 -2
- spotifywebapipython/spotifyclient.py +97 -33
- spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py +11 -2
- {spotifywebapiPython-1.0.171.dist-info → spotifywebapiPython-1.0.173.dist-info}/LICENSE +0 -0
- {spotifywebapiPython-1.0.171.dist-info → spotifywebapiPython-1.0.173.dist-info}/WHEEL +0 -0
- {spotifywebapiPython-1.0.171.dist-info → spotifywebapiPython-1.0.173.dist-info}/top_level.txt +0 -0
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</title>
|
|
10
10
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612-2.021%201.25-.079.295.021.601.274.837.219.203.415.364.598.501-.667.304-1.243.698-1.311%201.179-.02.144-.022.507.393.787.213.144.395.26.564.365-1.285.521-1.361.96-1.381%201.126-.018.142-.011.496.427.746l.854.489c-.473.389-.971.914-.999%201.429-.018.278.095.532.316.713.675.556%201.231.721%201.653.721.059%200%20.104-.014.158-.02.207.707.641%201.64%201.513%201.64h.013c.8-.008%201.236-.345%201.462-.626.173-.216.268-.457.325-.692.424.195.93.374%201.372.374.151%200%20.294-.021.423-.068.732-.27.944-.704.993-1.021.009-.061.003-.119.002-.179.266.086.538.147.789.147.15%200%20.294-.021.423-.069.542-.2.797-.489.914-.754.237.147.478.258.704.288.106.014.205.021.296.021.356%200%20.595-.101.767-.229.438.435%201.094.992%201.656%201.067.106.014.205.021.296.021a1.56%201.56%200%200%200%20.323-.035c.17.575.453%201.289.866%201.605.358.273.665.362.914.362a.99.99%200%200%200%20.421-.093%201.03%201.03%200%200%200%20.245-.164c.168.428.39.846.68%201.068.358.273.665.362.913.362a.99.99%200%200%200%20.421-.093c.317-.148.512-.448.639-.762.251.157.495.257.726.257.127%200%20.25-.024.37-.071.427-.17.706-.617.841-1.314.022-.015.047-.022.068-.038.067-.051.133-.104.196-.159-.443%201.486-1.107%202.761-2.086%203.257zM8.66%209.925a.5.5%200%201%200-1%200c0%20.653-.818%201.205-1.787%201.205s-1.787-.552-1.787-1.205a.5.5%200%201%200-1%200c0%201.216%201.25%202.205%202.787%202.205s2.787-.989%202.787-2.205zm4.4%2015.965l-.208.097c-2.661%201.258-4.708%201.436-6.086.527-1.542-1.017-1.88-3.19-1.844-4.198a.4.4%200%200%200-.385-.414c-.242-.029-.406.164-.414.385-.046%201.249.367%203.686%202.202%204.896.708.467%201.547.7%202.51.7%201.248%200%202.706-.392%204.362-1.174l.185-.086a.4.4%200%200%200%20.205-.527c-.089-.204-.326-.291-.527-.206zM9.547%202.292c.093.077.205.114.317.114a.5.5%200%200%200%20.318-.886L8.817.397a.5.5%200%200%200-.703.068.5.5%200%200%200%20.069.703l1.364%201.124zm-7.661-.065c.086%200%20.173-.022.253-.068l1.523-.893a.5.5%200%200%200-.506-.863l-1.523.892a.5.5%200%200%200-.179.685c.094.158.261.247.432.247z%22%20transform%3D%22matrix%28-1%200%200%201%2058%200%29%22%20fill%3D%22%233bb300%22/%3E%3Cpath%20d%3D%22M.3%2021.86V10.18q0-.46.02-.68.04-.22.18-.5.28-.54%201.34-.54%201.06%200%201.42.28.38.26.44.78.76-1.04%202.38-1.04%201.64%200%203.1%201.54%201.46%201.54%201.46%203.58%200%202.04-1.46%203.58-1.44%201.54-3.08%201.54-1.64%200-2.38-.92v4.04q0%20.46-.04.68-.02.22-.18.5-.14.3-.5.42-.36.12-.98.12-.62%200-1-.12-.36-.12-.52-.4-.14-.28-.18-.5-.02-.22-.02-.68zm3.96-9.42q-.46.54-.46%201.18%200%20.64.46%201.18.48.52%201.2.52.74%200%201.24-.52.52-.52.52-1.18%200-.66-.48-1.18-.48-.54-1.26-.54-.76%200-1.22.54zm14.741-8.36q.16-.3.54-.42.38-.12%201-.12.64%200%201.02.12.38.12.52.42.16.3.18.54.04.22.04.68v11.94q0%20.46-.04.7-.02.22-.18.5-.3.54-1.7.54-1.38%200-1.54-.98-.84.96-2.34.96-1.8%200-3.28-1.56-1.48-1.58-1.48-3.66%200-2.1%201.48-3.68%201.5-1.58%203.28-1.58%201.48%200%202.3%201v-4.2q0-.46.02-.68.04-.24.18-.52zm-3.24%2010.86q.52.54%201.26.54.74%200%201.22-.54.5-.54.5-1.18%200-.66-.48-1.22-.46-.56-1.26-.56-.8%200-1.28.56-.48.54-.48%201.2%200%20.66.52%201.2zm7.833-1.2q0-2.4%201.68-3.96%201.68-1.56%203.84-1.56%202.16%200%203.82%201.56%201.66%201.54%201.66%203.94%200%201.66-.86%202.96-.86%201.28-2.1%201.9-1.22.6-2.54.6-1.32%200-2.56-.64-1.24-.66-2.1-1.92-.84-1.28-.84-2.88zm4.18%201.44q.64.48%201.3.48.66%200%201.32-.5.66-.5.66-1.48%200-.98-.62-1.46-.62-.48-1.34-.48-.72%200-1.34.5-.62.5-.62%201.48%200%20.96.64%201.46zm11.412-1.44q0%20.84.56%201.32.56.46%201.18.46.64%200%201.18-.36.56-.38.9-.38.6%200%201.46%201.06.46.58.46%201.04%200%20.76-1.1%201.42-1.14.8-2.8.8-1.86%200-3.58-1.34-.82-.64-1.34-1.7-.52-1.08-.52-2.36%200-1.3.52-2.34.52-1.06%201.34-1.7%201.66-1.32%203.54-1.32.76%200%201.48.22.72.2%201.06.4l.32.2q.36.24.56.38.52.4.52.92%200%20.5-.42%201.14-.72%201.1-1.38%201.1-.38%200-1.08-.44-.36-.34-1.04-.34-.66%200-1.24.48-.58.48-.58%201.34z%22%20fill%3D%22green%22/%3E%3C/svg%3E"/>
|
|
11
11
|
<!-- build env - Package Name = "spotifywebapiPython" -->
|
|
12
|
-
<!-- build env - Package Version = "1.0.
|
|
12
|
+
<!-- build env - Package Version = "1.0.173" -->
|
|
13
13
|
<!-- pdoc module.modulename = "spotifywebapipython.spotifywebplayertoken" -->
|
|
14
14
|
<!-- pdoc module.is_package = "False" -->
|
|
15
15
|
<!-- pdoc root_module_name = "None" -->
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
|
|
90
90
|
<footer class="footertext">
|
|
91
91
|
spotifywebapiPython</br>
|
|
92
|
-
Version 1.0.
|
|
92
|
+
Version 1.0.173</br>
|
|
93
93
|
<a href="https://developer.spotify.com/documentation/web-api" target="_blank">
|
|
94
94
|
<img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
|
|
95
95
|
A Spotify Web Api Client
|
|
@@ -803,12 +803,8 @@ class SpotifyClient:
|
|
|
803
803
|
if (not self._HasSpotifyWebPlayerCredentials):
|
|
804
804
|
return result
|
|
805
805
|
|
|
806
|
-
# was
|
|
807
|
-
if (
|
|
808
|
-
return result
|
|
809
|
-
|
|
810
|
-
# is the device restricted or Sonos?
|
|
811
|
-
if (scDevice.IsSonos or scDevice.IsRestricted):
|
|
806
|
+
# was a device argument passed? if not, then just create the token.
|
|
807
|
+
if (scDevice is None):
|
|
812
808
|
|
|
813
809
|
# get spotify web player access token info from spotify web player cookie credentials.
|
|
814
810
|
_logsi.LogVerbose("Converting Spotify Web Player cookie credentials to an access token for loginId \"%s\"" % (self._SpotifyConnectLoginId))
|
|
@@ -817,7 +813,25 @@ class SpotifyClient:
|
|
|
817
813
|
tokenStorageFile=self._TokenStorageFile)
|
|
818
814
|
if tokenWP is not None:
|
|
819
815
|
result = tokenWP.HeaderValue
|
|
820
|
-
_logsi.LogVerbose("
|
|
816
|
+
_logsi.LogVerbose("Spotify Web Player authorization access token will be used")
|
|
817
|
+
|
|
818
|
+
else:
|
|
819
|
+
|
|
820
|
+
# was the device resolved? if not, then don't bother!
|
|
821
|
+
if (not isinstance(scDevice, SpotifyConnectDevice)):
|
|
822
|
+
return result
|
|
823
|
+
|
|
824
|
+
# is the device restricted or Sonos?
|
|
825
|
+
if (scDevice.IsSonos or scDevice.IsRestricted):
|
|
826
|
+
|
|
827
|
+
# get spotify web player access token info from spotify web player cookie credentials.
|
|
828
|
+
_logsi.LogVerbose("Converting Spotify Web Player cookie credentials to an access token for loginId \"%s\"" % (self._SpotifyConnectLoginId))
|
|
829
|
+
tokenWP = SpotifyWebPlayerToken(profileId=self._SpotifyConnectLoginId,
|
|
830
|
+
tokenStorageDir=self._TokenStorageDir,
|
|
831
|
+
tokenStorageFile=self._TokenStorageFile)
|
|
832
|
+
if tokenWP is not None:
|
|
833
|
+
result = tokenWP.HeaderValue
|
|
834
|
+
_logsi.LogVerbose("Playback will be started using Spotify Web Player authorization access token for device: %s" % (scDevice.Title))
|
|
821
835
|
|
|
822
836
|
# return result to caller.
|
|
823
837
|
return result
|
|
@@ -4340,7 +4354,8 @@ class SpotifyClient:
|
|
|
4340
4354
|
) -> list[Artist]:
|
|
4341
4355
|
"""
|
|
4342
4356
|
<span class="deprecated">
|
|
4343
|
-
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27.
|
|
4357
|
+
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27 for unauthorized Spotify Developer Applications.
|
|
4358
|
+
The api endpoint IS still supported by Spotify for authorized Spotify Developer Applications.
|
|
4344
4359
|
More information about the deprecated functionality can be found on the
|
|
4345
4360
|
<a href="https://developer.spotify.com/blog/2024-11-27-changes-to-the-web-api" target="_blank">Spotify Developer Forum Blog</a>
|
|
4346
4361
|
page.
|
|
@@ -4389,8 +4404,14 @@ class SpotifyClient:
|
|
|
4389
4404
|
apiMethodParms.AppendKeyValue("sortResult", sortResult)
|
|
4390
4405
|
_logsi.LogMethodParmList(SILevel.Verbose, "Get Spotify catalog information about artists similar to a given artist", apiMethodParms)
|
|
4391
4406
|
|
|
4392
|
-
#
|
|
4393
|
-
|
|
4407
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
4408
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
4409
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
4410
|
+
|
|
4411
|
+
# if spotify web player credentials not configured then we are done; the Spotify Web API
|
|
4412
|
+
# endpoint is no longer supported by unauthorized Spotify Developer Applications as of 2024/11/27.
|
|
4413
|
+
if (accessTokenHeaderValue is None):
|
|
4414
|
+
raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_DEPRECATED_ENDPOINT % apiMethodName)
|
|
4394
4415
|
|
|
4395
4416
|
# validations.
|
|
4396
4417
|
if sortResult is None:
|
|
@@ -4406,7 +4427,7 @@ class SpotifyClient:
|
|
|
4406
4427
|
|
|
4407
4428
|
# execute spotify web api request.
|
|
4408
4429
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/artists/{id}/related-artists'.format(id=artistId))
|
|
4409
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
4430
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
4410
4431
|
self.MakeRequest('GET', msg)
|
|
4411
4432
|
|
|
4412
4433
|
# process results.
|
|
@@ -5744,7 +5765,8 @@ class SpotifyClient:
|
|
|
5744
5765
|
) -> Tuple[PlaylistPageSimplified, str]:
|
|
5745
5766
|
"""
|
|
5746
5767
|
<span class="deprecated">
|
|
5747
|
-
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27.
|
|
5768
|
+
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27 for unauthorized Spotify Developer Applications.
|
|
5769
|
+
The api endpoint IS still supported by Spotify for authorized Spotify Developer Applications.
|
|
5748
5770
|
More information about the deprecated functionality can be found on the
|
|
5749
5771
|
<a href="https://developer.spotify.com/blog/2024-11-27-changes-to-the-web-api" target="_blank">Spotify Developer Forum Blog</a>
|
|
5750
5772
|
page.
|
|
@@ -5831,8 +5853,14 @@ class SpotifyClient:
|
|
|
5831
5853
|
apiMethodParms.AppendKeyValue("sortResult", sortResult)
|
|
5832
5854
|
_logsi.LogMethodParmList(SILevel.Verbose, "Get a list of Spotify playlists tagged with a particular category", apiMethodParms)
|
|
5833
5855
|
|
|
5834
|
-
#
|
|
5835
|
-
|
|
5856
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
5857
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
5858
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
5859
|
+
|
|
5860
|
+
# if spotify web player credentials not configured then we are done; the Spotify Web API
|
|
5861
|
+
# endpoint is no longer supported by unauthorized Spotify Developer Applications as of 2024/11/27.
|
|
5862
|
+
if (accessTokenHeaderValue is None):
|
|
5863
|
+
raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_DEPRECATED_ENDPOINT % apiMethodName)
|
|
5836
5864
|
|
|
5837
5865
|
# validations.
|
|
5838
5866
|
if limit is None:
|
|
@@ -5866,7 +5894,7 @@ class SpotifyClient:
|
|
|
5866
5894
|
|
|
5867
5895
|
# execute spotify web api request.
|
|
5868
5896
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/browse/categories/{category_id}/playlists'.format(category_id=categoryId))
|
|
5869
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
5897
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
5870
5898
|
msg.UrlParameters = urlParms
|
|
5871
5899
|
self.MakeRequest('GET', msg)
|
|
5872
5900
|
|
|
@@ -6732,7 +6760,8 @@ class SpotifyClient:
|
|
|
6732
6760
|
) -> Tuple[PlaylistPageSimplified, str]:
|
|
6733
6761
|
"""
|
|
6734
6762
|
<span class="deprecated">
|
|
6735
|
-
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27.
|
|
6763
|
+
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27 for unauthorized Spotify Developer Applications.
|
|
6764
|
+
The api endpoint IS still supported by Spotify for authorized Spotify Developer Applications.
|
|
6736
6765
|
More information about the deprecated functionality can be found on the
|
|
6737
6766
|
<a href="https://developer.spotify.com/blog/2024-11-27-changes-to-the-web-api" target="_blank">Spotify Developer Forum Blog</a>
|
|
6738
6767
|
page.
|
|
@@ -6826,8 +6855,14 @@ class SpotifyClient:
|
|
|
6826
6855
|
apiMethodParms.AppendKeyValue("sortResult", sortResult)
|
|
6827
6856
|
_logsi.LogMethodParmList(SILevel.Verbose, "Get a list of Spotify featured playlists", apiMethodParms)
|
|
6828
6857
|
|
|
6829
|
-
#
|
|
6830
|
-
|
|
6858
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
6859
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
6860
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
6861
|
+
|
|
6862
|
+
# if spotify web player credentials not configured then we are done; the Spotify Web API
|
|
6863
|
+
# endpoint is no longer supported by unauthorized Spotify Developer Applications as of 2024/11/27.
|
|
6864
|
+
if (accessTokenHeaderValue is None):
|
|
6865
|
+
raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_DEPRECATED_ENDPOINT % apiMethodName)
|
|
6831
6866
|
|
|
6832
6867
|
# validations.
|
|
6833
6868
|
if limit is None:
|
|
@@ -6864,7 +6899,7 @@ class SpotifyClient:
|
|
|
6864
6899
|
|
|
6865
6900
|
# execute spotify web api request.
|
|
6866
6901
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/browse/featured-playlists')
|
|
6867
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
6902
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
6868
6903
|
msg.UrlParameters = urlParms
|
|
6869
6904
|
self.MakeRequest('GET', msg)
|
|
6870
6905
|
|
|
@@ -6931,7 +6966,8 @@ class SpotifyClient:
|
|
|
6931
6966
|
) -> list[str]:
|
|
6932
6967
|
"""
|
|
6933
6968
|
<span class="deprecated">
|
|
6934
|
-
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27.
|
|
6969
|
+
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27 for unauthorized Spotify Developer Applications.
|
|
6970
|
+
The api endpoint IS still supported by Spotify for authorized Spotify Developer Applications.
|
|
6935
6971
|
More information about the deprecated functionality can be found on the
|
|
6936
6972
|
<a href="https://developer.spotify.com/blog/2024-11-27-changes-to-the-web-api" target="_blank">Spotify Developer Forum Blog</a>
|
|
6937
6973
|
page.
|
|
@@ -6975,8 +7011,14 @@ class SpotifyClient:
|
|
|
6975
7011
|
_logsi.EnterMethod(SILevel.Debug, apiMethodName)
|
|
6976
7012
|
_logsi.LogVerbose("Get a sorted list of available genres")
|
|
6977
7013
|
|
|
6978
|
-
#
|
|
6979
|
-
|
|
7014
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
7015
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
7016
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
7017
|
+
|
|
7018
|
+
# if spotify web player credentials not configured then we are done; the Spotify Web API
|
|
7019
|
+
# endpoint is no longer supported by unauthorized Spotify Developer Applications as of 2024/11/27.
|
|
7020
|
+
if (accessTokenHeaderValue is None):
|
|
7021
|
+
raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_DEPRECATED_ENDPOINT % apiMethodName)
|
|
6980
7022
|
|
|
6981
7023
|
# validations.
|
|
6982
7024
|
if (refresh is None):
|
|
@@ -6992,7 +7034,7 @@ class SpotifyClient:
|
|
|
6992
7034
|
|
|
6993
7035
|
# execute spotify web api request.
|
|
6994
7036
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/recommendations/available-genre-seeds')
|
|
6995
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
7037
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
6996
7038
|
self.MakeRequest('GET', msg)
|
|
6997
7039
|
|
|
6998
7040
|
# process results.
|
|
@@ -8448,6 +8490,10 @@ class SpotifyClient:
|
|
|
8448
8490
|
apiMethodParms.AppendKeyValue("additionalTypes", additionalTypes)
|
|
8449
8491
|
_logsi.LogMethodParmList(SILevel.Verbose, "Get a playlist owned by a Spotify user", apiMethodParms)
|
|
8450
8492
|
|
|
8493
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
8494
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
8495
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
8496
|
+
|
|
8451
8497
|
# ensure market was either supplied or implied; default if neither.
|
|
8452
8498
|
market = self._ValidateMarket(market)
|
|
8453
8499
|
|
|
@@ -8491,7 +8537,7 @@ class SpotifyClient:
|
|
|
8491
8537
|
|
|
8492
8538
|
# execute spotify web api request.
|
|
8493
8539
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/playlists/{id}'.format(id=playlistId))
|
|
8494
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
8540
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
8495
8541
|
msg.UrlParameters = urlParms
|
|
8496
8542
|
self.MakeRequest('GET', msg)
|
|
8497
8543
|
|
|
@@ -8879,6 +8925,10 @@ class SpotifyClient:
|
|
|
8879
8925
|
apiMethodParms.AppendKeyValue("sortResult", sortResult)
|
|
8880
8926
|
_logsi.LogMethodParmList(SILevel.Verbose, "Get a list of the users playlist favorites", apiMethodParms)
|
|
8881
8927
|
|
|
8928
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
8929
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
8930
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
8931
|
+
|
|
8882
8932
|
# validations.
|
|
8883
8933
|
if limit is None:
|
|
8884
8934
|
limit = 20
|
|
@@ -8908,7 +8958,7 @@ class SpotifyClient:
|
|
|
8908
8958
|
|
|
8909
8959
|
# execute spotify web api request.
|
|
8910
8960
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/me/playlists')
|
|
8911
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
8961
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
8912
8962
|
msg.UrlParameters = urlParms
|
|
8913
8963
|
self.MakeRequest('GET', msg)
|
|
8914
8964
|
|
|
@@ -10161,7 +10211,8 @@ class SpotifyClient:
|
|
|
10161
10211
|
) -> AudioFeatures:
|
|
10162
10212
|
"""
|
|
10163
10213
|
<span class="deprecated">
|
|
10164
|
-
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27.
|
|
10214
|
+
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27 for unauthorized Spotify Developer Applications.
|
|
10215
|
+
The api endpoint IS still supported by Spotify for authorized Spotify Developer Applications.
|
|
10165
10216
|
More information about the deprecated functionality can be found on the
|
|
10166
10217
|
<a href="https://developer.spotify.com/blog/2024-11-27-changes-to-the-web-api" target="_blank">Spotify Developer Forum Blog</a>
|
|
10167
10218
|
page.
|
|
@@ -10204,8 +10255,14 @@ class SpotifyClient:
|
|
|
10204
10255
|
apiMethodParms.AppendKeyValue("trackId", trackId)
|
|
10205
10256
|
_logsi.LogMethodParmList(SILevel.Verbose, "Get audio feature information for a single track", apiMethodParms)
|
|
10206
10257
|
|
|
10207
|
-
#
|
|
10208
|
-
|
|
10258
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
10259
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
10260
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
10261
|
+
|
|
10262
|
+
# if spotify web player credentials not configured then we are done; the Spotify Web API
|
|
10263
|
+
# endpoint is no longer supported by unauthorized Spotify Developer Applications as of 2024/11/27.
|
|
10264
|
+
if (accessTokenHeaderValue is None):
|
|
10265
|
+
raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_DEPRECATED_ENDPOINT % apiMethodName)
|
|
10209
10266
|
|
|
10210
10267
|
# if trackId not specified, then return currently playing track id value.
|
|
10211
10268
|
if (trackId is None) or (len(trackId.strip()) == 0):
|
|
@@ -10217,7 +10274,7 @@ class SpotifyClient:
|
|
|
10217
10274
|
|
|
10218
10275
|
# execute spotify web api request.
|
|
10219
10276
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/audio-features/{id}'.format(id=trackId))
|
|
10220
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
10277
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
10221
10278
|
self.MakeRequest('GET', msg)
|
|
10222
10279
|
|
|
10223
10280
|
# process results.
|
|
@@ -10609,7 +10666,8 @@ class SpotifyClient:
|
|
|
10609
10666
|
) -> TrackRecommendations:
|
|
10610
10667
|
"""
|
|
10611
10668
|
<span class="deprecated">
|
|
10612
|
-
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27.
|
|
10669
|
+
DEPRECATED - api endpoint no longer supported by Spotify as of 2024/11/27 for unauthorized Spotify Developer Applications.
|
|
10670
|
+
The api endpoint IS still supported by Spotify for authorized Spotify Developer Applications.
|
|
10613
10671
|
More information about the deprecated functionality can be found on the
|
|
10614
10672
|
<a href="https://developer.spotify.com/blog/2024-11-27-changes-to-the-web-api" target="_blank">Spotify Developer Forum Blog</a>
|
|
10615
10673
|
page.
|
|
@@ -10853,8 +10911,14 @@ class SpotifyClient:
|
|
|
10853
10911
|
apiMethodParms.AppendKeyValue("targetValence", targetValence)
|
|
10854
10912
|
_logsi.LogMethodParmList(SILevel.Verbose, "Get track recommendations for specified criteria", apiMethodParms)
|
|
10855
10913
|
|
|
10856
|
-
#
|
|
10857
|
-
|
|
10914
|
+
# are spotify web player credentials configured? if so, then we will use them to create
|
|
10915
|
+
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
10916
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue()
|
|
10917
|
+
|
|
10918
|
+
# if spotify web player credentials not configured then we are done; the Spotify Web API
|
|
10919
|
+
# endpoint is no longer supported by unauthorized Spotify Developer Applications as of 2024/11/27.
|
|
10920
|
+
if (accessTokenHeaderValue is None):
|
|
10921
|
+
raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_DEPRECATED_ENDPOINT % apiMethodName)
|
|
10858
10922
|
|
|
10859
10923
|
# ensure market was either supplied or implied; default if neither.
|
|
10860
10924
|
market = self._ValidateMarket(market)
|
|
@@ -10974,7 +11038,7 @@ class SpotifyClient:
|
|
|
10974
11038
|
|
|
10975
11039
|
# execute spotify web api request.
|
|
10976
11040
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/recommendations')
|
|
10977
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
11041
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
10978
11042
|
msg.UrlParameters = urlParms
|
|
10979
11043
|
self.MakeRequest('GET', msg)
|
|
10980
11044
|
|
|
@@ -1051,15 +1051,24 @@ class SpotifyConnectDirectoryTask(threading.Thread):
|
|
|
1051
1051
|
# does caller want the group coordinator?
|
|
1052
1052
|
if (returnCoordinator):
|
|
1053
1053
|
|
|
1054
|
+
# TEST TODO - use to test Sonos coordinator functionality.
|
|
1055
|
+
# _logsi.LogObject(SILevel.Verbose, "Sonos Controller instance for device: %s" % (device.Title), sonosPlayer, colorValue=SIColors.Red)
|
|
1056
|
+
# sonosPlayer._is_coordinator = False
|
|
1057
|
+
|
|
1054
1058
|
# if Sonos Controller instance is the group coordinator then we are done.
|
|
1055
1059
|
if (sonosPlayer.is_coordinator):
|
|
1056
1060
|
_logsi.LogVerbose("Sonos Controller instance is a group coordinator for device: %s" % (device.Title))
|
|
1061
|
+
_logsi.LogObject(SILevel.Verbose, "Sonos Controller instance for device: %s" % (device.Title), sonosPlayer)
|
|
1062
|
+
_logsi.LogDictionary(SILevel.Verbose, "Sonos Controller instance for device: %s (speaker_info)" % (device.Title), sonosPlayer.speaker_info)
|
|
1063
|
+
_logsi.LogObject(SILevel.Verbose, "Sonos Controller instance for device: %s (group)" % (device.Title), sonosPlayer.group)
|
|
1064
|
+
_logsi.LogObject(SILevel.Verbose, "Sonos Controller instance for device: %s (zone_group_state)" % (device.Title), sonosPlayer.zone_group_state)
|
|
1057
1065
|
return sonosPlayer
|
|
1058
1066
|
|
|
1059
1067
|
# trace.
|
|
1060
1068
|
_logsi.LogObject(SILevel.Verbose, "Sonos Controller instance for device: %s" % (device.Title), sonosPlayer)
|
|
1061
|
-
|
|
1062
|
-
|
|
1069
|
+
_logsi.LogDictionary(SILevel.Verbose, "Sonos Controller instance for device: %s (speaker_info)" % (device.Title), sonosPlayer.speaker_info)
|
|
1070
|
+
_logsi.LogObject(SILevel.Verbose, "Sonos Controller instance for device: %s (group)" % (device.Title), sonosPlayer.group)
|
|
1071
|
+
_logsi.LogObject(SILevel.Verbose, "Sonos Controller instance for device: %s (zone_group_state)" % (device.Title), sonosPlayer.zone_group_state)
|
|
1063
1072
|
|
|
1064
1073
|
# is the device part of a group? if so, then use the group coordinator.
|
|
1065
1074
|
if (sonosPlayer.group is not None):
|
|
File without changes
|
|
File without changes
|
{spotifywebapiPython-1.0.171.dist-info → spotifywebapiPython-1.0.173.dist-info}/top_level.txt
RENAMED
|
File without changes
|