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.
- spotifywebapipython/__init__.py +35 -0
- spotifywebapipython/const.py +114 -0
- spotifywebapipython/docs/__init__.html +2156 -0
- spotifywebapipython/docs/codecopy.js +70 -0
- spotifywebapipython/docs/index.html +514 -0
- spotifywebapipython/docs/search.js +46 -0
- spotifywebapipython/docs/spotifywebapipython/const.html +636 -0
- spotifywebapipython/docs/spotifywebapipython/saappmessages.html +540 -0
- spotifywebapipython/docs/spotifywebapipython/sautils.html +620 -0
- spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html +341 -0
- spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html +598 -0
- spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html +612 -0
- spotifywebapipython/docs/spotifywebapipython/spotifyclient.html +16557 -0
- spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html +518 -0
- spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html +421 -0
- spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html +400 -0
- spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html +635 -0
- spotifywebapipython/docs/spotifywebapipython.ico +0 -0
- spotifywebapipython/docs/spotifywebapipython_OLD.ico +0 -0
- spotifywebapipython/models/__init__.py +121 -0
- spotifywebapipython/models/album.py +170 -0
- spotifywebapipython/models/albumpagesaved.py +85 -0
- spotifywebapipython/models/albumpagesimplified.py +88 -0
- spotifywebapipython/models/albumsaved.py +102 -0
- spotifywebapipython/models/albumsimplified.py +308 -0
- spotifywebapipython/models/artist.py +146 -0
- spotifywebapipython/models/artistinfo.py +282 -0
- spotifywebapipython/models/artistinfotourevent.py +127 -0
- spotifywebapipython/models/artistpage.py +70 -0
- spotifywebapipython/models/artistsimplified.py +163 -0
- spotifywebapipython/models/audiobook.py +87 -0
- spotifywebapipython/models/audiobookpagesimplified.py +88 -0
- spotifywebapipython/models/audiobooksimplified.py +362 -0
- spotifywebapipython/models/audiofeatures.py +333 -0
- spotifywebapipython/models/author.py +67 -0
- spotifywebapipython/models/category.py +168 -0
- spotifywebapipython/models/categorypage.py +70 -0
- spotifywebapipython/models/chapter.py +84 -0
- spotifywebapipython/models/chapterpagesimplified.py +88 -0
- spotifywebapipython/models/chaptersimplified.py +387 -0
- spotifywebapipython/models/context.py +113 -0
- spotifywebapipython/models/copyright.py +79 -0
- spotifywebapipython/models/device.py +301 -0
- spotifywebapipython/models/episode.py +84 -0
- spotifywebapipython/models/episodepagesaved.py +85 -0
- spotifywebapipython/models/episodepagesimplified.py +88 -0
- spotifywebapipython/models/episodesaved.py +99 -0
- spotifywebapipython/models/episodesimplified.py +370 -0
- spotifywebapipython/models/explicitcontent.py +80 -0
- spotifywebapipython/models/externalids.py +91 -0
- spotifywebapipython/models/externalurls.py +104 -0
- spotifywebapipython/models/followers.py +81 -0
- spotifywebapipython/models/imageobject.py +193 -0
- spotifywebapipython/models/imagevibrantcolors.py +182 -0
- spotifywebapipython/models/linkedfrom.py +165 -0
- spotifywebapipython/models/narrator.py +67 -0
- spotifywebapipython/models/owner.py +162 -0
- spotifywebapipython/models/pageobject.py +343 -0
- spotifywebapipython/models/playeractions.py +196 -0
- spotifywebapipython/models/playerlastplayedinfo.py +334 -0
- spotifywebapipython/models/playerplaystate.py +467 -0
- spotifywebapipython/models/playerqueueinfo.py +207 -0
- spotifywebapipython/models/playhistory.py +136 -0
- spotifywebapipython/models/playhistorypage.py +85 -0
- spotifywebapipython/models/playlist.py +125 -0
- spotifywebapipython/models/playlistpage.py +85 -0
- spotifywebapipython/models/playlistpagesimplified.py +107 -0
- spotifywebapipython/models/playlistsimplified.py +334 -0
- spotifywebapipython/models/playlisttrack.py +143 -0
- spotifywebapipython/models/playlisttracksummary.py +80 -0
- spotifywebapipython/models/recommendationseed.py +135 -0
- spotifywebapipython/models/restrictions.py +86 -0
- spotifywebapipython/models/resumepoint.py +79 -0
- spotifywebapipython/models/searchresponse.py +391 -0
- spotifywebapipython/models/searchresultbase.py +299 -0
- spotifywebapipython/models/show.py +87 -0
- spotifywebapipython/models/showpagesaved.py +85 -0
- spotifywebapipython/models/showpagesimplified.py +88 -0
- spotifywebapipython/models/showsaved.py +99 -0
- spotifywebapipython/models/showsimplified.py +320 -0
- spotifywebapipython/models/spotifyconnectdevice.py +321 -0
- spotifywebapipython/models/spotifyconnectdevices.py +441 -0
- spotifywebapipython/models/track.py +142 -0
- spotifywebapipython/models/trackpage.py +110 -0
- spotifywebapipython/models/trackpagesaved.py +85 -0
- spotifywebapipython/models/trackpagesimplified.py +88 -0
- spotifywebapipython/models/trackrecommendations.py +88 -0
- spotifywebapipython/models/tracksaved.py +99 -0
- spotifywebapipython/models/tracksimplified.py +398 -0
- spotifywebapipython/models/userprofile.py +184 -0
- spotifywebapipython/models/userprofilesimplified.py +206 -0
- spotifywebapipython/models/zeroconfdiscoveryresult.py +592 -0
- spotifywebapipython/models/zeroconfproperty.py +93 -0
- spotifywebapipython/oauthcli/__init__.py +7 -0
- spotifywebapipython/oauthcli/authclient.py +1229 -0
- spotifywebapipython/saappmessages.py +86 -0
- spotifywebapipython/sautils.py +285 -0
- spotifywebapipython/spotifyapierror.py +66 -0
- spotifywebapipython/spotifyapimessage.py +269 -0
- spotifywebapipython/spotifyauthtoken.py +264 -0
- spotifywebapipython/spotifyclient.py +17885 -0
- spotifywebapipython/spotifyconnect/__init__.py +19 -0
- spotifywebapipython/spotifyconnect/spotifyconnectdeviceeventargs.py +67 -0
- spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py +2564 -0
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastapptask.py +467 -0
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastcontroller.py +701 -0
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastlistener.py +359 -0
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastmultizonelistener.py +212 -0
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfexceptions.py +20 -0
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconflistener.py +335 -0
- spotifywebapipython/spotifydiscovery.py +473 -0
- spotifywebapipython/spotifymediatypes.py +53 -0
- spotifywebapipython/spotifywebapiauthenticationerror.py +122 -0
- spotifywebapipython/spotifywebapierror.py +106 -0
- spotifywebapipython/spotifywebplayertoken.py +743 -0
- spotifywebapipython/vibrant/__init__.py +17 -0
- spotifywebapipython/vibrant/generator.py +261 -0
- spotifywebapipython/vibrant/image.py +100 -0
- spotifywebapipython/vibrant/main.py +34 -0
- spotifywebapipython/vibrant/models.py +93 -0
- spotifywebapipython/vibrant/utils.py +56 -0
- spotifywebapipython/zeroconfapi/__init__.py +23 -0
- spotifywebapipython/zeroconfapi/authenticationtypes.py +38 -0
- spotifywebapipython/zeroconfapi/blobbuilder.py +370 -0
- spotifywebapipython/zeroconfapi/credentials.py +37 -0
- spotifywebapipython/zeroconfapi/cryptodiffiehellman.py +89 -0
- spotifywebapipython/zeroconfapi/helpers.py +64 -0
- spotifywebapipython/zeroconfapi/spotifyzeroconfapierror.py +108 -0
- spotifywebapipython/zeroconfapi/zeroconfconnect.py +1327 -0
- spotifywebapipython/zeroconfapi/zeroconfgetinfo.py +572 -0
- spotifywebapipython/zeroconfapi/zeroconfgetinfoalias.py +109 -0
- spotifywebapipython/zeroconfapi/zeroconfgetinfodrmmediaformat.py +90 -0
- spotifywebapipython/zeroconfapi/zeroconfresponse.py +195 -0
- spotifywebapipython-1.0.242.dist-info/LICENSE +22 -0
- spotifywebapipython-1.0.242.dist-info/METADATA +219 -0
- spotifywebapipython-1.0.242.dist-info/RECORD +138 -0
- spotifywebapipython-1.0.242.dist-info/WHEEL +5 -0
- spotifywebapipython-1.0.242.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,635 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<meta name="generator" content="pdoc 14.3.0"/>
|
|
7
|
+
<title> spotifywebapipython ‐
|
|
8
|
+
spotifywebplayertoken API Documentation
|
|
9
|
+
</title>
|
|
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
|
+
<!-- build env - Package Name = "spotifywebapipython" -->
|
|
12
|
+
<!-- build env - Package Version = "1.0.242" -->
|
|
13
|
+
<!-- pdoc module.modulename = "spotifywebapipython.spotifywebplayertoken" -->
|
|
14
|
+
<!-- pdoc module.is_package = "False" -->
|
|
15
|
+
<!-- pdoc root_module_name = "None" -->
|
|
16
|
+
<!-- pdoc namespace levels = "1" -->
|
|
17
|
+
<script type="text/javascript" src="../codecopy.js"></script>
|
|
18
|
+
|
|
19
|
+
<style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style>
|
|
20
|
+
<style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#49483e}.pdoc-code{background:#272822; color:#f8f8f2}.pdoc-code .c{color:#75715e}.pdoc-code .err{color:#960050; background-color:#1e0010}.pdoc-code .esc{color:#f8f8f2}.pdoc-code .g{color:#f8f8f2}.pdoc-code .k{color:#66d9ef}.pdoc-code .l{color:#ae81ff}.pdoc-code .n{color:#ffc633}.pdoc-code .o{color:#f92672}.pdoc-code .x{color:#f8f8f2}.pdoc-code .p{color:#f8f8f2}.pdoc-code .ch{color:#75715e}.pdoc-code .cm{color:#75715e}.pdoc-code .cp{color:#75715e}.pdoc-code .cpf{color:#75715e}.pdoc-code .c1{color:#75715e}.pdoc-code .cs{color:#75715e}.pdoc-code .gd{color:#f92672}.pdoc-code .ge{color:#f8f8f2; font-style:italic}.pdoc-code .gr{color:#f8f8f2}.pdoc-code .gh{color:#f8f8f2}.pdoc-code .gi{color:#a6e22e}.pdoc-code .go{color:#66d9ef}.pdoc-code .gp{color:#f92672; font-weight:bold}.pdoc-code .gs{color:#f8f8f2; font-weight:bold}.pdoc-code .gu{color:#75715e}.pdoc-code .gt{color:#f8f8f2}.pdoc-code .kc{color:#66d9ef}.pdoc-code .kd{color:#66d9ef}.pdoc-code .kn{color:#f92672}.pdoc-code .kp{color:#66d9ef}.pdoc-code .kr{color:#66d9ef}.pdoc-code .kt{color:#66d9ef}.pdoc-code .ld{color:#e6db74}.pdoc-code .m{color:#ae81ff}.pdoc-code .s{color:#e6db74}.pdoc-code .na{color:#a6e22e}.pdoc-code .nb{color:#f8f8f2}.pdoc-code .nc{color:#a6e22e}.pdoc-code .no{color:#66d9ef}.pdoc-code .nd{color:#a6e22e}.pdoc-code .ni{color:#f8f8f2}.pdoc-code .ne{color:#a6e22e}.pdoc-code .nf{color:#a6e22e}.pdoc-code .nl{color:#f8f8f2}.pdoc-code .nn{color:#f8f8f2}.pdoc-code .nx{color:#a6e22e}.pdoc-code .py{color:#f8f8f2}.pdoc-code .nt{color:#f92672}.pdoc-code .nv{color:#f8f8f2}.pdoc-code .ow{color:#f92672}.pdoc-code .w{color:#f8f8f2}.pdoc-code .mb{color:#ae81ff}.pdoc-code .mf{color:#ae81ff}.pdoc-code .mh{color:#ae81ff}.pdoc-code .mi{color:#ae81ff}.pdoc-code .mo{color:#ae81ff}.pdoc-code .sa{color:#e6db74}.pdoc-code .sb{color:#e6db74}.pdoc-code .sc{color:#e6db74}.pdoc-code .dl{color:#e6db74}.pdoc-code .sd{color:#e6db74}.pdoc-code .s2{color:#e6db74}.pdoc-code .se{color:#ae81ff}.pdoc-code .sh{color:#e6db74}.pdoc-code .si{color:#e6db74}.pdoc-code .sx{color:#e6db74}.pdoc-code .sr{color:#e6db74}.pdoc-code .s1{color:#e6db74}.pdoc-code .ss{color:#e6db74}.pdoc-code .bp{color:#f8f8f2}.pdoc-code .fm{color:#a6e22e}.pdoc-code .vc{color:#f8f8f2}.pdoc-code .vg{color:#f8f8f2}.pdoc-code .vi{color:#f8f8f2}.pdoc-code .vm{color:#f8f8f2}</style>
|
|
21
|
+
<style>/*! theme.css */:root{--pdoc-background:#212529;}.pdoc{--text:#f7f7f7;--muted:#9d9d9d;--link:#58a6ff;--link-hover:#3989ff;--code:#333;--active:#555;--accent:#343434;--accent2:#555;--nav-hover:rgba(0, 0, 0, 0.1);--name:#77C1FF;--def:#0cdd0c;--annotation:#00c037;}</style>
|
|
22
|
+
<style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;z-index:999;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem;}.git-button{display:none !important;}nav input[type="search"]{max-width:77%;}nav input[type="search"]:first-child{margin-top:-6px;}nav input[type="search"]:valid ~ *{display:none !important;}}@media (min-width:770px){:root{--sidebar-width:clamp(12.5rem, 28vw, 22rem);}nav{position:fixed;overflow:auto;height:100vh;width:var(--sidebar-width);}main, header{padding:3rem 2rem 3rem calc(var(--sidebar-width) + 3rem);width:calc(54rem + var(--sidebar-width));max-width:100%;}header + main{margin-top:-4rem;}#navtoggle{display:none;}}#togglestate{position:absolute;height:0;opacity:0;}nav.pdoc{--pad:clamp(0.5rem, 2vw, 1.75rem);--indent:1.5rem;background-color:var(--accent);border-right:1px solid var(--accent2);box-shadow:0 0 20px rgba(50, 50, 50, .2) inset;padding:0 0 0 var(--pad);overflow-wrap:anywhere;scrollbar-width:thin; scrollbar-color:var(--accent2) transparent; z-index:1}nav.pdoc::-webkit-scrollbar{width:.4rem; }nav.pdoc::-webkit-scrollbar-thumb{background-color:var(--accent2); }nav.pdoc > div{padding:var(--pad) 0;}nav.pdoc .module-list-button{display:inline-flex;align-items:center;color:var(--text);border-color:var(--muted);margin-bottom:1rem;}nav.pdoc .module-list-button:hover{border-color:var(--text);}nav.pdoc input[type=search]{display:block;outline-offset:0;width:calc(100% - var(--pad));}nav.pdoc .logo{max-width:calc(100% - var(--pad));max-height:35vh;display:block;margin:0 auto 1rem;transform:translate(calc(-.5 * var(--pad)), 0);}nav.pdoc ul{list-style:none;padding-left:0;}nav.pdoc > div > ul{margin-left:calc(0px - var(--pad));}nav.pdoc li a{padding:.2rem 0 .2rem calc(var(--pad) + var(--indent));}nav.pdoc > div > ul > li > a{padding-left:var(--pad);}nav.pdoc li{transition:all 100ms;}nav.pdoc li:hover{background-color:var(--nav-hover);}nav.pdoc a, nav.pdoc a:hover{color:var(--text);}nav.pdoc a{display:block;}nav.pdoc > h2:first-of-type{margin-top:1.5rem;}nav.pdoc .class:before{content:"class ";color:var(--muted);}nav.pdoc .function:after{content:"()";color:var(--muted);}nav.pdoc footer:before{content:"";display:block;width:calc(100% - var(--pad));border-top:solid var(--accent2) 1px;margin-top:1.5rem;padding-top:.5rem;}nav.pdoc footer{font-size:small;}</style>
|
|
23
|
+
<style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{cursor:pointer;display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .pdoc-alert-note {color:#084298;background-color:#cfe2ff;border-color:#b6d4fe;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23084298%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm.93-9.412-1%204.705c-.07.34.029.533.304.533.194%200%20.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703%200-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381%202.29-.287zM8%205.5a1%201%200%201%201%200-2%201%201%200%200%201%200%202z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23664d03%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8.982%201.566a1.13%201.13%200%200%200-1.96%200L.165%2013.233c-.457.778.091%201.767.98%201.767h13.713c.889%200%201.438-.99.98-1.767L8.982%201.566zM8%205c.535%200%20.954.462.9.995l-.35%203.507a.552.552%200%200%201-1.1%200L7.1%205.995A.905.905%200%200%201%208%205zm.002%206a1%201%200%201%201%200%202%201%201%200%200%201%200-2z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23842029%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5.52.359A.5.5%200%200%201%206%200h4a.5.5%200%200%201%20.474.658L8.694%206H12.5a.5.5%200%200%201%20.395.807l-7%209a.5.5%200%200%201-.873-.454L6.823%209.5H3.5a.5.5%200%200%201-.48-.641l2.5-8.5z%22/%3E%3C/svg%3E");}.pdoc .visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important;}.pdoc h1, .pdoc h2, .pdoc h3{font-weight:300;margin:.3em 0;padding:.2em 0;}.pdoc > section:not(.module-info) h1{font-size:1.5rem;font-weight:500;}.pdoc > section:not(.module-info) h2{font-size:1.4rem;font-weight:500;}.pdoc > section:not(.module-info) h3{font-size:1.3rem;font-weight:500;}.pdoc > section:not(.module-info) h4{font-size:1.2rem;}.pdoc > section:not(.module-info) h5{font-size:1.1rem;}.pdoc a{text-decoration:none;color:var(--link);}.pdoc a:hover{color:var(--link-hover);}.pdoc blockquote{margin-left:2rem;}.pdoc pre{border-top:1px solid var(--accent2);border-bottom:1px solid var(--accent2);margin-top:0;margin-bottom:1em;padding:.5rem 0 .5rem .5rem;overflow-x:auto;background-color:var(--code);}.pdoc code{color:var(--text);padding:.2em .4em;margin:0;font-size:85%;background-color:var(--accent);border-radius:6px;}.pdoc a > code{color:inherit;}.pdoc pre > code{display:inline-block;font-size:inherit;background:none;border:none;padding:0;}.pdoc > section:not(.module-info){margin-bottom:1.5rem;}.pdoc .modulename{margin-top:0;font-weight:bold;}.pdoc .modulename a{color:var(--link);transition:100ms all;}.pdoc .git-button{float:right;border:solid var(--link) 1px;}.pdoc .git-button:hover{background-color:var(--link);color:var(--pdoc-background);}.view-source-toggle-state,.view-source-toggle-state ~ .pdoc-code{display:none;}.view-source-toggle-state:checked ~ .pdoc-code{display:block;}.view-source-button{display:inline-block;float:right;font-size:.75rem;line-height:1.5rem;color:var(--muted);padding:0 .4rem 0 1.3rem;cursor:pointer;text-indent:-2px;}.view-source-button > span{visibility:hidden;}.module-info .view-source-button{float:none;display:flex;justify-content:flex-end;margin:-1.2rem .4rem -.2rem 0;}.view-source-button::before{position:absolute;content:"View Source";display:list-item;list-style-type:disclosure-closed;}.view-source-toggle-state:checked ~ .attr .view-source-button::before,.view-source-toggle-state:checked ~ .view-source-button::before{list-style-type:disclosure-open;}.pdoc .docstring{margin-bottom:1.5rem;}.pdoc section:not(.module-info) .docstring{margin-left:clamp(0rem, 5vw - 2rem, 1rem);}.pdoc .docstring .pdoc-code{margin-left:1em;margin-right:1em;}.pdoc h1:target,.pdoc h2:target,.pdoc h3:target,.pdoc h4:target,.pdoc h5:target,.pdoc h6:target,.pdoc .pdoc-code > pre > span:target{background-color:var(--active);box-shadow:-1rem 0 0 0 var(--active);}.pdoc .pdoc-code > pre > span:target{display:block;}.pdoc div:target > .attr,.pdoc section:target > .attr,.pdoc dd:target > a{background-color:var(--active);}.pdoc *{scroll-margin:2rem;}.pdoc .pdoc-code .linenos{user-select:none;}.pdoc .attr:hover{filter:contrast(0.95);}.pdoc section, .pdoc .classattr{position:relative;}.pdoc .headerlink{--width:clamp(1rem, 3vw, 2rem);position:absolute;top:0;left:calc(0rem - var(--width));transition:all 100ms ease-in-out;opacity:0;}.pdoc .headerlink::before{content:"#";display:block;text-align:center;width:var(--width);height:2.3rem;line-height:2.3rem;font-size:1.5rem;}.pdoc .attr:hover ~ .headerlink,.pdoc *:target > .headerlink,.pdoc .headerlink:hover{opacity:1;}.pdoc .attr{display:block;margin:.5rem 0 .5rem;padding:.4rem .4rem .4rem 1rem;background-color:var(--accent);overflow-x:auto;}.pdoc .classattr{margin-left:2rem;}.pdoc .name{color:var(--name);font-weight:bold;}.pdoc .def{color:var(--def);font-weight:bold;}.pdoc .signature{background-color:transparent;}.pdoc .param, .pdoc .return-annotation{white-space:pre;}.pdoc .signature.multiline .param{display:block;}.pdoc .signature.condensed .param{display:inline-block;}.pdoc .annotation{color:var(--annotation);}.pdoc .view-value-toggle-state,.pdoc .view-value-toggle-state ~ .default_value{display:none;}.pdoc .view-value-toggle-state:checked ~ .default_value{display:inherit;}.pdoc .view-value-button{font-size:.5rem;vertical-align:middle;border-style:dashed;margin-top:-0.1rem;}.pdoc .view-value-button:hover{background:white;}.pdoc .view-value-button::before{content:"show";text-align:center;width:2.2em;display:inline-block;}.pdoc .view-value-toggle-state:checked ~ .view-value-button::before{content:"hide";}.pdoc .inherited{margin-left:2rem;}.pdoc .inherited dt{font-weight:700;}.pdoc .inherited dt, .pdoc .inherited dd{display:inline;margin-left:0;margin-bottom:.5rem;}.pdoc .inherited dd:not(:last-child):after{content:", ";}.pdoc .inherited .class:before{content:"class ";}.pdoc .inherited .function a:after{content:"()";}.pdoc .search-result .docstring{overflow:auto;max-height:25vh;}.pdoc .search-result.focused > .attr{background-color:var(--active);}.pdoc .attribution{margin-top:2rem;display:block;opacity:0.5;transition:all 200ms;filter:grayscale(100%);}.pdoc .attribution:hover{opacity:1;filter:grayscale(0%);}.pdoc .attribution img{margin-left:5px;height:35px;vertical-align:middle;width:70px;transition:all 200ms;}.pdoc table{display:block;width:max-content;max-width:100%;overflow:auto;margin-bottom:1rem;}.pdoc table th{font-weight:600;}.pdoc table th, .pdoc table td{padding:6px 13px;border:1px solid var(--accent2);}</style>
|
|
24
|
+
<style>/*! custom.css */.deprecated{ color:#f62817; font-weight:bolder;}.warning{ color:orange; font-weight:normal;}.modulename{color:#58a6ff;}.signature .param span{color:#ffc633;}.docstring #arguments ~ ul strong{color:#ffc633;}.docstring #raises ~ ul strong{color:#f62817 !important;}#change-log ~ h6{ color:#ffc633;}details summary{ color:#58a6ff;}.footertext{ color:#58a6ff;}.pdoc .docstring .pdoc-code{ margin-left:0; margin-right:0;}div.codehilite{ background-color:var(--code); border-bottom:1px solid var(--accent2);}div.codehilite button{ color:var(--link); background:var(--pdoc-background); background-color:var(--code); border:none; box-sizing:border-box; transition:0.2s ease-out; cursor:pointer; user-select:none; padding:5px 10px; font-size:0.8em; z-index:9999; margin:2px; border-radius:0 0.15rem;}div.codehilite pre{ margin-bottom:0px;}</style></head>
|
|
25
|
+
<body>
|
|
26
|
+
<nav class="pdoc">
|
|
27
|
+
<label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label>
|
|
28
|
+
<input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
29
|
+
<div> <a class="pdoc-button module-list-button" href="../index.html">
|
|
30
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16">
|
|
31
|
+
<path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z"/>
|
|
32
|
+
<path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z"/>
|
|
33
|
+
</svg>
|
|
34
|
+
Module Index
|
|
35
|
+
</a>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
<input type="search" placeholder="Search..." role="searchbox" aria-label="search"
|
|
39
|
+
pattern=".+" required>
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
<h2>API Documentation</h2>
|
|
44
|
+
<ul class="memberlist">
|
|
45
|
+
<li>
|
|
46
|
+
<a class="variable" href="#SPOTIFY_WEBUI_URL_GET_ACCESS_TOKEN">SPOTIFY_WEBUI_URL_GET_ACCESS_TOKEN</a>
|
|
47
|
+
</li>
|
|
48
|
+
<li>
|
|
49
|
+
<a class="variable" href="#SPOTIFY_WEBUI_URL_GET_SERVER_TIME">SPOTIFY_WEBUI_URL_GET_SERVER_TIME</a>
|
|
50
|
+
</li>
|
|
51
|
+
<li>
|
|
52
|
+
<a class="class" href="#SpotifyWebPlayerToken">SpotifyWebPlayerToken</a>
|
|
53
|
+
<ul class="memberlist">
|
|
54
|
+
<li>
|
|
55
|
+
<a class="function" href="#SpotifyWebPlayerToken.__init__">SpotifyWebPlayerToken</a>
|
|
56
|
+
</li>
|
|
57
|
+
<li>
|
|
58
|
+
<a class="variable" href="#SpotifyWebPlayerToken.AccessToken">AccessToken</a>
|
|
59
|
+
</li>
|
|
60
|
+
<li>
|
|
61
|
+
<a class="variable" href="#SpotifyWebPlayerToken.ClientId">ClientId</a>
|
|
62
|
+
</li>
|
|
63
|
+
<li>
|
|
64
|
+
<a class="variable" href="#SpotifyWebPlayerToken.ExpiresAt">ExpiresAt</a>
|
|
65
|
+
</li>
|
|
66
|
+
<li>
|
|
67
|
+
<a class="variable" href="#SpotifyWebPlayerToken.ExpireDateTimeUtc">ExpireDateTimeUtc</a>
|
|
68
|
+
</li>
|
|
69
|
+
<li>
|
|
70
|
+
<a class="variable" href="#SpotifyWebPlayerToken.ExpiresIn">ExpiresIn</a>
|
|
71
|
+
</li>
|
|
72
|
+
<li>
|
|
73
|
+
<a class="variable" href="#SpotifyWebPlayerToken.HeaderKey">HeaderKey</a>
|
|
74
|
+
</li>
|
|
75
|
+
<li>
|
|
76
|
+
<a class="variable" href="#SpotifyWebPlayerToken.HeaderValue">HeaderValue</a>
|
|
77
|
+
</li>
|
|
78
|
+
<li>
|
|
79
|
+
<a class="variable" href="#SpotifyWebPlayerToken.IsExpired">IsExpired</a>
|
|
80
|
+
</li>
|
|
81
|
+
<li>
|
|
82
|
+
<a class="variable" href="#SpotifyWebPlayerToken.ProfileId">ProfileId</a>
|
|
83
|
+
</li>
|
|
84
|
+
<li>
|
|
85
|
+
<a class="function" href="#SpotifyWebPlayerToken.GetAccessTokenFromCookieCredentials">GetAccessTokenFromCookieCredentials</a>
|
|
86
|
+
</li>
|
|
87
|
+
<li>
|
|
88
|
+
<a class="function" href="#SpotifyWebPlayerToken.GetTotpObject">GetTotpObject</a>
|
|
89
|
+
</li>
|
|
90
|
+
<li>
|
|
91
|
+
<a class="function" href="#SpotifyWebPlayerToken.Base32FromBytes">Base32FromBytes</a>
|
|
92
|
+
</li>
|
|
93
|
+
<li>
|
|
94
|
+
<a class="function" href="#SpotifyWebPlayerToken.CleanBuffer">CleanBuffer</a>
|
|
95
|
+
</li>
|
|
96
|
+
</ul>
|
|
97
|
+
|
|
98
|
+
</li>
|
|
99
|
+
</ul>
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
<footer class="footertext">
|
|
103
|
+
spotifywebapipython</br>
|
|
104
|
+
Version 1.0.242</br>
|
|
105
|
+
<a href="https://developer.spotify.com/documentation/web-api" target="_blank">
|
|
106
|
+
<img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
|
|
107
|
+
A Spotify Web Api Client
|
|
108
|
+
</a>
|
|
109
|
+
</footer>
|
|
110
|
+
|
|
111
|
+
<a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank">
|
|
112
|
+
built with <span class="visually-hidden">pdoc</span><img
|
|
113
|
+
alt="pdoc logo"
|
|
114
|
+
src="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"/>
|
|
115
|
+
</a>
|
|
116
|
+
</div>
|
|
117
|
+
</nav>
|
|
118
|
+
<main class="pdoc">
|
|
119
|
+
<section class="module-info">
|
|
120
|
+
<h1 class="modulename">
|
|
121
|
+
spotifywebapipython<wbr>.spotifywebplayertoken </h1>
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
</section>
|
|
129
|
+
<section id="SPOTIFY_WEBUI_URL_GET_ACCESS_TOKEN">
|
|
130
|
+
<div class="attr variable">
|
|
131
|
+
<span class="name">SPOTIFY_WEBUI_URL_GET_ACCESS_TOKEN</span> =
|
|
132
|
+
<span class="default_value">'https://open.spotify.com/get_access_token'</span>
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
</div>
|
|
136
|
+
<a class="headerlink" href="#SPOTIFY_WEBUI_URL_GET_ACCESS_TOKEN"></a>
|
|
137
|
+
|
|
138
|
+
<div class="docstring"><p>Url used to get access token.</p>
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
</section>
|
|
143
|
+
<section id="SPOTIFY_WEBUI_URL_GET_SERVER_TIME">
|
|
144
|
+
<div class="attr variable">
|
|
145
|
+
<span class="name">SPOTIFY_WEBUI_URL_GET_SERVER_TIME</span> =
|
|
146
|
+
<span class="default_value">'https://open.spotify.com/server-time'</span>
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
</div>
|
|
150
|
+
<a class="headerlink" href="#SPOTIFY_WEBUI_URL_GET_SERVER_TIME"></a>
|
|
151
|
+
|
|
152
|
+
<div class="docstring"><p>Url used to get Spotify server time.</p>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
</section>
|
|
157
|
+
<section id="SpotifyWebPlayerToken">
|
|
158
|
+
<div class="attr class">
|
|
159
|
+
|
|
160
|
+
<span class="def">class</span>
|
|
161
|
+
<span class="name">SpotifyWebPlayerToken</span>:
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
</div>
|
|
165
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken"></a>
|
|
166
|
+
|
|
167
|
+
<div class="docstring"><p>Represents a Spotify web player token for an account.</p>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
<div id="SpotifyWebPlayerToken.__init__" class="classattr">
|
|
172
|
+
<div class="attr function">
|
|
173
|
+
|
|
174
|
+
<span class="name">SpotifyWebPlayerToken</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">clientId</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">profileId</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">tokenProviderId</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">tokenStorageDir</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">tokenStorageFile</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">spotifyWebPlayerCookieSpdc</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">spotifyWebPlayerCookieSpkey</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span>)</span>
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
</div>
|
|
178
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.__init__"></a>
|
|
179
|
+
|
|
180
|
+
<div class="docstring"><p>Initializes a new instance of the class.</p>
|
|
181
|
+
|
|
182
|
+
<h6 id="arguments">Arguments:</h6>
|
|
183
|
+
|
|
184
|
+
<ul>
|
|
185
|
+
<li><strong>clientId (str):</strong> The unique identifier of the application.
|
|
186
|
+
A null value will default to <code>Shared</code>. <br />
|
|
187
|
+
Default: <code>Shared</code></li>
|
|
188
|
+
<li><strong>profileId (str):</strong> Profile identifier used when loading / storing the token to disk. <br />
|
|
189
|
+
A null value will default to <code>Shared</code>. <br />
|
|
190
|
+
Default: <code>Shared</code></li>
|
|
191
|
+
<li><strong>tokenProviderId (str):</strong> Provider identifier used when storing the token to disk.
|
|
192
|
+
A null value will default to <code>Shared</code>. <br />
|
|
193
|
+
Default: <code>Shared</code></li>
|
|
194
|
+
<li><strong>tokenStorageDir (str):</strong> The directory path that will contain the Token Cache file. <br />
|
|
195
|
+
A null value will default to the platform specific storage location: <br />
|
|
196
|
+
Example for Windows OS = <code>C:\ProgramData\SpotifyWebApiPython</code></li>
|
|
197
|
+
<li><strong>tokenStorageFile (str):</strong> The filename and extension of the Token Cache file. <br />
|
|
198
|
+
Default is <code>tokens.json</code>.</li>
|
|
199
|
+
<li><strong>spotifyWebPlayerCookieSpdc (str):</strong> Spotify Web Player Cookie credentials <code>sp_dc</code> value. </li>
|
|
200
|
+
<li><strong>spotifyWebPlayerCookieSpkey (str):</strong> Spotify Web Player Cookie credentials <code>sp_key</code> value.</li>
|
|
201
|
+
</ul>
|
|
202
|
+
|
|
203
|
+
<p>If the <code>spotifyWebPlayerCookieSpdc</code> and <code>spotifyWebPlayerCookieSpkey</code> values are specified,
|
|
204
|
+
then the Token Cache File parameters will be ignored and a token created from the specified
|
|
205
|
+
values.</p>
|
|
206
|
+
|
|
207
|
+
<p>Otherwise, the Token Cache File is queried to retrieve the <code>sp_dc</code> and <code>sp_key</code> values.</p>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
</div>
|
|
212
|
+
<div id="SpotifyWebPlayerToken.AccessToken" class="classattr">
|
|
213
|
+
<div class="attr variable">
|
|
214
|
+
<span class="name">AccessToken</span><span class="annotation">: str</span>
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
</div>
|
|
218
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.AccessToken"></a>
|
|
219
|
+
|
|
220
|
+
<div class="docstring"><p>An access token that can be provided to a Spotify Web Player application.</p>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
</div>
|
|
225
|
+
<div id="SpotifyWebPlayerToken.ClientId" class="classattr">
|
|
226
|
+
<div class="attr variable">
|
|
227
|
+
<span class="name">ClientId</span><span class="annotation">: str</span>
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
</div>
|
|
231
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.ClientId"></a>
|
|
232
|
+
|
|
233
|
+
<div class="docstring"><p>The unique identifier of the application.</p>
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
</div>
|
|
238
|
+
<div id="SpotifyWebPlayerToken.ExpiresAt" class="classattr">
|
|
239
|
+
<div class="attr variable">
|
|
240
|
+
<span class="name">ExpiresAt</span><span class="annotation">: int</span>
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
</div>
|
|
244
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.ExpiresAt"></a>
|
|
245
|
+
|
|
246
|
+
<div class="docstring"><p>DateTime (in epoch seconds) that the authorization token will expire.</p>
|
|
247
|
+
</div>
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
</div>
|
|
251
|
+
<div id="SpotifyWebPlayerToken.ExpireDateTimeUtc" class="classattr">
|
|
252
|
+
<div class="attr variable">
|
|
253
|
+
<span class="name">ExpireDateTimeUtc</span><span class="annotation">: datetime.datetime</span>
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
</div>
|
|
257
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.ExpireDateTimeUtc"></a>
|
|
258
|
+
|
|
259
|
+
<div class="docstring"><p>DateTime (in UTC format) that the authorization token will expire.</p>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
</div>
|
|
264
|
+
<div id="SpotifyWebPlayerToken.ExpiresIn" class="classattr">
|
|
265
|
+
<div class="attr variable">
|
|
266
|
+
<span class="name">ExpiresIn</span><span class="annotation">: int</span>
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
</div>
|
|
270
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.ExpiresIn"></a>
|
|
271
|
+
|
|
272
|
+
<div class="docstring"><p>The time period (in seconds) for which the access token is valid.</p>
|
|
273
|
+
</div>
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
</div>
|
|
277
|
+
<div id="SpotifyWebPlayerToken.HeaderKey" class="classattr">
|
|
278
|
+
<div class="attr variable">
|
|
279
|
+
<span class="name">HeaderKey</span><span class="annotation">: str</span>
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
</div>
|
|
283
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.HeaderKey"></a>
|
|
284
|
+
|
|
285
|
+
<div class="docstring"><p>Returns a string containing the header key to assign the authorization token value to.
|
|
286
|
+
This will always return 'Authorization'.</p>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
</div>
|
|
291
|
+
<div id="SpotifyWebPlayerToken.HeaderValue" class="classattr">
|
|
292
|
+
<div class="attr variable">
|
|
293
|
+
<span class="name">HeaderValue</span><span class="annotation">: str</span>
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
</div>
|
|
297
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.HeaderValue"></a>
|
|
298
|
+
|
|
299
|
+
<div class="docstring"><p>Returns the value portion of the authorization header, in the form of 'Bearer {token}'.</p>
|
|
300
|
+
|
|
301
|
+
<p>Example: `Bearer {token value ...}'</p>
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
</div>
|
|
306
|
+
<div id="SpotifyWebPlayerToken.IsExpired" class="classattr">
|
|
307
|
+
<div class="attr variable">
|
|
308
|
+
<span class="name">IsExpired</span><span class="annotation">: bool</span>
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
</div>
|
|
312
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.IsExpired"></a>
|
|
313
|
+
|
|
314
|
+
<div class="docstring"><p>Returns true if the token has expired; otherwise, False if not expired.</p>
|
|
315
|
+
</div>
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
</div>
|
|
319
|
+
<div id="SpotifyWebPlayerToken.ProfileId" class="classattr">
|
|
320
|
+
<div class="attr variable">
|
|
321
|
+
<span class="name">ProfileId</span><span class="annotation">: str</span>
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
</div>
|
|
325
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.ProfileId"></a>
|
|
326
|
+
|
|
327
|
+
<div class="docstring"><p>Profile identifier used when loading / storing the token to disk.</p>
|
|
328
|
+
</div>
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
</div>
|
|
332
|
+
<div id="SpotifyWebPlayerToken.GetAccessTokenFromCookieCredentials" class="classattr">
|
|
333
|
+
<div class="attr function">
|
|
334
|
+
|
|
335
|
+
<span class="def">def</span>
|
|
336
|
+
<span class="name">GetAccessTokenFromCookieCredentials</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">) -> <span class="kc">None</span>:</span></span>
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
</div>
|
|
340
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.GetAccessTokenFromCookieCredentials"></a>
|
|
341
|
+
|
|
342
|
+
<div class="docstring"><p>Get Spotify Web Player access token from stored Spotify Web Player cookie
|
|
343
|
+
credentials.</p>
|
|
344
|
+
|
|
345
|
+
<p>This will create a new session to the "https://open.spotify.com" url, passing
|
|
346
|
+
it the stored cookie credentials.</p>
|
|
347
|
+
</div>
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
</div>
|
|
351
|
+
<div id="SpotifyWebPlayerToken.GetTotpObject" class="classattr">
|
|
352
|
+
<div class="attr function">
|
|
353
|
+
|
|
354
|
+
<span class="def">def</span>
|
|
355
|
+
<span class="name">GetTotpObject</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">) -> <span class="nb">tuple</span><span class="p">[</span><span class="n">pyotp</span><span class="o">.</span><span class="n">totp</span><span class="o">.</span><span class="n">TOTP</span><span class="p">,</span> <span class="nb">int</span><span class="p">]</span>:</span></span>
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
</div>
|
|
359
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.GetTotpObject"></a>
|
|
360
|
+
|
|
361
|
+
<div class="docstring"><p>Creates a TOTP (Time-based One Time Password) object that can be used to generate a time-based
|
|
362
|
+
one time password value for the Spotify <code>get_access_token</code> request.</p>
|
|
363
|
+
|
|
364
|
+
<h6 id="returns">Returns:</h6>
|
|
365
|
+
|
|
366
|
+
<blockquote>
|
|
367
|
+
<p>totpObj (TOTP):
|
|
368
|
+
A TOTP object, which can be used to generate the One Time Password value.
|
|
369
|
+
serverTimeSeconds (int):
|
|
370
|
+
Spotify server time value (in utc epoch seconds).</p>
|
|
371
|
+
</blockquote>
|
|
372
|
+
|
|
373
|
+
<p>TOTP authentication is a 2-factor verification method that uses the time as a variable.</p>
|
|
374
|
+
|
|
375
|
+
<p>TOTP codes are valid for a short period (typically 30 or 60 seconds) to enhance
|
|
376
|
+
security by preventing replay attacks. </p>
|
|
377
|
+
|
|
378
|
+
<p>Here's how a TOTP algorithm works:</p>
|
|
379
|
+
|
|
380
|
+
<ol>
|
|
381
|
+
<li><p>A user wants to log into a TOTP 2FA protected application or website.
|
|
382
|
+
For the OTP authentication to run, the user and the TOTP server need to initially share
|
|
383
|
+
a static parameter (a secret key).</p></li>
|
|
384
|
+
<li><p>When the client logs into the protected website, they have to confirm they possess the secret key.
|
|
385
|
+
So their TOTP token merges the seed and the current timestep and generates a HASH value by running
|
|
386
|
+
a predetermined HASH function. This value essentially is the OTP code the user sees on the token.</p></li>
|
|
387
|
+
<li><p>Since the secret key, the HASH function, and the timestep are the same for both parties, the server
|
|
388
|
+
makes the same computation as the user's OTP generator.</p></li>
|
|
389
|
+
<li><p>The user enters the OTP and if it is identical to the server's value, the access is granted.
|
|
390
|
+
If the results of the calculations aren't identical, the access is, naturally, denied.</p></li>
|
|
391
|
+
</ol>
|
|
392
|
+
</div>
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
</div>
|
|
396
|
+
<div id="SpotifyWebPlayerToken.Base32FromBytes" class="classattr">
|
|
397
|
+
<div class="attr function">
|
|
398
|
+
|
|
399
|
+
<span class="def">def</span>
|
|
400
|
+
<span class="name">Base32FromBytes</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">inputBytes</span><span class="p">:</span> <span class="nb">bytes</span>, </span><span class="param"><span class="n">secretSauce</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
</div>
|
|
404
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.Base32FromBytes"></a>
|
|
405
|
+
|
|
406
|
+
<div class="docstring"><p>Converts an array of bytes to a base32 string value.</p>
|
|
407
|
+
|
|
408
|
+
<h6 id="arguments">Arguments:</h6>
|
|
409
|
+
|
|
410
|
+
<ul>
|
|
411
|
+
<li><strong>inputBytes (bytearray):</strong> Array of bytes to convert to Base32.</li>
|
|
412
|
+
<li><strong>secretSauce (str):</strong> Characters allowed in the generated base32 string value.</li>
|
|
413
|
+
</ul>
|
|
414
|
+
|
|
415
|
+
<h6 id="returns">Returns:</h6>
|
|
416
|
+
|
|
417
|
+
<blockquote>
|
|
418
|
+
<p>A generated base32 string value.</p>
|
|
419
|
+
</blockquote>
|
|
420
|
+
</div>
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
</div>
|
|
424
|
+
<div id="SpotifyWebPlayerToken.CleanBuffer" class="classattr">
|
|
425
|
+
<div class="attr function">
|
|
426
|
+
|
|
427
|
+
<span class="def">def</span>
|
|
428
|
+
<span class="name">CleanBuffer</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">value</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">bytes</span>:</span></span>
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
</div>
|
|
432
|
+
<a class="headerlink" href="#SpotifyWebPlayerToken.CleanBuffer"></a>
|
|
433
|
+
|
|
434
|
+
<div class="docstring"><p>Converts a displayable hex string value to a bytes object.</p>
|
|
435
|
+
|
|
436
|
+
<h6 id="arguments">Arguments:</h6>
|
|
437
|
+
|
|
438
|
+
<ul>
|
|
439
|
+
<li><strong>value (str):</strong> Input value in displayable hex format (e.g. "0140FF").</li>
|
|
440
|
+
</ul>
|
|
441
|
+
|
|
442
|
+
<h6 id="returns">Returns:</h6>
|
|
443
|
+
|
|
444
|
+
<blockquote>
|
|
445
|
+
<p>A bytes object that contains the converted <code>value</code> contents.</p>
|
|
446
|
+
</blockquote>
|
|
447
|
+
</div>
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
</div>
|
|
451
|
+
</section>
|
|
452
|
+
</main>
|
|
453
|
+
<script>
|
|
454
|
+
function escapeHTML(html) {
|
|
455
|
+
return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
const originalContent = document.querySelector("main.pdoc");
|
|
459
|
+
let currentContent = originalContent;
|
|
460
|
+
|
|
461
|
+
function setContent(innerHTML) {
|
|
462
|
+
let elem;
|
|
463
|
+
if (innerHTML) {
|
|
464
|
+
elem = document.createElement("main");
|
|
465
|
+
elem.classList.add("pdoc");
|
|
466
|
+
elem.innerHTML = innerHTML;
|
|
467
|
+
} else {
|
|
468
|
+
elem = originalContent;
|
|
469
|
+
}
|
|
470
|
+
if (currentContent !== elem) {
|
|
471
|
+
currentContent.replaceWith(elem);
|
|
472
|
+
currentContent = elem;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
function getSearchTerm() {
|
|
477
|
+
return (new URL(window.location)).searchParams.get("search");
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
const searchBox = document.querySelector(".pdoc input[type=search]");
|
|
481
|
+
searchBox.addEventListener("input", function () {
|
|
482
|
+
let url = new URL(window.location);
|
|
483
|
+
if (searchBox.value.trim()) {
|
|
484
|
+
url.hash = "";
|
|
485
|
+
url.searchParams.set("search", searchBox.value);
|
|
486
|
+
} else {
|
|
487
|
+
url.searchParams.delete("search");
|
|
488
|
+
}
|
|
489
|
+
history.replaceState("", "", url.toString());
|
|
490
|
+
onInput();
|
|
491
|
+
});
|
|
492
|
+
window.addEventListener("popstate", onInput);
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
let search, searchErr;
|
|
496
|
+
|
|
497
|
+
async function initialize() {
|
|
498
|
+
try {
|
|
499
|
+
search = await new Promise((resolve, reject) => {
|
|
500
|
+
const script = document.createElement("script");
|
|
501
|
+
script.type = "text/javascript";
|
|
502
|
+
script.async = true;
|
|
503
|
+
script.onload = () => resolve(window.pdocSearch);
|
|
504
|
+
script.onerror = (e) => reject(e);
|
|
505
|
+
script.src = "../search.js";
|
|
506
|
+
document.getElementsByTagName("head")[0].appendChild(script);
|
|
507
|
+
});
|
|
508
|
+
} catch (e) {
|
|
509
|
+
console.error("Cannot fetch pdoc search index");
|
|
510
|
+
searchErr = "Cannot fetch search index.";
|
|
511
|
+
}
|
|
512
|
+
onInput();
|
|
513
|
+
|
|
514
|
+
document.querySelector("nav.pdoc").addEventListener("click", e => {
|
|
515
|
+
if (e.target.hash) {
|
|
516
|
+
searchBox.value = "";
|
|
517
|
+
searchBox.dispatchEvent(new Event("input"));
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
function onInput() {
|
|
523
|
+
setContent((() => {
|
|
524
|
+
const term = getSearchTerm();
|
|
525
|
+
if (!term) {
|
|
526
|
+
return null
|
|
527
|
+
}
|
|
528
|
+
if (searchErr) {
|
|
529
|
+
return `<h3>Error: ${searchErr}</h3>`
|
|
530
|
+
}
|
|
531
|
+
if (!search) {
|
|
532
|
+
return "<h3>Searching...</h3>"
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
window.scrollTo({top: 0, left: 0, behavior: 'auto'});
|
|
536
|
+
|
|
537
|
+
const results = search(term);
|
|
538
|
+
|
|
539
|
+
let html;
|
|
540
|
+
if (results.length === 0) {
|
|
541
|
+
html = `No search results for '${escapeHTML(term)}'.`
|
|
542
|
+
} else {
|
|
543
|
+
html = `<h4>${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.</h4>`;
|
|
544
|
+
}
|
|
545
|
+
for (let result of results.slice(0, 10)) {
|
|
546
|
+
let doc = result.doc;
|
|
547
|
+
let url = `../${doc.modulename.replaceAll(".", "/")}.html`;
|
|
548
|
+
if (doc.qualname) {
|
|
549
|
+
url += `#${doc.qualname}`;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
let heading;
|
|
553
|
+
switch (result.doc.kind) {
|
|
554
|
+
case "function":
|
|
555
|
+
if (doc.fullname.endsWith(".__init__")) {
|
|
556
|
+
heading = `<span class="name">${doc.fullname.replace(/\.__init__$/, "")}</span>${doc.signature}`;
|
|
557
|
+
} else {
|
|
558
|
+
heading = `<span class="def">${doc.funcdef}</span> <span class="name">${doc.fullname}</span>${doc.signature}`;
|
|
559
|
+
}
|
|
560
|
+
break;
|
|
561
|
+
case "class":
|
|
562
|
+
heading = `<span class="def">class</span> <span class="name">${doc.fullname}</span>`;
|
|
563
|
+
if (doc.bases)
|
|
564
|
+
heading += `<wbr>(<span class="base">${doc.bases}</span>)`;
|
|
565
|
+
heading += `:`;
|
|
566
|
+
break;
|
|
567
|
+
case "variable":
|
|
568
|
+
heading = `<span class="name">${doc.fullname}</span>`;
|
|
569
|
+
if (doc.annotation)
|
|
570
|
+
heading += `<span class="annotation">${doc.annotation}</span>`;
|
|
571
|
+
if (doc.default_value)
|
|
572
|
+
heading += `<span class="default_value"> = ${doc.default_value}</span>`;
|
|
573
|
+
break;
|
|
574
|
+
default:
|
|
575
|
+
heading = `<span class="name">${doc.fullname}</span>`;
|
|
576
|
+
break;
|
|
577
|
+
}
|
|
578
|
+
html += `
|
|
579
|
+
<section class="search-result">
|
|
580
|
+
<a href="${url}" class="attr ${doc.kind}">${heading}</a>
|
|
581
|
+
<div class="docstring">${doc.doc}</div>
|
|
582
|
+
</section>
|
|
583
|
+
`;
|
|
584
|
+
|
|
585
|
+
}
|
|
586
|
+
return html;
|
|
587
|
+
})());
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
if (getSearchTerm()) {
|
|
591
|
+
initialize();
|
|
592
|
+
searchBox.value = getSearchTerm();
|
|
593
|
+
onInput();
|
|
594
|
+
} else {
|
|
595
|
+
searchBox.addEventListener("focus", initialize, {once: true});
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
searchBox.addEventListener("keydown", e => {
|
|
599
|
+
if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) {
|
|
600
|
+
let focused = currentContent.querySelector(".search-result.focused");
|
|
601
|
+
if (!focused) {
|
|
602
|
+
currentContent.querySelector(".search-result").classList.add("focused");
|
|
603
|
+
} else if (
|
|
604
|
+
e.key === "ArrowDown"
|
|
605
|
+
&& focused.nextElementSibling
|
|
606
|
+
&& focused.nextElementSibling.classList.contains("search-result")
|
|
607
|
+
) {
|
|
608
|
+
focused.classList.remove("focused");
|
|
609
|
+
focused.nextElementSibling.classList.add("focused");
|
|
610
|
+
focused.nextElementSibling.scrollIntoView({
|
|
611
|
+
behavior: "smooth",
|
|
612
|
+
block: "nearest",
|
|
613
|
+
inline: "nearest"
|
|
614
|
+
});
|
|
615
|
+
} else if (
|
|
616
|
+
e.key === "ArrowUp"
|
|
617
|
+
&& focused.previousElementSibling
|
|
618
|
+
&& focused.previousElementSibling.classList.contains("search-result")
|
|
619
|
+
) {
|
|
620
|
+
focused.classList.remove("focused");
|
|
621
|
+
focused.previousElementSibling.classList.add("focused");
|
|
622
|
+
focused.previousElementSibling.scrollIntoView({
|
|
623
|
+
behavior: "smooth",
|
|
624
|
+
block: "nearest",
|
|
625
|
+
inline: "nearest"
|
|
626
|
+
});
|
|
627
|
+
} else if (
|
|
628
|
+
e.key === "Enter"
|
|
629
|
+
) {
|
|
630
|
+
focused.querySelector("a").click();
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
});
|
|
634
|
+
</script></body>
|
|
635
|
+
</html>
|