spotifywebapiPython 1.0.163__py3-none-any.whl → 1.0.165__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.163.dist-info → spotifywebapiPython-1.0.165.dist-info}/METADATA +1 -1
- {spotifywebapiPython-1.0.163.dist-info → spotifywebapiPython-1.0.165.dist-info}/RECORD +24 -24
- spotifywebapipython/const.py +1 -1
- spotifywebapipython/docs/__init__.html +14 -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 +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifyclient.html +937 -4
- 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 +37 -2
- spotifywebapipython/oauthcli/authclient.py +4 -0
- spotifywebapipython/spotifyclient.py +169 -22
- spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py +17 -0
- spotifywebapipython/spotifywebplayertoken.py +19 -0
- {spotifywebapiPython-1.0.163.dist-info → spotifywebapiPython-1.0.165.dist-info}/LICENSE +0 -0
- {spotifywebapiPython-1.0.163.dist-info → spotifywebapiPython-1.0.165.dist-info}/WHEEL +0 -0
- {spotifywebapiPython-1.0.163.dist-info → spotifywebapiPython-1.0.165.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.165" -->
|
|
13
13
|
<!-- pdoc module.modulename = "spotifywebapipython.spotifydiscovery" -->
|
|
14
14
|
<!-- pdoc module.is_package = "False" -->
|
|
15
15
|
<!-- pdoc root_module_name = "None" -->
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
|
|
81
81
|
<footer class="footertext">
|
|
82
82
|
spotifywebapiPython</br>
|
|
83
|
-
Version 1.0.
|
|
83
|
+
Version 1.0.165</br>
|
|
84
84
|
<a href="https://developer.spotify.com/documentation/web-api" target="_blank">
|
|
85
85
|
<img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
|
|
86
86
|
A Spotify Web Api Client
|
|
@@ -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.165" -->
|
|
13
13
|
<!-- pdoc module.modulename = "spotifywebapipython.spotifywebapiauthenticationerror" -->
|
|
14
14
|
<!-- pdoc module.is_package = "False" -->
|
|
15
15
|
<!-- pdoc root_module_name = "None" -->
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
|
|
75
75
|
<footer class="footertext">
|
|
76
76
|
spotifywebapiPython</br>
|
|
77
|
-
Version 1.0.
|
|
77
|
+
Version 1.0.165</br>
|
|
78
78
|
<a href="https://developer.spotify.com/documentation/web-api" target="_blank">
|
|
79
79
|
<img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
|
|
80
80
|
A Spotify Web Api Client
|
|
@@ -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.165" -->
|
|
13
13
|
<!-- pdoc module.modulename = "spotifywebapipython.spotifywebapierror" -->
|
|
14
14
|
<!-- pdoc module.is_package = "False" -->
|
|
15
15
|
<!-- pdoc root_module_name = "None" -->
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
|
|
72
72
|
<footer class="footertext">
|
|
73
73
|
spotifywebapiPython</br>
|
|
74
|
-
Version 1.0.
|
|
74
|
+
Version 1.0.165</br>
|
|
75
75
|
<a href="https://developer.spotify.com/documentation/web-api" target="_blank">
|
|
76
76
|
<img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
|
|
77
77
|
A Spotify Web Api Client
|
|
@@ -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.165" -->
|
|
13
13
|
<!-- pdoc module.modulename = "spotifywebapipython.spotifywebplayertoken" -->
|
|
14
14
|
<!-- pdoc module.is_package = "False" -->
|
|
15
15
|
<!-- pdoc root_module_name = "None" -->
|
|
@@ -66,6 +66,12 @@
|
|
|
66
66
|
<li>
|
|
67
67
|
<a class="variable" href="#SpotifyWebPlayerToken.ExpiresIn">ExpiresIn</a>
|
|
68
68
|
</li>
|
|
69
|
+
<li>
|
|
70
|
+
<a class="variable" href="#SpotifyWebPlayerToken.HeaderKey">HeaderKey</a>
|
|
71
|
+
</li>
|
|
72
|
+
<li>
|
|
73
|
+
<a class="variable" href="#SpotifyWebPlayerToken.HeaderValue">HeaderValue</a>
|
|
74
|
+
</li>
|
|
69
75
|
<li>
|
|
70
76
|
<a class="variable" href="#SpotifyWebPlayerToken.IsExpired">IsExpired</a>
|
|
71
77
|
</li>
|
|
@@ -83,7 +89,7 @@
|
|
|
83
89
|
|
|
84
90
|
<footer class="footertext">
|
|
85
91
|
spotifywebapiPython</br>
|
|
86
|
-
Version 1.0.
|
|
92
|
+
Version 1.0.165</br>
|
|
87
93
|
<a href="https://developer.spotify.com/documentation/web-api" target="_blank">
|
|
88
94
|
<img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
|
|
89
95
|
A Spotify Web Api Client
|
|
@@ -233,6 +239,35 @@ Default is <code>tokens.json</code>.</li>
|
|
|
233
239
|
</div>
|
|
234
240
|
|
|
235
241
|
|
|
242
|
+
</div>
|
|
243
|
+
<div id="SpotifyWebPlayerToken.HeaderKey" class="classattr">
|
|
244
|
+
<div class="attr variable">
|
|
245
|
+
<span class="name">HeaderKey</span><span class="annotation">: str</span>
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
</div>
|
|
249
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.HeaderKey"></a>
|
|
250
|
+
|
|
251
|
+
<div class="docstring"><p>Returns a string containing the header key to assign the authorization token value to.
|
|
252
|
+
This will always return 'Authorization'.</p>
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
</div>
|
|
257
|
+
<div id="SpotifyWebPlayerToken.HeaderValue" class="classattr">
|
|
258
|
+
<div class="attr variable">
|
|
259
|
+
<span class="name">HeaderValue</span><span class="annotation">: str</span>
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
</div>
|
|
263
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.HeaderValue"></a>
|
|
264
|
+
|
|
265
|
+
<div class="docstring"><p>Returns the value portion of the authorization header, in the form of 'Bearer {token}'.</p>
|
|
266
|
+
|
|
267
|
+
<p>Example: `Bearer {token value ...}'</p>
|
|
268
|
+
</div>
|
|
269
|
+
|
|
270
|
+
|
|
236
271
|
</div>
|
|
237
272
|
<div id="SpotifyWebPlayerToken.IsExpired" class="classattr">
|
|
238
273
|
<div class="attr variable">
|
|
@@ -436,6 +436,10 @@ class AuthClient:
|
|
|
436
436
|
if tokenStorageFile is None:
|
|
437
437
|
tokenStorageFile = 'tokens.json'
|
|
438
438
|
|
|
439
|
+
# if token clientId not set, then default to shared.
|
|
440
|
+
if clientId is None:
|
|
441
|
+
clientId = 'Shared'
|
|
442
|
+
|
|
439
443
|
# if token providerId not set, then default to shared.
|
|
440
444
|
if tokenProviderId is None:
|
|
441
445
|
tokenProviderId = 'Shared'
|
|
@@ -4,11 +4,9 @@ from datetime import datetime
|
|
|
4
4
|
import json
|
|
5
5
|
from io import BytesIO
|
|
6
6
|
from oauthlib.oauth2 import BackendApplicationClient, WebApplicationClient
|
|
7
|
-
import socket
|
|
8
7
|
from soco import SoCo
|
|
9
8
|
from soco.core import (
|
|
10
9
|
PLAY_MODE_BY_MEANING as SONOS_PLAY_MODE_BY_MEANING,
|
|
11
|
-
PLAY_MODES as SONOS_PLAY_MODES,
|
|
12
10
|
)
|
|
13
11
|
from soco.plugins.sharelink import ShareLinkPlugin
|
|
14
12
|
import time
|
|
@@ -16,7 +14,7 @@ from typing import Tuple, Callable, Union
|
|
|
16
14
|
from urllib3 import PoolManager, Timeout, HTTPResponse
|
|
17
15
|
from urllib.parse import urlencode
|
|
18
16
|
import urllib.parse
|
|
19
|
-
from lxml.etree import fromstring, Element
|
|
17
|
+
from lxml.etree import fromstring, Element
|
|
20
18
|
from lxml import etree
|
|
21
19
|
from zeroconf import Zeroconf
|
|
22
20
|
|
|
@@ -32,6 +30,7 @@ from .spotifyauthtoken import SpotifyAuthToken
|
|
|
32
30
|
from .spotifydiscovery import SpotifyDiscovery
|
|
33
31
|
from .spotifywebapiauthenticationerror import SpotifyWebApiAuthenticationError
|
|
34
32
|
from .spotifywebapierror import SpotifyWebApiError
|
|
33
|
+
from .spotifywebplayertoken import SpotifyWebPlayerToken
|
|
35
34
|
from .zeroconfapi.zeroconfconnect import ZeroconfConnect, ZeroconfGetInfo, ZeroconfResponse, SpotifyZeroconfApiError
|
|
36
35
|
from .zeroconfapi.zeroconfgetinfoalias import ZeroconfGetInfoAlias
|
|
37
36
|
from .sautils import (
|
|
@@ -202,6 +201,8 @@ class SpotifyClient:
|
|
|
202
201
|
self._AuthClient:AuthClient = None
|
|
203
202
|
self._ConfigurationCache:dict = {}
|
|
204
203
|
self._DefaultDeviceId:str = None
|
|
204
|
+
self._HasSpotifyWebPlayerCredentials:bool = False
|
|
205
|
+
self._IsDisposed:bool = False
|
|
205
206
|
self._Manager:PoolManager = manager
|
|
206
207
|
self._SpotifyConnectUsername:str = spotifyConnectUsername
|
|
207
208
|
self._SpotifyConnectPassword:str = spotifyConnectPassword
|
|
@@ -243,7 +244,7 @@ class SpotifyClient:
|
|
|
243
244
|
Finalizes the instance of the class.
|
|
244
245
|
"""
|
|
245
246
|
try:
|
|
246
|
-
self.
|
|
247
|
+
self.Dispose()
|
|
247
248
|
except:
|
|
248
249
|
# ignore exceptions since we are shutting down.
|
|
249
250
|
pass
|
|
@@ -257,7 +258,7 @@ class SpotifyClient:
|
|
|
257
258
|
def __exit__(self, etype, value, traceback) -> None:
|
|
258
259
|
# if called via a context manager (e.g. "with" statement).
|
|
259
260
|
try:
|
|
260
|
-
self.
|
|
261
|
+
self.Dispose()
|
|
261
262
|
except:
|
|
262
263
|
# ignore exceptions since we are shutting down.
|
|
263
264
|
pass
|
|
@@ -364,6 +365,15 @@ class SpotifyClient:
|
|
|
364
365
|
self._DefaultDeviceId = value
|
|
365
366
|
|
|
366
367
|
|
|
368
|
+
@property
|
|
369
|
+
def HasSpotifyWebPlayerCredentials(self) -> bool:
|
|
370
|
+
"""
|
|
371
|
+
Returns true if Spotify Web Player credentials have been configured in the Token Cache File;
|
|
372
|
+
otherwise, False.
|
|
373
|
+
"""
|
|
374
|
+
return self._HasSpotifyWebPlayerCredentials
|
|
375
|
+
|
|
376
|
+
|
|
367
377
|
@property
|
|
368
378
|
def SpotifyConnectDirectoryEnabled(self) -> bool:
|
|
369
379
|
"""
|
|
@@ -765,6 +775,57 @@ class SpotifyClient:
|
|
|
765
775
|
msg.ResponseData = responseData
|
|
766
776
|
|
|
767
777
|
|
|
778
|
+
def _GetSpotifyWebPlayerTokenHeaderValue(
|
|
779
|
+
self,
|
|
780
|
+
scDevice:SpotifyConnectDevice=None,
|
|
781
|
+
) -> str:
|
|
782
|
+
"""
|
|
783
|
+
Retrieves a SpotifyWebPlayer token header value, if Spotify Web Player cookie credentials
|
|
784
|
+
are defined in the Token Cache File.
|
|
785
|
+
|
|
786
|
+
Args:
|
|
787
|
+
scDevice (SpotifyConnectDevice):
|
|
788
|
+
A resolved SpotifyConnectDevice object.
|
|
789
|
+
|
|
790
|
+
Returns:
|
|
791
|
+
A token header value that can be used in the request header authorization variable;
|
|
792
|
+
otherwise, None.
|
|
793
|
+
|
|
794
|
+
The value returned will be a `Bearer: token` string that can be used in a request header
|
|
795
|
+
authorization key for Spotify Web API endpoints that start playback on a devoce.
|
|
796
|
+
|
|
797
|
+
The Token Cache File is queried for a key value of "SpotifyWebPlayerCookieCredentials/Shared/YOUR_SPOTIFY_LOGIN_ID",
|
|
798
|
+
which will contain the `sp_key` and `sp_dc` values of the cookie credentials. These
|
|
799
|
+
credentials are then converted into an authorization access token which is used by
|
|
800
|
+
Spotify Web API endpoints to start playback on the specified device id.
|
|
801
|
+
"""
|
|
802
|
+
result:SpotifyWebPlayerToken = None
|
|
803
|
+
|
|
804
|
+
# are spotify web player credentials configured? if not, then don't bother!
|
|
805
|
+
if (not self._HasSpotifyWebPlayerCredentials):
|
|
806
|
+
return result
|
|
807
|
+
|
|
808
|
+
# was the device resolved? if not, then don't bother!
|
|
809
|
+
if (not isinstance(scDevice, SpotifyConnectDevice)):
|
|
810
|
+
return result
|
|
811
|
+
|
|
812
|
+
# is the device restricted or Sonos?
|
|
813
|
+
if (scDevice.IsSonos or scDevice.IsRestricted):
|
|
814
|
+
|
|
815
|
+
# get spotify web player access token info from spotify web player cookie credentials.
|
|
816
|
+
_logsi.LogVerbose("Converting Spotify Web Player cookie credentials to an access token for loginId \"%s\"" % (self._SpotifyConnectLoginId))
|
|
817
|
+
tokenWP = SpotifyWebPlayerToken(profileId=self._SpotifyConnectLoginId,
|
|
818
|
+
tokenStorageDir=self._TokenStorageDir,
|
|
819
|
+
tokenStorageFile=self._TokenStorageFile)
|
|
820
|
+
if tokenWP is not None:
|
|
821
|
+
result = tokenWP.HeaderValue
|
|
822
|
+
_logsi.LogVerbose("Playback will be started using Spotify Web Player authorization access token for device: %s" % (scDevice.Title))
|
|
823
|
+
|
|
824
|
+
# return result to caller.
|
|
825
|
+
return result
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
768
829
|
def _ResolveDeviceObject(
|
|
769
830
|
self,
|
|
770
831
|
device:str | SpotifyConnectDevice,
|
|
@@ -857,6 +918,26 @@ class SpotifyClient:
|
|
|
857
918
|
_logsi.LogVerbose("Spotify Connect LoginId not specified on class constructor; using Spotify UserProfile ID value \"%s\"" % (self._UserProfile.Id), colorValue=SIColors.Coral)
|
|
858
919
|
self._SpotifyConnectLoginId = self._UserProfile.Id
|
|
859
920
|
|
|
921
|
+
try:
|
|
922
|
+
|
|
923
|
+
# check if the Spotify Web Player cookie credentials are defined in Token cache File.
|
|
924
|
+
# Example: SpotifyWebPlayerCookieCredentials/Shared/YOUR_SPOTIFY_LOGIN_ID
|
|
925
|
+
self._HasSpotifyWebPlayerCredentials = AuthClient.HasTokenForKey(
|
|
926
|
+
clientId=None,
|
|
927
|
+
tokenProviderId='SpotifyWebPlayerCookieCredentials',
|
|
928
|
+
tokenProfileId=self._SpotifyConnectLoginId,
|
|
929
|
+
tokenStorageDir=self._TokenStorageDir,
|
|
930
|
+
tokenStorageFile=self._TokenStorageFile,
|
|
931
|
+
)
|
|
932
|
+
|
|
933
|
+
except Exception as ex:
|
|
934
|
+
|
|
935
|
+
# could not detect player credentials; assume none.
|
|
936
|
+
self._HasSpotifyWebPlayerCredentials = False
|
|
937
|
+
|
|
938
|
+
# ignore exceptions, as transfer will still work.
|
|
939
|
+
pass
|
|
940
|
+
|
|
860
941
|
# create new Spotify Connect Directory instance.
|
|
861
942
|
self._SpotifyConnectDirectory = SpotifyConnectDirectoryTask(self, self._ZeroconfClient, self._SpotifyConnectDiscoveryTimeout)
|
|
862
943
|
self._SpotifyConnectDirectory.daemon = True
|
|
@@ -976,6 +1057,51 @@ class SpotifyClient:
|
|
|
976
1057
|
return SPOTIFY_DEFAULT_MARKET
|
|
977
1058
|
|
|
978
1059
|
|
|
1060
|
+
def Dispose(self) -> None:
|
|
1061
|
+
"""
|
|
1062
|
+
Releases all resources of this instance.
|
|
1063
|
+
|
|
1064
|
+
This method stops the Spotify Connect Directory task, and ensures
|
|
1065
|
+
that any event wirings are removed.
|
|
1066
|
+
"""
|
|
1067
|
+
apiMethodName:str = 'Dispose'
|
|
1068
|
+
|
|
1069
|
+
try:
|
|
1070
|
+
|
|
1071
|
+
# trace.
|
|
1072
|
+
apiMethodParms = _logsi.EnterMethodParmList(SILevel.Debug, apiMethodName)
|
|
1073
|
+
_logsi.LogMethodParmList(SILevel.Verbose, "Disposing of SpotifyClient instance", apiMethodParms)
|
|
1074
|
+
|
|
1075
|
+
# are we already disposed? if so, then don't do it again!
|
|
1076
|
+
if (self._IsDisposed == True):
|
|
1077
|
+
_logsi.LogVerbose("SpotifyClient instance is already disposed")
|
|
1078
|
+
return
|
|
1079
|
+
else:
|
|
1080
|
+
# indicate we are disposed (or in the process thereof).
|
|
1081
|
+
self._IsDisposed = True
|
|
1082
|
+
|
|
1083
|
+
# shut down the directory task.
|
|
1084
|
+
try:
|
|
1085
|
+
self.StopSpotifyConnectDirectoryTask()
|
|
1086
|
+
except Exception as ex:
|
|
1087
|
+
pass # ignore exceptions as they have already been logged.
|
|
1088
|
+
|
|
1089
|
+
# trace.
|
|
1090
|
+
_logsi.LogVerbose("Disposal of SpotifyClient instance completed successfully")
|
|
1091
|
+
|
|
1092
|
+
except Exception as ex:
|
|
1093
|
+
|
|
1094
|
+
# log unhandled exception.
|
|
1095
|
+
_logsi.LogException(SAAppMessages.UNHANDLED_EXCEPTION.format(apiMethodName, str(ex)), ex)
|
|
1096
|
+
|
|
1097
|
+
# ignore exceptions as we are disposing!
|
|
1098
|
+
|
|
1099
|
+
finally:
|
|
1100
|
+
|
|
1101
|
+
# trace.
|
|
1102
|
+
_logsi.LeaveMethod(SILevel.Debug, apiMethodName)
|
|
1103
|
+
|
|
1104
|
+
|
|
979
1105
|
def MakeRequest(
|
|
980
1106
|
self,
|
|
981
1107
|
method:str,
|
|
@@ -1271,13 +1397,13 @@ class SpotifyClient:
|
|
|
1271
1397
|
|
|
1272
1398
|
else:
|
|
1273
1399
|
|
|
1274
|
-
# trace.
|
|
1275
|
-
_logsi.LogVerbose("Items will be added to playback queue for device: %s" % (scDevice.Title))
|
|
1276
|
-
|
|
1277
1400
|
# was the deviceId resolved?
|
|
1278
1401
|
# if not, then raise an exception as the Spotify Web API request will fail anyway.
|
|
1279
1402
|
self._CheckForDeviceNotFound(scDevice, deviceId)
|
|
1280
1403
|
|
|
1404
|
+
# trace.
|
|
1405
|
+
_logsi.LogVerbose("Items will be added to playback queue for device: %s" % (scDevice.Title))
|
|
1406
|
+
|
|
1281
1407
|
# process all uri's.
|
|
1282
1408
|
for idx in range(0, len(arrUris)):
|
|
1283
1409
|
|
|
@@ -9696,7 +9822,7 @@ class SpotifyClient:
|
|
|
9696
9822
|
# in this case, we will exit and let the calling method switch to the Sonos device and play
|
|
9697
9823
|
# using the Sonos local queue.
|
|
9698
9824
|
if (scDevice.IsSonos):
|
|
9699
|
-
|
|
9825
|
+
|
|
9700
9826
|
# check if the Spotify Desktop Application Client oauth2 token is defined.
|
|
9701
9827
|
hasToken:bool = AuthClient.HasTokenForKey(
|
|
9702
9828
|
clientId=SPOTIFY_DESKTOP_APP_CLIENT_ID,
|
|
@@ -11647,9 +11773,10 @@ class SpotifyClient:
|
|
|
11647
11773
|
|
|
11648
11774
|
Args:
|
|
11649
11775
|
contextUri (str):
|
|
11650
|
-
Spotify URI of the context to play.
|
|
11776
|
+
Spotify URI (or URL) of the context to play.
|
|
11651
11777
|
Valid contexts are albums, artists & playlists.
|
|
11652
11778
|
Example: `spotify:album:6vc9OTcyd3hyzabCmsdnwE`.
|
|
11779
|
+
Example: `https://open.spotify.com/playlist/4ufyQwaLq1MR49KvGRCNAo`.
|
|
11653
11780
|
offsetUri (str):
|
|
11654
11781
|
Indicates from what Uri in the context playback should start.
|
|
11655
11782
|
Only available when contextUri corresponds to an artist, album or playlist.
|
|
@@ -11743,9 +11870,19 @@ class SpotifyClient:
|
|
|
11743
11870
|
# resolve the device object from the device idl activate if it's dormant.
|
|
11744
11871
|
scDevice = self._ResolveDeviceObject(deviceId, True)
|
|
11745
11872
|
|
|
11873
|
+
# are spotify web player credentials configured?
|
|
11874
|
+
# if so, then we will use them to create an authorization access token for the
|
|
11875
|
+
# Spotify Web API endpoint that starts playback on the device; this token has the
|
|
11876
|
+
# required access to control "restricted" devices (such as Sonos).
|
|
11877
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue(scDevice)
|
|
11878
|
+
|
|
11746
11879
|
# is this an active Sonos device?
|
|
11747
11880
|
# Sonos device can still be active, even if there is no active device in Spotify playstate.
|
|
11748
|
-
if
|
|
11881
|
+
# if spotify web player credentials are NOT configured, then we will transfer control to the
|
|
11882
|
+
# Sonos device local queue for playback; otherwise, we will just call the Spotify Web API
|
|
11883
|
+
# endpoint below with the elevated authorization access token to start playback under the
|
|
11884
|
+
# control of Spotify Connect.
|
|
11885
|
+
if (scDevice is not None) and (scDevice.IsSonos) and (accessTokenHeaderValue is None):
|
|
11749
11886
|
|
|
11750
11887
|
# trace.
|
|
11751
11888
|
_logsi.LogVerbose("Context will be played on Sonos local queue for device: %s" % (scDevice.Title))
|
|
@@ -11818,13 +11955,13 @@ class SpotifyClient:
|
|
|
11818
11955
|
|
|
11819
11956
|
else:
|
|
11820
11957
|
|
|
11821
|
-
# trace.
|
|
11822
|
-
_logsi.LogVerbose("Context will be played on the Spotify Connect device via Spotify Web API")
|
|
11823
|
-
|
|
11824
11958
|
# was the deviceId resolved?
|
|
11825
11959
|
# if not, then raise an exception as the Spotify Web API request will fail anyway.
|
|
11826
11960
|
self._CheckForDeviceNotFound(scDevice, deviceId)
|
|
11827
11961
|
|
|
11962
|
+
# trace.
|
|
11963
|
+
_logsi.LogVerbose("Context will be played on the Spotify Connect device via Spotify Web API")
|
|
11964
|
+
|
|
11828
11965
|
# build spotify web api request parameters.
|
|
11829
11966
|
reqData:dict = \
|
|
11830
11967
|
{
|
|
@@ -11834,7 +11971,7 @@ class SpotifyClient:
|
|
|
11834
11971
|
if (positionMS is not None) and (positionMS > 0):
|
|
11835
11972
|
reqData['position_ms'] = { 'position_ms': positionMS }
|
|
11836
11973
|
|
|
11837
|
-
# offset should only be applied if it's not
|
|
11974
|
+
# offset should only be applied if it's not zero / a uri is specified; otherwise,
|
|
11838
11975
|
# it will not shuffle correctly if shuffle is enabled.
|
|
11839
11976
|
if offsetUri is not None:
|
|
11840
11977
|
reqData['offset'] = { 'uri': offsetUri }
|
|
@@ -11848,7 +11985,7 @@ class SpotifyClient:
|
|
|
11848
11985
|
|
|
11849
11986
|
# execute spotify web api request.
|
|
11850
11987
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/me/player/play{url_parms}'.format(url_parms=urlParms))
|
|
11851
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
11988
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
11852
11989
|
msg.RequestJson = reqData
|
|
11853
11990
|
self.MakeRequest('PUT', msg)
|
|
11854
11991
|
|
|
@@ -12092,12 +12229,22 @@ class SpotifyClient:
|
|
|
12092
12229
|
# resolve the device object from the device id; activate if it's dormant.
|
|
12093
12230
|
scDevice = self._ResolveDeviceObject(deviceId, True)
|
|
12094
12231
|
|
|
12232
|
+
# are spotify web player credentials configured?
|
|
12233
|
+
# if so, then we will use them to create an authorization access token for the
|
|
12234
|
+
# Spotify Web API endpoint that starts playback on the device; this token has the
|
|
12235
|
+
# required access to control "restricted" devices (such as Sonos).
|
|
12236
|
+
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue(scDevice)
|
|
12237
|
+
|
|
12095
12238
|
# is this an active Sonos device?
|
|
12096
12239
|
# Sonos device can still be active, even if there is no active device in Spotify playstate.
|
|
12097
|
-
if
|
|
12240
|
+
# if spotify web player credentials are NOT configured, then we will transfer control to the
|
|
12241
|
+
# Sonos device local queue for playback; otherwise, we will just call the Spotify Web API
|
|
12242
|
+
# endpoint below with the elevated authorization access token to start playback under the
|
|
12243
|
+
# control of Spotify Connect.
|
|
12244
|
+
if (scDevice is not None) and (scDevice.IsSonos) and (accessTokenHeaderValue is None):
|
|
12098
12245
|
|
|
12099
12246
|
# trace.
|
|
12100
|
-
_logsi.LogVerbose("
|
|
12247
|
+
_logsi.LogVerbose("Tracks will be played on Sonos local queue for device: %s" % (scDevice.Title))
|
|
12101
12248
|
|
|
12102
12249
|
# get the Sonos Controller player instance.
|
|
12103
12250
|
sonosPlayer:SoCo = self.SpotifyConnectDirectory.GetSonosPlayer(scDevice)
|
|
@@ -12143,13 +12290,13 @@ class SpotifyClient:
|
|
|
12143
12290
|
|
|
12144
12291
|
else:
|
|
12145
12292
|
|
|
12146
|
-
# trace.
|
|
12147
|
-
_logsi.LogVerbose("Track list will be played on the Spotify Connect device via Spotify Web API")
|
|
12148
|
-
|
|
12149
12293
|
# was the deviceId resolved?
|
|
12150
12294
|
# if not, then raise an exception as the Spotify Web API request will fail anyway.
|
|
12151
12295
|
self._CheckForDeviceNotFound(scDevice, deviceId)
|
|
12152
12296
|
|
|
12297
|
+
# trace.
|
|
12298
|
+
_logsi.LogVerbose("Tracks will be played on the Spotify Connect device via Spotify Web API")
|
|
12299
|
+
|
|
12153
12300
|
# build spotify web api request parameters.
|
|
12154
12301
|
reqData:dict = \
|
|
12155
12302
|
{
|
|
@@ -12165,7 +12312,7 @@ class SpotifyClient:
|
|
|
12165
12312
|
|
|
12166
12313
|
# execute spotify web api request.
|
|
12167
12314
|
msg:SpotifyApiMessage = SpotifyApiMessage(apiMethodName, '/me/player/play{url_parms}'.format(url_parms=urlParms))
|
|
12168
|
-
msg.RequestHeaders[self.AuthToken.HeaderKey] = self.AuthToken.HeaderValue
|
|
12315
|
+
msg.RequestHeaders[self.AuthToken.HeaderKey] = accessTokenHeaderValue or self.AuthToken.HeaderValue
|
|
12169
12316
|
msg.RequestJson = reqData
|
|
12170
12317
|
self.MakeRequest('PUT', msg)
|
|
12171
12318
|
|
|
@@ -346,6 +346,23 @@ class SpotifyConnectDirectoryTask(threading.Thread):
|
|
|
346
346
|
|
|
347
347
|
finally:
|
|
348
348
|
|
|
349
|
+
try:
|
|
350
|
+
|
|
351
|
+
# unwire event handlers.
|
|
352
|
+
_logsi.LogVerbose("%s - Unwiring event handlers" % (self.name))
|
|
353
|
+
if (self.DeviceAdded is not None):
|
|
354
|
+
self.DeviceAdded -= self.OnDeviceAdded
|
|
355
|
+
if (self.DeviceRemoved is not None):
|
|
356
|
+
self.DeviceRemoved -= self.OnDeviceRemoved
|
|
357
|
+
if (self.DeviceUpdated is not None):
|
|
358
|
+
self.DeviceUpdated -= self.OnDeviceUpdated
|
|
359
|
+
|
|
360
|
+
except:
|
|
361
|
+
|
|
362
|
+
# trace.
|
|
363
|
+
_logsi.LogException("%s - An unhandled exception occured while unwiring event handlers: %s" % (self.name, str(ex)), ex, logToSystemLogger=False)
|
|
364
|
+
# ignore exceptions, since we are shutting down.
|
|
365
|
+
|
|
349
366
|
try:
|
|
350
367
|
|
|
351
368
|
# stop spotify connect zeroconf discovery browser.
|
|
@@ -142,6 +142,25 @@ class SpotifyWebPlayerToken:
|
|
|
142
142
|
return self._ExpiresIn
|
|
143
143
|
|
|
144
144
|
|
|
145
|
+
@property
|
|
146
|
+
def HeaderKey(self) -> str:
|
|
147
|
+
"""
|
|
148
|
+
Returns a string containing the header key to assign the authorization token value to.
|
|
149
|
+
This will always return 'Authorization'.
|
|
150
|
+
"""
|
|
151
|
+
return 'Authorization'
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def HeaderValue(self) -> str:
|
|
156
|
+
"""
|
|
157
|
+
Returns the value portion of the authorization header, in the form of 'Bearer {token}'.
|
|
158
|
+
|
|
159
|
+
Example: `Bearer {token value ...}'
|
|
160
|
+
"""
|
|
161
|
+
return 'Bearer {token}'.format(token=self.AccessToken)
|
|
162
|
+
|
|
163
|
+
|
|
145
164
|
@property
|
|
146
165
|
def IsExpired(self) -> bool:
|
|
147
166
|
"""
|
|
File without changes
|
|
File without changes
|
{spotifywebapiPython-1.0.163.dist-info → spotifywebapiPython-1.0.165.dist-info}/top_level.txt
RENAMED
|
File without changes
|