spotifywebapiPython 1.0.26__py3-none-any.whl → 1.0.28__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.

Files changed (24) hide show
  1. {spotifywebapiPython-1.0.26.dist-info → spotifywebapiPython-1.0.28.dist-info}/METADATA +1 -1
  2. {spotifywebapiPython-1.0.26.dist-info → spotifywebapiPython-1.0.28.dist-info}/RECORD +24 -24
  3. spotifywebapipython/const.py +26 -2
  4. spotifywebapipython/docs/__init__.html +27 -3
  5. spotifywebapipython/docs/index.html +2 -2
  6. spotifywebapipython/docs/search.js +1 -1
  7. spotifywebapipython/docs/spotifywebapiPython/const.html +75 -3
  8. spotifywebapipython/docs/spotifywebapiPython/saappmessages.html +4 -4
  9. spotifywebapipython/docs/spotifywebapiPython/sautils.html +2 -2
  10. spotifywebapipython/docs/spotifywebapiPython/spotifyapierror.html +2 -2
  11. spotifywebapipython/docs/spotifywebapiPython/spotifyapimessage.html +2 -2
  12. spotifywebapipython/docs/spotifywebapiPython/spotifyauthtoken.html +2 -2
  13. spotifywebapipython/docs/spotifywebapiPython/spotifyclient.html +2113 -331
  14. spotifywebapipython/docs/spotifywebapiPython/spotifydiscovery.html +2 -2
  15. spotifywebapipython/docs/spotifywebapiPython/spotifywebapiauthenticationerror.html +2 -2
  16. spotifywebapipython/docs/spotifywebapiPython/spotifywebapierror.html +2 -2
  17. spotifywebapipython/models/category.py +11 -0
  18. spotifywebapipython/models/pageobject.py +77 -4
  19. spotifywebapipython/models/searchresponse.py +86 -50
  20. spotifywebapipython/saappmessages.py +3 -3
  21. spotifywebapipython/spotifyclient.py +2938 -364
  22. {spotifywebapiPython-1.0.26.dist-info → spotifywebapiPython-1.0.28.dist-info}/LICENSE +0 -0
  23. {spotifywebapiPython-1.0.26.dist-info → spotifywebapiPython-1.0.28.dist-info}/WHEEL +0 -0
  24. {spotifywebapiPython-1.0.26.dist-info → spotifywebapiPython-1.0.28.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.26" -->
12
+ <!-- build env - Package Version = "1.0.28" -->
13
13
  <!-- pdoc module.modulename = "spotifywebapipython.spotifyclient" -->
14
14
  <!-- pdoc module.is_package = "False" -->
15
15
  <!-- pdoc root_module_name = "None" -->
@@ -184,10 +184,10 @@
184
184
  <a class="function" href="#SpotifyClient.GetBrowseCategory">GetBrowseCategory</a>
185
185
  </li>
186
186
  <li>
187
- <a class="function" href="#SpotifyClient.GetBrowseCategorysPage">GetBrowseCategorysPage</a>
187
+ <a class="function" href="#SpotifyClient.GetBrowseCategorys">GetBrowseCategorys</a>
188
188
  </li>
189
189
  <li>
190
- <a class="function" href="#SpotifyClient.GetBrowseCategorys">GetBrowseCategorys</a>
190
+ <a class="function" href="#SpotifyClient.GetBrowseCategorysList">GetBrowseCategorysList</a>
191
191
  </li>
192
192
  <li>
193
193
  <a class="function" href="#SpotifyClient.GetCategoryPlaylists">GetCategoryPlaylists</a>
@@ -373,7 +373,25 @@
373
373
  <a class="function" href="#SpotifyClient.SaveTrackFavorites">SaveTrackFavorites</a>
374
374
  </li>
375
375
  <li>
376
- <a class="function" href="#SpotifyClient.Search">Search</a>
376
+ <a class="function" href="#SpotifyClient.SearchAlbums">SearchAlbums</a>
377
+ </li>
378
+ <li>
379
+ <a class="function" href="#SpotifyClient.SearchArtists">SearchArtists</a>
380
+ </li>
381
+ <li>
382
+ <a class="function" href="#SpotifyClient.SearchAudiobooks">SearchAudiobooks</a>
383
+ </li>
384
+ <li>
385
+ <a class="function" href="#SpotifyClient.SearchEpisodes">SearchEpisodes</a>
386
+ </li>
387
+ <li>
388
+ <a class="function" href="#SpotifyClient.SearchPlaylists">SearchPlaylists</a>
389
+ </li>
390
+ <li>
391
+ <a class="function" href="#SpotifyClient.SearchShows">SearchShows</a>
392
+ </li>
393
+ <li>
394
+ <a class="function" href="#SpotifyClient.SearchTracks">SearchTracks</a>
377
395
  </li>
378
396
  <li>
379
397
  <a class="function" href="#SpotifyClient.SetAuthTokenAuthorizationCode">SetAuthTokenAuthorizationCode</a>
@@ -407,7 +425,7 @@
407
425
 
408
426
  <footer class="footertext">
409
427
  spotifywebapiPython</br>
410
- Version 1.0.26</br>
428
+ Version 1.0.28</br>
411
429
  <a href="https://developer.spotify.com/documentation/web-api" target="_blank">
412
430
  <img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
413
431
  A Spotify Web Api Client
@@ -2257,7 +2275,7 @@ and the response contains error information.</li>
2257
2275
  <div class="attr function">
2258
2276
 
2259
2277
  <span class="def">def</span>
2260
- <span class="name">GetAlbumFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/albumpagesaved.html#AlbumPageSaved">spotifywebapipython.models.albumpagesaved.AlbumPageSaved</a></span>:</span></span>
2278
+ <span class="name">GetAlbumFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/albumpagesaved.html#AlbumPageSaved">spotifywebapipython.models.albumpagesaved.AlbumPageSaved</a></span>:</span></span>
2261
2279
 
2262
2280
 
2263
2281
  </div>
@@ -2270,9 +2288,9 @@ and the response contains error information.</li>
2270
2288
  <h6 id="arguments">Arguments:</h6>
2271
2289
 
2272
2290
  <ul>
2273
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
2291
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
2274
2292
  Default: 20, Range: 1 to 50. </li>
2275
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
2293
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
2276
2294
  Use with limit to get the next set of items. <br />
2277
2295
  Default: 0 (the first item). </li>
2278
2296
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
@@ -2282,6 +2300,11 @@ this parameter. <br />
2282
2300
  Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
2283
2301
  Users can view the country that is associated with their account in the account settings. <br />
2284
2302
  Example: <code>ES</code></li>
2303
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
2304
+ If specified, this argument overrides the limit and offset argument values
2305
+ and paging is automatically used to retrieve all available items up to the
2306
+ maximum number specified. <br />
2307
+ Default: None (disabled)</li>
2285
2308
  </ul>
2286
2309
 
2287
2310
  <h6 id="returns">Returns:</h6>
@@ -2299,7 +2322,7 @@ and the response contains error information.</li>
2299
2322
  </ul>
2300
2323
 
2301
2324
  <p><details>
2302
- <summary>Sample Code</summary></p>
2325
+ <summary>Sample Code - Manual Paging</summary></p>
2303
2326
 
2304
2327
  <div class="pdoc-code codehilite">
2305
2328
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -2329,7 +2352,7 @@ and the response contains error information.</li>
2329
2352
 
2330
2353
  <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
2331
2354
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
2332
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Albums in this page of results:&#39;</span><span class="p">)</span>
2355
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Items in this page of results:&#39;</span><span class="p">)</span>
2333
2356
 
2334
2357
  <span class="c1"># display album details.</span>
2335
2358
  <span class="n">albumSaved</span><span class="p">:</span><span class="n">AlbumSaved</span>
@@ -2352,6 +2375,48 @@ and the response contains error information.</li>
2352
2375
  </code></pre>
2353
2376
  </div>
2354
2377
 
2378
+ <p></details>
2379
+ <details>
2380
+ <summary>Sample Code - Auto Paging</summary></p>
2381
+
2382
+ <div class="pdoc-code codehilite">
2383
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
2384
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
2385
+
2386
+ <span class="k">try</span><span class="p">:</span>
2387
+
2388
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
2389
+
2390
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
2391
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span><span class="s1">&#39;user-library-read&#39;</span><span class="p">]</span>
2392
+
2393
+ <span class="c1"># create new spotify client instance.</span>
2394
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
2395
+
2396
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
2397
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
2398
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
2399
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
2400
+
2401
+ <span class="c1"># get a complete list of the albums saved in the current Spotify user&#39;s &#39;Your Library&#39;.</span>
2402
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL saved albums for current user ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
2403
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">AlbumPageSaved</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetAlbumFavorites</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
2404
+
2405
+ <span class="c1"># display results.</span>
2406
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
2407
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Albums in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
2408
+
2409
+ <span class="c1"># display album details.</span>
2410
+ <span class="n">albumSaved</span><span class="p">:</span><span class="n">AlbumSaved</span>
2411
+ <span class="k">for</span> <span class="n">albumSaved</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
2412
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">albumSaved</span><span class="o">.</span><span class="n">Album</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">albumSaved</span><span class="o">.</span><span class="n">Album</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
2413
+
2414
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
2415
+
2416
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
2417
+ </code></pre>
2418
+ </div>
2419
+
2355
2420
  <p></details></p>
2356
2421
  </div>
2357
2422
 
@@ -2361,7 +2426,7 @@ and the response contains error information.</li>
2361
2426
  <div class="attr function">
2362
2427
 
2363
2428
  <span class="def">def</span>
2364
- <span class="name">GetAlbumNewReleases</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/albumpagesimplified.html#AlbumPageSimplified">spotifywebapipython.models.albumpagesimplified.AlbumPageSimplified</a></span>:</span></span>
2429
+ <span class="name">GetAlbumNewReleases</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/albumpagesimplified.html#AlbumPageSimplified">spotifywebapipython.models.albumpagesimplified.AlbumPageSimplified</a></span>:</span></span>
2365
2430
 
2366
2431
 
2367
2432
  </div>
@@ -2373,15 +2438,20 @@ Spotify player's "Browse" tab).</p>
2373
2438
  <h6 id="arguments">Arguments:</h6>
2374
2439
 
2375
2440
  <ul>
2376
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
2441
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
2377
2442
  Default: 20, Range: 1 to 50. </li>
2378
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
2443
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
2379
2444
  Use with limit to get the next set of items. <br />
2380
2445
  Default: 0 (the first item). </li>
2381
2446
  <li><strong>country (str):</strong> A country in the form of an ISO 3166-1 alpha-2 country code. <br />
2382
2447
  Provide this parameter if you want the list of returned items to be relevant to a
2383
2448
  particular country. If omitted, the returned items will be relevant to all countries. <br />
2384
2449
  Example: <code>SE</code></li>
2450
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
2451
+ If specified, this argument overrides the limit and offset argument values
2452
+ and paging is automatically used to retrieve all available items up to the
2453
+ maximum number specified. <br />
2454
+ Default: None (disabled)</li>
2385
2455
  </ul>
2386
2456
 
2387
2457
  <h6 id="returns">Returns:</h6>
@@ -2399,7 +2469,7 @@ and the response contains error information.</li>
2399
2469
  </ul>
2400
2470
 
2401
2471
  <p><details>
2402
- <summary>Sample Code</summary></p>
2472
+ <summary>Sample Code - Manual Paging</summary></p>
2403
2473
 
2404
2474
  <div class="pdoc-code codehilite">
2405
2475
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -2451,6 +2521,46 @@ and the response contains error information.</li>
2451
2521
  </code></pre>
2452
2522
  </div>
2453
2523
 
2524
+ <p></details>
2525
+ <details>
2526
+ <summary>Sample Code - Auto Paging</summary></p>
2527
+
2528
+ <div class="pdoc-code codehilite">
2529
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
2530
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
2531
+
2532
+ <span class="k">try</span><span class="p">:</span>
2533
+
2534
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
2535
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
2536
+
2537
+ <span class="c1"># create new spotify client instance.</span>
2538
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
2539
+
2540
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
2541
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
2542
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
2543
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
2544
+
2545
+ <span class="c1"># get a list of new album releases featured in Spotify.</span>
2546
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting list of ALL new album releases featured in Spotify ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
2547
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">AlbumPageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetAlbumNewReleases</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
2548
+
2549
+ <span class="c1"># display results.</span>
2550
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
2551
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Albums in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
2552
+
2553
+ <span class="c1"># display album details.</span>
2554
+ <span class="n">albumSimplified</span><span class="p">:</span><span class="n">AlbumSimplified</span>
2555
+ <span class="k">for</span> <span class="n">albumSimplified</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
2556
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">albumSimplified</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">albumSimplified</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
2557
+
2558
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
2559
+
2560
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
2561
+ </code></pre>
2562
+ </div>
2563
+
2454
2564
  <p></details></p>
2455
2565
  </div>
2456
2566
 
@@ -2553,7 +2663,7 @@ and the response contains error information.</li>
2553
2663
  <div class="attr function">
2554
2664
 
2555
2665
  <span class="def">def</span>
2556
- <span class="name">GetAlbumTracks</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">albumId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/trackpagesimplified.html#TrackPageSimplified">spotifywebapipython.models.trackpagesimplified.TrackPageSimplified</a></span>:</span></span>
2666
+ <span class="name">GetAlbumTracks</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">albumId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/trackpagesimplified.html#TrackPageSimplified">spotifywebapipython.models.trackpagesimplified.TrackPageSimplified</a></span>:</span></span>
2557
2667
 
2558
2668
 
2559
2669
  </div>
@@ -2568,7 +2678,7 @@ and the response contains error information.</li>
2568
2678
  <ul>
2569
2679
  <li><strong>albumId (str):</strong> The Spotify ID of the album. <br />
2570
2680
  Example: <code>6vc9OTcyd3hyzabCmsdnwE</code></li>
2571
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
2681
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
2572
2682
  Default: 20, Range: 1 to 50. </li>
2573
2683
  <li><strong>offset (int):</strong> The index of the first item to return; use with limit to get the next set of items. <br />
2574
2684
  Default: 0 (the first item). </li>
@@ -2579,6 +2689,11 @@ this parameter. <br />
2579
2689
  Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
2580
2690
  Users can view the country that is associated with their account in the account settings. <br />
2581
2691
  Example: <code>ES</code></li>
2692
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
2693
+ If specified, this argument overrides the limit and offset argument values
2694
+ and paging is automatically used to retrieve all available items up to the
2695
+ maximum number specified. <br />
2696
+ Default: None (disabled)</li>
2582
2697
  </ul>
2583
2698
 
2584
2699
  <h6 id="returns">Returns:</h6>
@@ -2596,7 +2711,7 @@ and the response contains error information.</li>
2596
2711
  </ul>
2597
2712
 
2598
2713
  <p><details>
2599
- <summary>Sample Code</summary></p>
2714
+ <summary>Sample Code - Manual Paging</summary></p>
2600
2715
 
2601
2716
  <div class="pdoc-code codehilite">
2602
2717
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -2653,6 +2768,47 @@ and the response contains error information.</li>
2653
2768
  </code></pre>
2654
2769
  </div>
2655
2770
 
2771
+ <p></details>
2772
+ <details>
2773
+ <summary>Sample Code - Auto Paging</summary></p>
2774
+
2775
+ <div class="pdoc-code codehilite">
2776
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
2777
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
2778
+
2779
+ <span class="k">try</span><span class="p">:</span>
2780
+
2781
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
2782
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
2783
+
2784
+ <span class="c1"># create new spotify client instance.</span>
2785
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
2786
+
2787
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
2788
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
2789
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
2790
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
2791
+
2792
+ <span class="c1"># get Spotify catalog information about an album&#39;s tracks.</span>
2793
+ <span class="n">albumId</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;6vc9OTcyd3hyzabCmsdnwE&#39;</span>
2794
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting list of ALL tracks for album id &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">albumId</span><span class="p">)</span>
2795
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">TrackPageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetAlbumTracks</span><span class="p">(</span><span class="n">albumId</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
2796
+
2797
+ <span class="c1"># display paging details.</span>
2798
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
2799
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Tracks in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
2800
+
2801
+ <span class="c1"># display track details.</span>
2802
+ <span class="n">trackSimplified</span><span class="p">:</span><span class="n">TrackPageSimplified</span>
2803
+ <span class="k">for</span> <span class="n">trackSimplified</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
2804
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">trackSimplified</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">trackSimplified</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
2805
+
2806
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
2807
+
2808
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
2809
+ </code></pre>
2810
+ </div>
2811
+
2656
2812
  <p></details></p>
2657
2813
  </div>
2658
2814
 
@@ -2674,7 +2830,7 @@ and the response contains error information.</li>
2674
2830
 
2675
2831
  <ul>
2676
2832
  <li><strong>artistId (str):</strong> The Spotify ID of the artist. <br />
2677
- Example: <code>0TnOYISbd1XYRBk9myaseg</code></li>
2833
+ Example: <code>6APm8EjxOHSYM5B4i3vT3q</code></li>
2678
2834
  </ul>
2679
2835
 
2680
2836
  <h6 id="returns">Returns:</h6>
@@ -2733,7 +2889,7 @@ and the response contains error information.</li>
2733
2889
  <div class="attr function">
2734
2890
 
2735
2891
  <span class="def">def</span>
2736
- <span class="name">GetArtistAlbums</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">artistId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">include_groups</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;album&#39;</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="nb">list</span><span class="p">[</span><span class="n"><a href="models/album.html#Album">spotifywebapipython.models.album.Album</a></span><span class="p">]</span>:</span></span>
2892
+ <span class="name">GetArtistAlbums</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">artistId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">include_groups</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;album&#39;</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/albumpagesimplified.html#AlbumPageSimplified">spotifywebapipython.models.albumpagesimplified.AlbumPageSimplified</a></span>:</span></span>
2737
2893
 
2738
2894
 
2739
2895
  </div>
@@ -2745,12 +2901,12 @@ and the response contains error information.</li>
2745
2901
 
2746
2902
  <ul>
2747
2903
  <li><strong>artistId (str):</strong> The Spotify ID of the artist. <br />
2748
- Example: <code>0TnOYISbd1XYRBk9myaseg</code></li>
2904
+ Example: <code>6APm8EjxOHSYM5B4i3vT3q</code></li>
2749
2905
  <li><strong>include_groups (str):</strong> A comma-separated list of keywords that will be used to filter the response. <br />
2750
2906
  If not supplied, all album types will be returned. <br />
2751
2907
  Valid values are: <code>album</code>, <code>single</code>, <code>appears_on</code>, <code>compilation</code> <br />
2752
2908
  Example: <code>single,appears_on</code></li>
2753
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
2909
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
2754
2910
  Default: 20, Range: 1 to 50. </li>
2755
2911
  <li><strong>offset (int):</strong> The index of the first item to return; use with limit to get the next set of items. <br />
2756
2912
  Default: 0 (the first item). </li>
@@ -2761,12 +2917,17 @@ the user account will take priority over this parameter.
2761
2917
  Note: If neither market or user country are provided, the content is considered unavailable for the client.
2762
2918
  Users can view the country that is associated with their account in the account settings. <br />
2763
2919
  Example: <code>ES</code></li>
2920
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
2921
+ If specified, this argument overrides the limit and offset argument values
2922
+ and paging is automatically used to retrieve all available items up to the
2923
+ maximum number specified. <br />
2924
+ Default: None (disabled)</li>
2764
2925
  </ul>
2765
2926
 
2766
2927
  <h6 id="returns">Returns:</h6>
2767
2928
 
2768
2929
  <blockquote>
2769
- <p>A list of <code>Album</code> objects that contain the album details.</p>
2930
+ <p>An <code>AlbumPageSimplified</code> object of matching results.</p>
2770
2931
  </blockquote>
2771
2932
 
2772
2933
  <h6 id="raises">Raises:</h6>
@@ -2778,7 +2939,7 @@ and the response contains error information.</li>
2778
2939
  </ul>
2779
2940
 
2780
2941
  <p><details>
2781
- <summary>Sample Code</summary></p>
2942
+ <summary>Sample Code - Manual Paging</summary></p>
2782
2943
 
2783
2944
  <div class="pdoc-code codehilite">
2784
2945
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -2832,6 +2993,48 @@ and the response contains error information.</li>
2832
2993
  </code></pre>
2833
2994
  </div>
2834
2995
 
2996
+ <p></details>
2997
+ <details>
2998
+ <summary>Sample Code - auto Paging</summary></p>
2999
+
3000
+ <div class="pdoc-code codehilite">
3001
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
3002
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
3003
+
3004
+ <span class="k">try</span><span class="p">:</span>
3005
+
3006
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
3007
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
3008
+
3009
+ <span class="c1"># create new spotify client instance.</span>
3010
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
3011
+
3012
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
3013
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
3014
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
3015
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
3016
+
3017
+ <span class="c1"># get Spotify catalog information about an artist&#39;s albums.</span>
3018
+ <span class="n">artistId</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;6APm8EjxOHSYM5B4i3vT3q&#39;</span>
3019
+ <span class="n">includeGroups</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;album,single,appears_on,compilation&#39;</span>
3020
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL albums for artist id &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">artistId</span><span class="p">)</span>
3021
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">AlbumPageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetArtistAlbums</span><span class="p">(</span><span class="n">artistId</span><span class="p">,</span> <span class="n">includeGroups</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
3022
+
3023
+ <span class="c1"># display results.</span>
3024
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
3025
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Albums in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
3026
+
3027
+ <span class="c1"># display album details.</span>
3028
+ <span class="n">albumSimplified</span><span class="p">:</span><span class="n">AlbumSimplified</span>
3029
+ <span class="k">for</span> <span class="n">albumSimplified</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
3030
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">albumSimplified</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">albumSimplified</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
3031
+
3032
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
3033
+
3034
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
3035
+ </code></pre>
3036
+ </div>
3037
+
2835
3038
  <p></details></p>
2836
3039
  </div>
2837
3040
 
@@ -2854,7 +3057,7 @@ Similarity is based on analysis of the Spotify community's listening history.</p
2854
3057
 
2855
3058
  <ul>
2856
3059
  <li><strong>artistId (str):</strong> The Spotify ID of the artist. <br />
2857
- Example: <code>0TnOYISbd1XYRBk9myaseg</code></li>
3060
+ Example: <code>6APm8EjxOHSYM5B4i3vT3q</code></li>
2858
3061
  </ul>
2859
3062
 
2860
3063
  <h6 id="returns">Returns:</h6>
@@ -2993,7 +3196,7 @@ and the response contains error information.</li>
2993
3196
  <div class="attr function">
2994
3197
 
2995
3198
  <span class="def">def</span>
2996
- <span class="name">GetArtistsFollowed</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">after</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">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span></span><span class="return-annotation">) -> <span class="n"><a href="models/artistpage.html#ArtistPage">spotifywebapipython.models.artistpage.ArtistPage</a></span>:</span></span>
3199
+ <span class="name">GetArtistsFollowed</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">after</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">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/artistpage.html#ArtistPage">spotifywebapipython.models.artistpage.ArtistPage</a></span>:</span></span>
2997
3200
 
2998
3201
 
2999
3202
  </div>
@@ -3006,9 +3209,14 @@ and the response contains error information.</li>
3006
3209
  <ul>
3007
3210
  <li><strong>after (str):</strong> The last artist ID retrieved from the previous request, or null for
3008
3211
  the first request. <br />
3009
- Example: <code>0I2XqVXqHScXjHhk6AYYRe</code> </li>
3010
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
3212
+ Example: <code>6APm8EjxOHSYM5B4i3vT3q</code> </li>
3213
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
3011
3214
  Default: 20, Range: 1 to 50. </li>
3215
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
3216
+ If specified, this argument overrides the limit and offset argument values
3217
+ and paging is automatically used to retrieve all available items up to the
3218
+ maximum number specified. <br />
3219
+ Default: None (disabled)</li>
3012
3220
  </ul>
3013
3221
 
3014
3222
  <h6 id="returns">Returns:</h6>
@@ -3026,7 +3234,7 @@ and the response contains error information.</li>
3026
3234
  </ul>
3027
3235
 
3028
3236
  <p><details>
3029
- <summary>Sample Code</summary></p>
3237
+ <summary>Sample Code - Manual Paging</summary></p>
3030
3238
 
3031
3239
  <div class="pdoc-code codehilite">
3032
3240
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -3063,7 +3271,7 @@ and the response contains error information.</li>
3063
3271
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
3064
3272
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Artists in this page of results:&#39;</span><span class="p">)</span>
3065
3273
 
3066
- <span class="c1"># display episode details.</span>
3274
+ <span class="c1"># display artist details.</span>
3067
3275
  <span class="n">artist</span><span class="p">:</span><span class="n">Artist</span>
3068
3276
  <span class="k">for</span> <span class="n">artist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
3069
3277
 
@@ -3084,6 +3292,52 @@ and the response contains error information.</li>
3084
3292
  </code></pre>
3085
3293
  </div>
3086
3294
 
3295
+ <p></details>
3296
+ <details>
3297
+ <summary>Sample Code - Auto Paging</summary></p>
3298
+
3299
+ <div class="pdoc-code codehilite">
3300
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
3301
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
3302
+
3303
+ <span class="k">try</span><span class="p">:</span>
3304
+
3305
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
3306
+
3307
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
3308
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
3309
+ <span class="p">[</span>
3310
+ <span class="s1">&#39;user-follow-read&#39;</span><span class="p">,</span>
3311
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
3312
+ <span class="p">]</span>
3313
+
3314
+ <span class="c1"># create new spotify client instance.</span>
3315
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
3316
+
3317
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
3318
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
3319
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
3320
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
3321
+
3322
+ <span class="c1"># get the current user&#39;s followed artists.</span>
3323
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL of the current users followed artists ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
3324
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">ArtistPage</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetArtistsFollowed</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
3325
+
3326
+ <span class="c1"># display results.</span>
3327
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
3328
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Artists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
3329
+
3330
+ <span class="c1"># display artist details.</span>
3331
+ <span class="n">artist</span><span class="p">:</span><span class="n">Artist</span>
3332
+ <span class="k">for</span> <span class="n">artist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
3333
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
3334
+
3335
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
3336
+
3337
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
3338
+ </code></pre>
3339
+ </div>
3340
+
3087
3341
  <p></details></p>
3088
3342
  </div>
3089
3343
 
@@ -3105,7 +3359,7 @@ and the response contains error information.</li>
3105
3359
 
3106
3360
  <ul>
3107
3361
  <li><strong>artistId (str):</strong> The Spotify ID of the artist. <br />
3108
- Example: <code>0TnOYISbd1XYRBk9myaseg</code></li>
3362
+ Example: <code>6APm8EjxOHSYM5B4i3vT3q</code></li>
3109
3363
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
3110
3364
  is available in that market will be returned. If a valid user access token is specified
3111
3365
  in the request header, the country associated with the user account will take priority over
@@ -3290,7 +3544,7 @@ and the response contains error information.</li>
3290
3544
  <div class="attr function">
3291
3545
 
3292
3546
  <span class="def">def</span>
3293
- <span class="name">GetAudiobookChapters</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">audiobookId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/chapterpagesimplified.html#ChapterPageSimplified">spotifywebapipython.models.chapterpagesimplified.ChapterPageSimplified</a></span>:</span></span>
3547
+ <span class="name">GetAudiobookChapters</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">audiobookId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/chapterpagesimplified.html#ChapterPageSimplified">spotifywebapipython.models.chapterpagesimplified.ChapterPageSimplified</a></span>:</span></span>
3294
3548
 
3295
3549
 
3296
3550
  </div>
@@ -3305,7 +3559,7 @@ and the response contains error information.</li>
3305
3559
  <ul>
3306
3560
  <li><strong>audiobookId (str):</strong> The Spotify ID for the audiobook.
3307
3561
  Example: <code>74aydHJKgYz3AIq3jjBSv1</code></li>
3308
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
3562
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
3309
3563
  Default: 20, Range: 1 to 50. </li>
3310
3564
  <li><strong>offset (int):</strong> The index of the first item to return; use with limit to get the next set of items. <br />
3311
3565
  Default: 0 (the first item). </li>
@@ -3316,6 +3570,11 @@ this parameter. <br />
3316
3570
  Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
3317
3571
  Users can view the country that is associated with their account in the account settings. <br />
3318
3572
  Example: <code>ES</code></li>
3573
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
3574
+ If specified, this argument overrides the limit and offset argument values
3575
+ and paging is automatically used to retrieve all available items up to the
3576
+ maximum number specified. <br />
3577
+ Default: None (disabled)</li>
3319
3578
  </ul>
3320
3579
 
3321
3580
  <h6 id="returns">Returns:</h6>
@@ -3333,7 +3592,7 @@ and the response contains error information.</li>
3333
3592
  </ul>
3334
3593
 
3335
3594
  <p><details>
3336
- <summary>Sample Code</summary></p>
3595
+ <summary>Sample Code - Manual Paging</summary></p>
3337
3596
 
3338
3597
  <div class="pdoc-code codehilite">
3339
3598
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -3401,6 +3660,58 @@ and the response contains error information.</li>
3401
3660
  </code></pre>
3402
3661
  </div>
3403
3662
 
3663
+ <p></details>
3664
+ <details>
3665
+ <summary>Sample Code - Auto Paging</summary></p>
3666
+
3667
+ <div class="pdoc-code codehilite">
3668
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
3669
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
3670
+
3671
+ <span class="k">try</span><span class="p">:</span>
3672
+
3673
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
3674
+
3675
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
3676
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
3677
+ <span class="p">[</span>
3678
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
3679
+ <span class="s1">&#39;playlist-modify-public&#39;</span><span class="p">,</span>
3680
+ <span class="s1">&#39;ugc-image-upload&#39;</span><span class="p">,</span>
3681
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
3682
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
3683
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
3684
+ <span class="s1">&#39;user-read-playback-position&#39;</span><span class="p">,</span>
3685
+ <span class="p">]</span>
3686
+
3687
+ <span class="c1"># create new spotify client instance.</span>
3688
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
3689
+
3690
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
3691
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
3692
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
3693
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
3694
+
3695
+ <span class="c1"># get Spotify catalog information about a audiobook&#39;s chapters.</span>
3696
+ <span class="n">audiobookId</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;7iHfbu1YPACw6oZPAFJtqe&#39;</span> <span class="c1"># &lt;- Dune - Author=Frank Herbert</span>
3697
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting list of ALL chapters for audiobook id &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">audiobookId</span><span class="p">)</span>
3698
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">ChapterPageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetAudiobookChapters</span><span class="p">(</span><span class="n">audiobookId</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
3699
+
3700
+ <span class="c1"># display paging details.</span>
3701
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
3702
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Chapters in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
3703
+
3704
+ <span class="c1"># display chapter details.</span>
3705
+ <span class="n">chapterSimplified</span><span class="p">:</span><span class="n">ChapterPageSimplified</span>
3706
+ <span class="k">for</span> <span class="n">chapterSimplified</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
3707
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">chapterSimplified</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">chapterSimplified</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
3708
+
3709
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
3710
+
3711
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
3712
+ </code></pre>
3713
+ </div>
3714
+
3404
3715
  <p></details></p>
3405
3716
  </div>
3406
3717
 
@@ -3410,7 +3721,7 @@ and the response contains error information.</li>
3410
3721
  <div class="attr function">
3411
3722
 
3412
3723
  <span class="def">def</span>
3413
- <span class="name">GetAudiobookFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></span><span class="return-annotation">) -> <span class="n"><a href="models/audiobookpagesimplified.html#AudiobookPageSimplified">spotifywebapipython.models.audiobookpagesimplified.AudiobookPageSimplified</a></span>:</span></span>
3724
+ <span class="name">GetAudiobookFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/audiobookpagesimplified.html#AudiobookPageSimplified">spotifywebapipython.models.audiobookpagesimplified.AudiobookPageSimplified</a></span>:</span></span>
3414
3725
 
3415
3726
 
3416
3727
  </div>
@@ -3423,11 +3734,16 @@ and the response contains error information.</li>
3423
3734
  <h6 id="arguments">Arguments:</h6>
3424
3735
 
3425
3736
  <ul>
3426
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
3737
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
3427
3738
  Default: 20, Range: 1 to 50. </li>
3428
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
3739
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
3429
3740
  Use with limit to get the next set of items. <br />
3430
3741
  Default: 0 (the first item). </li>
3742
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
3743
+ If specified, this argument overrides the limit and offset argument values
3744
+ and paging is automatically used to retrieve all available items up to the
3745
+ maximum number specified. <br />
3746
+ Default: None (disabled)</li>
3431
3747
  </ul>
3432
3748
 
3433
3749
  <h6 id="returns">Returns:</h6>
@@ -3445,7 +3761,7 @@ and the response contains error information.</li>
3445
3761
  </ul>
3446
3762
 
3447
3763
  <p><details>
3448
- <summary>Sample Code</summary></p>
3764
+ <summary>Sample Code - Manual Paging</summary></p>
3449
3765
 
3450
3766
  <div class="pdoc-code codehilite">
3451
3767
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -3503,6 +3819,43 @@ and the response contains error information.</li>
3503
3819
  </code></pre>
3504
3820
  </div>
3505
3821
 
3822
+ <p></details>
3823
+ <details>
3824
+ <summary>Sample Code - Auto Paging</summary></p>
3825
+
3826
+ <div class="pdoc-code codehilite">
3827
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
3828
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
3829
+
3830
+ <span class="k">try</span><span class="p">:</span>
3831
+
3832
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
3833
+
3834
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
3835
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span><span class="s1">&#39;user-library-read&#39;</span><span class="p">]</span>
3836
+
3837
+ <span class="c1"># create new spotify client instance.</span>
3838
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
3839
+
3840
+ <span class="c1"># get a list of the audiobooks saved in the current Spotify user&#39;s &#39;Your Library&#39;.</span>
3841
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL saved audiobooks for current user ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
3842
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">AudiobookPageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetAudiobookFavorites</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
3843
+
3844
+ <span class="c1"># display paging details.</span>
3845
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
3846
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Audiobooks in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
3847
+
3848
+ <span class="c1"># display audiobook details.</span>
3849
+ <span class="n">audiobook</span><span class="p">:</span><span class="n">AudiobookSimplified</span>
3850
+ <span class="k">for</span> <span class="n">audiobook</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
3851
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
3852
+
3853
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
3854
+
3855
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
3856
+ </code></pre>
3857
+ </div>
3858
+
3506
3859
  <p></details></p>
3507
3860
  </div>
3508
3861
 
@@ -3701,24 +4054,24 @@ the spotify web api request. This results in better performance.</p>
3701
4054
 
3702
4055
 
3703
4056
  </div>
3704
- <div id="SpotifyClient.GetBrowseCategorysPage" class="classattr">
4057
+ <div id="SpotifyClient.GetBrowseCategorys" class="classattr">
3705
4058
  <div class="attr function">
3706
4059
 
3707
4060
  <span class="def">def</span>
3708
- <span class="name">GetBrowseCategorysPage</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</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">locale</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/categorypage.html#CategoryPage">spotifywebapipython.models.categorypage.CategoryPage</a></span>:</span></span>
4061
+ <span class="name">GetBrowseCategorys</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</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">locale</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/categorypage.html#CategoryPage">spotifywebapipython.models.categorypage.CategoryPage</a></span>:</span></span>
3709
4062
 
3710
4063
 
3711
4064
  </div>
3712
- <a class="headerlink" href="#SpotifyClient.GetBrowseCategorysPage"></a>
4065
+ <a class="headerlink" href="#SpotifyClient.GetBrowseCategorys"></a>
3713
4066
 
3714
4067
  <div class="docstring"><p>Get a page of categories used to tag items in Spotify.</p>
3715
4068
 
3716
4069
  <h6 id="arguments">Arguments:</h6>
3717
4070
 
3718
4071
  <ul>
3719
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
3720
- Default: 50, Range: 1 to 50. </li>
3721
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
4072
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
4073
+ Default: 20, Range: 1 to 50. </li>
4074
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
3722
4075
  Use with limit to get the next set of items. <br />
3723
4076
  Default: 0 (the first item). </li>
3724
4077
  <li><strong>country (str):</strong> A country: an ISO 3166-1 alpha-2 country code. <br />
@@ -3734,6 +4087,11 @@ be returned in the Spotify default language (American English). The locale param
3734
4087
  the country parameter, may give odd results if not carefully matched. For example country=<code>SE</code> and
3735
4088
  locale=<code>de_DE</code> will return a list of categories relevant to Sweden but as German language strings. <br />
3736
4089
  Example: <code>sv_SE</code> </li>
4090
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
4091
+ If specified, this argument overrides the limit and offset argument values
4092
+ and paging is automatically used to retrieve all available items up to the
4093
+ maximum number specified. <br />
4094
+ Default: None (disabled)</li>
3737
4095
  </ul>
3738
4096
 
3739
4097
  <h6 id="returns">Returns:</h6>
@@ -3751,7 +4109,7 @@ and the response contains error information.</li>
3751
4109
  </ul>
3752
4110
 
3753
4111
  <p><details>
3754
- <summary>Sample Code</summary></p>
4112
+ <summary>Sample Code - Manual Paging</summary></p>
3755
4113
 
3756
4114
  <div class="pdoc-code codehilite">
3757
4115
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -3771,8 +4129,8 @@ and the response contains error information.</li>
3771
4129
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
3772
4130
 
3773
4131
  <span class="c1"># get a list of categories used to tag items in Spotify.</span>
3774
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting page of browse categories ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
3775
- <span class="n">pageObj</span><span class="p">:</span><span class="n">CategoryPage</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorysPage</span><span class="p">()</span>
4132
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting browse categories ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
4133
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">CategoryPage</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorys</span><span class="p">(</span><span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
3776
4134
 
3777
4135
  <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
3778
4136
  <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
@@ -3799,7 +4157,7 @@ and the response contains error information.</li>
3799
4157
  <span class="k">else</span><span class="p">:</span>
3800
4158
  <span class="c1"># yes - retrieve the next page of results.</span>
3801
4159
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
3802
- <span class="n">pageObj</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorysPage</span><span class="p">(</span><span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
4160
+ <span class="n">pageObj</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorys</span><span class="p">(</span><span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
3803
4161
 
3804
4162
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
3805
4163
 
@@ -3807,20 +4165,60 @@ and the response contains error information.</li>
3807
4165
  </code></pre>
3808
4166
  </div>
3809
4167
 
3810
- <p></details></p>
3811
- </div>
4168
+ <p></details>
4169
+ <details>
4170
+ <summary>Sample Code - Auto Paging</summary></p>
3812
4171
 
4172
+ <div class="pdoc-code codehilite">
4173
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
4174
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
3813
4175
 
3814
- </div>
3815
- <div id="SpotifyClient.GetBrowseCategorys" class="classattr">
3816
- <div class="attr function">
4176
+ <span class="k">try</span><span class="p">:</span>
4177
+
4178
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
4179
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
4180
+
4181
+ <span class="c1"># create new spotify client instance.</span>
4182
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
4183
+
4184
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
4185
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
4186
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
4187
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
4188
+
4189
+ <span class="c1"># get a list of categories used to tag items in Spotify.</span>
4190
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL browse categories ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
4191
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">CategoryPage</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorys</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
4192
+
4193
+ <span class="c1"># display paging details.</span>
4194
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
4195
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Categories in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
4196
+
4197
+ <span class="c1"># display category details.</span>
4198
+ <span class="n">category</span><span class="p">:</span><span class="n">Category</span>
4199
+ <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
4200
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">category</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">category</span><span class="o">.</span><span class="n">Id</span><span class="p">))</span>
4201
+
4202
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
4203
+
4204
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
4205
+ </code></pre>
4206
+ </div>
4207
+
4208
+ <p></details></p>
4209
+ </div>
4210
+
4211
+
4212
+ </div>
4213
+ <div id="SpotifyClient.GetBrowseCategorysList" class="classattr">
4214
+ <div class="attr function">
3817
4215
 
3818
4216
  <span class="def">def</span>
3819
- <span class="name">GetBrowseCategorys</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">country</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">locale</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">refresh</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span></span><span class="return-annotation">) -> <span class="nb">list</span><span class="p">[</span><span class="n"><a href="models/category.html#Category">spotifywebapipython.models.category.Category</a></span><span class="p">]</span>:</span></span>
4217
+ <span class="name">GetBrowseCategorysList</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">country</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">locale</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">refresh</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span></span><span class="return-annotation">) -> <span class="nb">list</span><span class="p">[</span><span class="n"><a href="models/category.html#Category">spotifywebapipython.models.category.Category</a></span><span class="p">]</span>:</span></span>
3820
4218
 
3821
4219
 
3822
4220
  </div>
3823
- <a class="headerlink" href="#SpotifyClient.GetBrowseCategorys"></a>
4221
+ <a class="headerlink" href="#SpotifyClient.GetBrowseCategorysList"></a>
3824
4222
 
3825
4223
  <div class="docstring"><p>Get a sorted list of ALL categories used to tag items in Spotify.</p>
3826
4224
 
@@ -3883,23 +4281,22 @@ the spotify web api request. This results in better performance.</p>
3883
4281
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
3884
4282
 
3885
4283
  <span class="c1"># get a sorted list of all categories used to tag items in Spotify.</span>
3886
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting all browse categories ...&#39;</span><span class="p">)</span>
3887
- <span class="n">categories</span><span class="p">:</span><span class="nb">list</span><span class="p">[</span><span class="n">Category</span><span class="p">]</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorys</span><span class="p">()</span>
4284
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting list of all browse categories ...&#39;</span><span class="p">)</span>
4285
+ <span class="n">categories</span><span class="p">:</span><span class="nb">list</span><span class="p">[</span><span class="n">Category</span><span class="p">]</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorysList</span><span class="p">()</span>
3888
4286
 
3889
4287
  <span class="c1"># display category details.</span>
3890
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">All Browse Categories (sorted by name):&#39;</span><span class="p">)</span>
4288
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">All Browse Categories (sorted by name - </span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">categories</span><span class="p">))</span>
3891
4289
  <span class="n">category</span><span class="p">:</span><span class="n">Category</span>
3892
4290
  <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">categories</span><span class="p">:</span>
3893
-
3894
4291
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">category</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">category</span><span class="o">.</span><span class="n">Id</span><span class="p">))</span>
3895
4292
 
3896
4293
  <span class="c1"># get cached configuration, refreshing from device if needed.</span>
3897
- <span class="n">categories</span><span class="p">:</span><span class="nb">list</span><span class="p">[</span><span class="n">Category</span><span class="p">]</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorys</span><span class="p">(</span><span class="n">refresh</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
4294
+ <span class="n">categories</span><span class="p">:</span><span class="nb">list</span><span class="p">[</span><span class="n">Category</span><span class="p">]</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetBrowseCategorysList</span><span class="p">(</span><span class="n">refresh</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
3898
4295
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Cached configuration (count): </span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">categories</span><span class="p">))</span>
3899
4296
 
3900
4297
  <span class="c1"># get cached configuration directly from the configuration manager dictionary.</span>
3901
- <span class="k">if</span> <span class="s2">&quot;GetBrowseCategorys&quot;</span> <span class="ow">in</span> <span class="n">spotify</span><span class="o">.</span><span class="n">ConfigurationCache</span><span class="p">:</span>
3902
- <span class="n">categories</span><span class="p">:</span><span class="nb">list</span><span class="p">[</span><span class="n">Category</span><span class="p">]</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">ConfigurationCache</span><span class="p">[</span><span class="s2">&quot;GetBrowseCategorys&quot;</span><span class="p">]</span>
4298
+ <span class="k">if</span> <span class="s2">&quot;GetBrowseCategorysList&quot;</span> <span class="ow">in</span> <span class="n">spotify</span><span class="o">.</span><span class="n">ConfigurationCache</span><span class="p">:</span>
4299
+ <span class="n">categories</span><span class="p">:</span><span class="nb">list</span><span class="p">[</span><span class="n">Category</span><span class="p">]</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">ConfigurationCache</span><span class="p">[</span><span class="s2">&quot;GetBrowseCategorysList&quot;</span><span class="p">]</span>
3903
4300
  <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Cached configuration direct access (count): </span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">categories</span><span class="p">))</span>
3904
4301
 
3905
4302
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
@@ -3917,7 +4314,7 @@ the spotify web api request. This results in better performance.</p>
3917
4314
  <div class="attr function">
3918
4315
 
3919
4316
  <span class="def">def</span>
3920
- <span class="name">GetCategoryPlaylists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">categoryId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n">Tuple</span><span class="p">[</span><span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span>:</span></span>
4317
+ <span class="name">GetCategoryPlaylists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">categoryId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n">Tuple</span><span class="p">[</span><span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span>:</span></span>
3921
4318
 
3922
4319
 
3923
4320
  </div>
@@ -3930,15 +4327,20 @@ the spotify web api request. This results in better performance.</p>
3930
4327
  <ul>
3931
4328
  <li><strong>categoryId (str):</strong> The Spotify category ID for the category. <br />
3932
4329
  Example: <code>dinner</code></li>
3933
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
4330
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
3934
4331
  Default: 20, Range: 1 to 50. </li>
3935
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
4332
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
3936
4333
  Use with limit to get the next set of items. <br />
3937
4334
  Default: 0 (the first item). </li>
3938
4335
  <li><strong>country (str):</strong> A country: an ISO 3166-1 alpha-2 country code. <br />
3939
4336
  Provide this parameter if you want the list of returned items to be relevant to a
3940
4337
  particular country. If omitted, the returned items will be relevant to all countries. <br />
3941
4338
  Example: <code>SE</code></li>
4339
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
4340
+ If specified, this argument overrides the limit and offset argument values
4341
+ and paging is automatically used to retrieve all available items up to the
4342
+ maximum number specified. <br />
4343
+ Default: None (disabled)</li>
3942
4344
  </ul>
3943
4345
 
3944
4346
  <h6 id="returns">Returns:</h6>
@@ -3961,7 +4363,7 @@ and the response contains error information.</li>
3961
4363
  </ul>
3962
4364
 
3963
4365
  <p><details>
3964
- <summary>Sample Code</summary></p>
4366
+ <summary>Sample Code - Manual Paging</summary></p>
3965
4367
 
3966
4368
  <div class="pdoc-code codehilite">
3967
4369
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -4020,6 +4422,49 @@ and the response contains error information.</li>
4020
4422
  </code></pre>
4021
4423
  </div>
4022
4424
 
4425
+ <p></details>
4426
+ <details>
4427
+ <summary>Sample Code - Auto Paging</summary></p>
4428
+
4429
+ <div class="pdoc-code codehilite">
4430
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
4431
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
4432
+
4433
+ <span class="k">try</span><span class="p">:</span>
4434
+
4435
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
4436
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
4437
+
4438
+ <span class="c1"># create new spotify client instance.</span>
4439
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
4440
+
4441
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
4442
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
4443
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
4444
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
4445
+
4446
+ <span class="c1"># get a list of Spotify playlists tagged with a particular category.</span>
4447
+ <span class="n">categoryId</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;toplists&#39;</span> <span class="c1"># &#39;pop&#39;</span>
4448
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL playlists for category &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">categoryId</span><span class="p">)</span>
4449
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">PlaylistPageSimplified</span>
4450
+ <span class="n">pageObj</span><span class="p">,</span> <span class="n">message</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetCategoryPlaylists</span><span class="p">(</span><span class="n">categoryId</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
4451
+
4452
+ <span class="c1"># display results.</span>
4453
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Playlist Results Type: &quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
4454
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
4455
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Playlists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
4456
+
4457
+ <span class="c1"># display playlist details.</span>
4458
+ <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
4459
+ <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
4460
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
4461
+
4462
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
4463
+
4464
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
4465
+ </code></pre>
4466
+ </div>
4467
+
4023
4468
  <p></details></p>
4024
4469
  </div>
4025
4470
 
@@ -4310,7 +4755,7 @@ and the response contains error information.</li>
4310
4755
  <div class="attr function">
4311
4756
 
4312
4757
  <span class="def">def</span>
4313
- <span class="name">GetEpisodeFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></span><span class="return-annotation">) -> <span class="n"><a href="models/episodepagesaved.html#EpisodePageSaved">spotifywebapipython.models.episodepagesaved.EpisodePageSaved</a></span>:</span></span>
4758
+ <span class="name">GetEpisodeFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/episodepagesaved.html#EpisodePageSaved">spotifywebapipython.models.episodepagesaved.EpisodePageSaved</a></span>:</span></span>
4314
4759
 
4315
4760
 
4316
4761
  </div>
@@ -4323,11 +4768,16 @@ and the response contains error information.</li>
4323
4768
  <h6 id="arguments">Arguments:</h6>
4324
4769
 
4325
4770
  <ul>
4326
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
4771
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
4327
4772
  Default: 20, Range: 1 to 50. </li>
4328
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
4773
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
4329
4774
  Use with limit to get the next set of items. <br />
4330
4775
  Default: 0 (the first item). </li>
4776
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
4777
+ If specified, this argument overrides the limit and offset argument values
4778
+ and paging is automatically used to retrieve all available items up to the
4779
+ maximum number specified. <br />
4780
+ Default: None (disabled)</li>
4331
4781
  </ul>
4332
4782
 
4333
4783
  <h6 id="returns">Returns:</h6>
@@ -4345,7 +4795,7 @@ and the response contains error information.</li>
4345
4795
  </ul>
4346
4796
 
4347
4797
  <p><details>
4348
- <summary>Sample Code</summary></p>
4798
+ <summary>Sample Code - Manual Paging</summary></p>
4349
4799
 
4350
4800
  <div class="pdoc-code codehilite">
4351
4801
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -4412,6 +4862,57 @@ and the response contains error information.</li>
4412
4862
  </code></pre>
4413
4863
  </div>
4414
4864
 
4865
+ <p></details>
4866
+ <details>
4867
+ <summary>Sample Code - Auto Paging</summary></p>
4868
+
4869
+ <div class="pdoc-code codehilite">
4870
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
4871
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
4872
+
4873
+ <span class="k">try</span><span class="p">:</span>
4874
+
4875
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
4876
+
4877
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
4878
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
4879
+ <span class="p">[</span>
4880
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
4881
+ <span class="s1">&#39;playlist-modify-public&#39;</span><span class="p">,</span>
4882
+ <span class="s1">&#39;ugc-image-upload&#39;</span><span class="p">,</span>
4883
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
4884
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
4885
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
4886
+ <span class="s1">&#39;user-read-playback-position&#39;</span><span class="p">,</span>
4887
+ <span class="p">]</span>
4888
+
4889
+ <span class="c1"># create new spotify client instance.</span>
4890
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
4891
+
4892
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
4893
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
4894
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
4895
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
4896
+
4897
+ <span class="c1"># get a list of the episodes saved in the current Spotify user&#39;s &#39;Your Library&#39;.</span>
4898
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL saved episodes for current user ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
4899
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">EpisodePageSaved</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetEpisodeFavorites</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
4900
+
4901
+ <span class="c1"># display paging details.</span>
4902
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
4903
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Episodes in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
4904
+
4905
+ <span class="c1"># display episode details.</span>
4906
+ <span class="n">episodeSaved</span><span class="p">:</span><span class="n">EpisodeSaved</span>
4907
+ <span class="k">for</span> <span class="n">episodeSaved</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
4908
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">episodeSaved</span><span class="o">.</span><span class="n">Episode</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">episodeSaved</span><span class="o">.</span><span class="n">Episode</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
4909
+
4910
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
4911
+
4912
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
4913
+ </code></pre>
4914
+ </div>
4915
+
4415
4916
  <p></details></p>
4416
4917
  </div>
4417
4918
 
@@ -4523,7 +5024,7 @@ and the response contains error information.</li>
4523
5024
  <div class="attr function">
4524
5025
 
4525
5026
  <span class="def">def</span>
4526
- <span class="name">GetFeaturedPlaylists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</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">locale</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">timestamp</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n">Tuple</span><span class="p">[</span><span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span>:</span></span>
5027
+ <span class="name">GetFeaturedPlaylists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">country</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">locale</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">timestamp</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n">Tuple</span><span class="p">[</span><span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span>:</span></span>
4527
5028
 
4528
5029
 
4529
5030
  </div>
@@ -4534,9 +5035,9 @@ and the response contains error information.</li>
4534
5035
  <h6 id="arguments">Arguments:</h6>
4535
5036
 
4536
5037
  <ul>
4537
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
5038
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
4538
5039
  Default: 20, Range: 1 to 50. </li>
4539
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
5040
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
4540
5041
  Use with limit to get the next set of items. <br />
4541
5042
  Default: 0 (the first item). </li>
4542
5043
  <li><strong>country (str):</strong> A country: an ISO 3166-1 alpha-2 country code. <br />
@@ -4559,6 +5060,11 @@ Example: <code>2023-10-23T09:00:00</code> for a user whose local time is 9AM.
4559
5060
  If there were no featured playlists (or there is no data) at the specified time, the response will
4560
5061
  revert to the current UTC time.
4561
5062
  Example: <code>2023-10-23T09:00:00</code></li>
5063
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
5064
+ If specified, this argument overrides the limit and offset argument values
5065
+ and paging is automatically used to retrieve all available items up to the
5066
+ maximum number specified. <br />
5067
+ Default: None (disabled)</li>
4562
5068
  </ul>
4563
5069
 
4564
5070
  <h6 id="returns">Returns:</h6>
@@ -4581,7 +5087,7 @@ and the response contains error information.</li>
4581
5087
  </ul>
4582
5088
 
4583
5089
  <p><details>
4584
- <summary>Sample Code</summary></p>
5090
+ <summary>Sample Code - Manual Paging</summary></p>
4585
5091
 
4586
5092
  <div class="pdoc-code codehilite">
4587
5093
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -4639,6 +5145,48 @@ and the response contains error information.</li>
4639
5145
  </code></pre>
4640
5146
  </div>
4641
5147
 
5148
+ <p></details>
5149
+ <details>
5150
+ <summary>Sample Code - Auto Paging</summary></p>
5151
+
5152
+ <div class="pdoc-code codehilite">
5153
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
5154
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
5155
+
5156
+ <span class="k">try</span><span class="p">:</span>
5157
+
5158
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
5159
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
5160
+
5161
+ <span class="c1"># create new spotify client instance.</span>
5162
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
5163
+
5164
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
5165
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
5166
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
5167
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
5168
+
5169
+ <span class="c1"># get a list of Spotify featured playlists.</span>
5170
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL Spotify featured playlists ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
5171
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">PlaylistPageSimplified</span>
5172
+ <span class="n">pageObj</span><span class="p">,</span> <span class="n">message</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetFeaturedPlaylists</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
5173
+
5174
+ <span class="c1"># display paging details.</span>
5175
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Playlist Results Type: &quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
5176
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
5177
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Playlists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
5178
+
5179
+ <span class="c1"># display playlist details.</span>
5180
+ <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
5181
+ <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
5182
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
5183
+
5184
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
5185
+
5186
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
5187
+ </code></pre>
5188
+ </div>
5189
+
4642
5190
  <p></details></p>
4643
5191
  </div>
4644
5192
 
@@ -5346,7 +5894,7 @@ Note: Currently doesn't support podcast episodes.</p>
5346
5894
  <h6 id="arguments">Arguments:</h6>
5347
5895
 
5348
5896
  <ul>
5349
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
5897
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
5350
5898
  Default: <code>20</code>, Range: <code>1</code> to <code>50</code>. </li>
5351
5899
  <li><strong>after (int):</strong> Returns all items after (but not including) this cursor position, which is
5352
5900
  a Unix timestamp in milliseconds. <br />
@@ -5363,6 +5911,9 @@ Default: <code>0</code> (the first item). </li>
5363
5911
  <p>The <code>after</code> and <code>before</code> arguments are based upon local time (not UTC time). Recently
5364
5912
  played item history uses a local timestamp, and NOT a UTC timestamp.</p>
5365
5913
 
5914
+ <p>If both <code>after</code> and <code>before</code> arguments are null (or zero), then an <code>after</code> value
5915
+ is generated that will retrieve recently played tracks for the past 24 hours.</p>
5916
+
5366
5917
  <h6 id="returns">Returns:</h6>
5367
5918
 
5368
5919
  <blockquote>
@@ -5689,7 +6240,7 @@ and the response contains error information.</li>
5689
6240
  <div class="attr function">
5690
6241
 
5691
6242
  <span class="def">def</span>
5692
- <span class="name">GetPlaylistItems</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">playlistId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">fields</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">additionalTypes</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/playlistpage.html#PlaylistPage">spotifywebapipython.models.playlistpage.PlaylistPage</a></span>:</span></span>
6243
+ <span class="name">GetPlaylistItems</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">playlistId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">fields</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">additionalTypes</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/playlistpage.html#PlaylistPage">spotifywebapipython.models.playlistpage.PlaylistPage</a></span>:</span></span>
5693
6244
 
5694
6245
 
5695
6246
  </div>
@@ -5704,9 +6255,9 @@ and the response contains error information.</li>
5704
6255
  <ul>
5705
6256
  <li><strong>playlistId (str):</strong> The Spotify ID of the playlist. <br />
5706
6257
  Example: <code>5v5ETK9WFXAnGQ3MRubKuE</code></li>
5707
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
6258
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
5708
6259
  Default: 50, Range: 1 to 50. </li>
5709
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
6260
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
5710
6261
  Use with limit to get the next set of items. <br />
5711
6262
  Default: 0 (the first item). </li>
5712
6263
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
@@ -5734,6 +6285,11 @@ Valid types are: track and episode. <br />
5734
6285
  Note: This parameter was introduced to allow existing clients to maintain their current behaviour
5735
6286
  and might be deprecated in the future. In addition to providing this parameter, make sure that your
5736
6287
  client properly handles cases of new types in the future by checking against the type field of each object. </li>
6288
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
6289
+ If specified, this argument overrides the limit and offset argument values
6290
+ and paging is automatically used to retrieve all available items up to the
6291
+ maximum number specified. <br />
6292
+ Default: None (disabled)</li>
5737
6293
  </ul>
5738
6294
 
5739
6295
  <h6 id="returns">Returns:</h6>
@@ -5751,7 +6307,7 @@ and the response contains error information.</li>
5751
6307
  </ul>
5752
6308
 
5753
6309
  <p><details>
5754
- <summary>Sample Code</summary></p>
6310
+ <summary>Sample Code - Manual Paging</summary></p>
5755
6311
 
5756
6312
  <div class="pdoc-code codehilite">
5757
6313
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -5812,6 +6368,49 @@ and the response contains error information.</li>
5812
6368
  </code></pre>
5813
6369
  </div>
5814
6370
 
6371
+ <p></details>
6372
+ <details>
6373
+ <summary>Sample Code - Auto Paging</summary></p>
6374
+
6375
+ <div class="pdoc-code codehilite">
6376
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
6377
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
6378
+
6379
+ <span class="k">try</span><span class="p">:</span>
6380
+
6381
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
6382
+
6383
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
6384
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span><span class="s1">&#39;user-library-read&#39;</span><span class="p">]</span>
6385
+
6386
+ <span class="c1"># create new spotify client instance.</span>
6387
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
6388
+
6389
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
6390
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
6391
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
6392
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
6393
+
6394
+ <span class="c1"># get full details of the items of a playlist owned by a Spotify user.</span>
6395
+ <span class="n">playlistId</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;5v5ETK9WFXAnGQ3MRubKuE&#39;</span>
6396
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL item details for playlist &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">playlistId</span><span class="p">)</span>
6397
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">PlaylistPage</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetPlaylistItems</span><span class="p">(</span><span class="n">playlistId</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
6398
+
6399
+ <span class="c1"># display paging details.</span>
6400
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
6401
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Track Item results: (</span><span class="si">%d</span><span class="s1"> items)&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
6402
+
6403
+ <span class="c1"># display track details.</span>
6404
+ <span class="n">playlistTrack</span><span class="p">:</span><span class="n">PlaylistTrack</span>
6405
+ <span class="k">for</span> <span class="n">playlistTrack</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
6406
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">), added on </span><span class="si">{added}</span><span class="s1"> &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlistTrack</span><span class="o">.</span><span class="n">Track</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlistTrack</span><span class="o">.</span><span class="n">Track</span><span class="o">.</span><span class="n">Uri</span><span class="p">,</span> <span class="n">added</span><span class="o">=</span><span class="n">playlistTrack</span><span class="o">.</span><span class="n">AddedAt</span><span class="p">))</span>
6407
+
6408
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
6409
+
6410
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
6411
+ </code></pre>
6412
+ </div>
6413
+
5815
6414
  <p></details></p>
5816
6415
  </div>
5817
6416
 
@@ -5821,7 +6420,7 @@ and the response contains error information.</li>
5821
6420
  <div class="attr function">
5822
6421
 
5823
6422
  <span class="def">def</span>
5824
- <span class="name">GetPlaylistFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></span><span class="return-annotation">) -> <span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span>:</span></span>
6423
+ <span class="name">GetPlaylistFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span>:</span></span>
5825
6424
 
5826
6425
 
5827
6426
  </div>
@@ -5834,11 +6433,16 @@ and the response contains error information.</li>
5834
6433
  <h6 id="arguments">Arguments:</h6>
5835
6434
 
5836
6435
  <ul>
5837
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
6436
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
5838
6437
  Default: 20, Range: 1 to 50. </li>
5839
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
6438
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
5840
6439
  Use with limit to get the next set of items. <br />
5841
6440
  Default: 0 (the first item). </li>
6441
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
6442
+ If specified, this argument overrides the limit and offset argument values
6443
+ and paging is automatically used to retrieve all available items up to the
6444
+ maximum number specified. <br />
6445
+ Default: None (disabled)</li>
5842
6446
  </ul>
5843
6447
 
5844
6448
  <h6 id="returns">Returns:</h6>
@@ -5856,7 +6460,7 @@ and the response contains error information.</li>
5856
6460
  </ul>
5857
6461
 
5858
6462
  <p><details>
5859
- <summary>Sample Code</summary></p>
6463
+ <summary>Sample Code - Manual Paging</summary></p>
5860
6464
 
5861
6465
  <div class="pdoc-code codehilite">
5862
6466
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -5917,6 +6521,55 @@ and the response contains error information.</li>
5917
6521
  </code></pre>
5918
6522
  </div>
5919
6523
 
6524
+ <p></details>
6525
+ <details>
6526
+ <summary>Sample Code - Auto Paging</summary></p>
6527
+
6528
+ <div class="pdoc-code codehilite">
6529
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
6530
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
6531
+
6532
+ <span class="k">try</span><span class="p">:</span>
6533
+
6534
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
6535
+
6536
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
6537
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
6538
+ <span class="p">[</span>
6539
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
6540
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
6541
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
6542
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
6543
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
6544
+ <span class="p">]</span>
6545
+
6546
+ <span class="c1"># create new spotify client instance.</span>
6547
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
6548
+
6549
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
6550
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
6551
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
6552
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
6553
+
6554
+ <span class="c1"># get a list of the playlists owned or followed by the current Spotify user.</span>
6555
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL playlists for current user ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
6556
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">PlaylistPageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetPlaylistFavorites</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
6557
+
6558
+ <span class="c1"># display paging details.</span>
6559
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
6560
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Playlists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
6561
+
6562
+ <span class="c1"># display playlist details.</span>
6563
+ <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
6564
+ <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
6565
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
6566
+
6567
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
6568
+
6569
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
6570
+ </code></pre>
6571
+ </div>
6572
+
5920
6573
  <p></details></p>
5921
6574
  </div>
5922
6575
 
@@ -5926,7 +6579,7 @@ and the response contains error information.</li>
5926
6579
  <div class="attr function">
5927
6580
 
5928
6581
  <span class="def">def</span>
5929
- <span class="name">GetPlaylistsForUser</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">userId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></span><span class="return-annotation">) -> <span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span>:</span></span>
6582
+ <span class="name">GetPlaylistsForUser</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">userId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/playlistpagesimplified.html#PlaylistPageSimplified">spotifywebapipython.models.playlistpagesimplified.PlaylistPageSimplified</a></span>:</span></span>
5930
6583
 
5931
6584
 
5932
6585
  </div>
@@ -5941,11 +6594,16 @@ and the response contains error information.</li>
5941
6594
  <ul>
5942
6595
  <li><strong>userId (str):</strong> The user's Spotify user ID. <br />
5943
6596
  Example: <code>smedjan</code></li>
5944
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
6597
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
5945
6598
  Default: 20, Range: 1 to 50. </li>
5946
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
6599
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
5947
6600
  Use with limit to get the next set of items. <br />
5948
6601
  Default: 0 (the first item). </li>
6602
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
6603
+ If specified, this argument overrides the limit and offset argument values
6604
+ and paging is automatically used to retrieve all available items up to the
6605
+ maximum number specified. <br />
6606
+ Default: None (disabled)</li>
5949
6607
  </ul>
5950
6608
 
5951
6609
  <h6 id="returns">Returns:</h6>
@@ -5963,7 +6621,7 @@ and the response contains error information.</li>
5963
6621
  </ul>
5964
6622
 
5965
6623
  <p><details>
5966
- <summary>Sample Code</summary></p>
6624
+ <summary>Sample Code - Manual Paging</summary></p>
5967
6625
 
5968
6626
  <div class="pdoc-code codehilite">
5969
6627
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6025,6 +6683,56 @@ and the response contains error information.</li>
6025
6683
  </code></pre>
6026
6684
  </div>
6027
6685
 
6686
+ <p></details>
6687
+ <details>
6688
+ <summary>Sample Code - Auto Paging</summary></p>
6689
+
6690
+ <div class="pdoc-code codehilite">
6691
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
6692
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
6693
+
6694
+ <span class="k">try</span><span class="p">:</span>
6695
+
6696
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
6697
+
6698
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
6699
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
6700
+ <span class="p">[</span>
6701
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
6702
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
6703
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
6704
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
6705
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
6706
+ <span class="p">]</span>
6707
+
6708
+ <span class="c1"># create new spotify client instance.</span>
6709
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
6710
+
6711
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
6712
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
6713
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
6714
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
6715
+
6716
+ <span class="c1"># get a list of the playlists owned or followed by a Spotify user.</span>
6717
+ <span class="n">userId</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;smedjan&#39;</span>
6718
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL playlists for user &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">userId</span><span class="p">)</span>
6719
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">PlaylistPageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetPlaylistsForUser</span><span class="p">(</span><span class="n">userId</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
6720
+
6721
+ <span class="c1"># display paging details.</span>
6722
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
6723
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Playlists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
6724
+
6725
+ <span class="c1"># display playlist details.</span>
6726
+ <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
6727
+ <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
6728
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
6729
+
6730
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
6731
+
6732
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
6733
+ </code></pre>
6734
+ </div>
6735
+
6028
6736
  <p></details></p>
6029
6737
  </div>
6030
6738
 
@@ -6147,7 +6855,7 @@ and the response contains error information.</li>
6147
6855
  <div class="attr function">
6148
6856
 
6149
6857
  <span class="def">def</span>
6150
- <span class="name">GetShowEpisodes</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">showId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/episodepagesimplified.html#EpisodePageSimplified">spotifywebapipython.models.episodepagesimplified.EpisodePageSimplified</a></span>:</span></span>
6858
+ <span class="name">GetShowEpisodes</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">showId</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/episodepagesimplified.html#EpisodePageSimplified">spotifywebapipython.models.episodepagesimplified.EpisodePageSimplified</a></span>:</span></span>
6151
6859
 
6152
6860
 
6153
6861
  </div>
@@ -6162,7 +6870,7 @@ and the response contains error information.</li>
6162
6870
  <ul>
6163
6871
  <li><strong>showId (str):</strong> The Spotify ID for the show.
6164
6872
  Example: <code>38bS44xjbVVZ3No3ByF1dJ</code></li>
6165
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
6873
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
6166
6874
  Default: 20, Range: 1 to 50. </li>
6167
6875
  <li><strong>offset (int):</strong> The index of the first item to return; use with limit to get the next set of items. <br />
6168
6876
  Default: 0 (the first item). </li>
@@ -6173,6 +6881,11 @@ this parameter. <br />
6173
6881
  Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
6174
6882
  Users can view the country that is associated with their account in the account settings. <br />
6175
6883
  Example: <code>ES</code></li>
6884
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
6885
+ If specified, this argument overrides the limit and offset argument values
6886
+ and paging is automatically used to retrieve all available items up to the
6887
+ maximum number specified. <br />
6888
+ Default: None (disabled)</li>
6176
6889
  </ul>
6177
6890
 
6178
6891
  <h6 id="returns">Returns:</h6>
@@ -6190,7 +6903,7 @@ and the response contains error information.</li>
6190
6903
  </ul>
6191
6904
 
6192
6905
  <p><details>
6193
- <summary>Sample Code</summary></p>
6906
+ <summary>Sample Code - Manual Paging</summary></p>
6194
6907
 
6195
6908
  <div class="pdoc-code codehilite">
6196
6909
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6258,16 +6971,68 @@ and the response contains error information.</li>
6258
6971
  </code></pre>
6259
6972
  </div>
6260
6973
 
6261
- <p></details></p>
6262
- </div>
6974
+ <p></details>
6975
+ <details>
6976
+ <summary>Sample Code - Auto Paging</summary></p>
6263
6977
 
6978
+ <div class="pdoc-code codehilite">
6979
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
6980
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
6264
6981
 
6265
- </div>
6266
- <div id="SpotifyClient.GetShowFavorites" class="classattr">
6267
- <div class="attr function">
6268
-
6269
- <span class="def">def</span>
6270
- <span class="name">GetShowFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></span><span class="return-annotation">) -> <span class="n"><a href="models/showpagesaved.html#ShowPageSaved">spotifywebapipython.models.showpagesaved.ShowPageSaved</a></span>:</span></span>
6982
+ <span class="k">try</span><span class="p">:</span>
6983
+
6984
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
6985
+
6986
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
6987
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
6988
+ <span class="p">[</span>
6989
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
6990
+ <span class="s1">&#39;playlist-modify-public&#39;</span><span class="p">,</span>
6991
+ <span class="s1">&#39;ugc-image-upload&#39;</span><span class="p">,</span>
6992
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
6993
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
6994
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
6995
+ <span class="s1">&#39;user-read-playback-position&#39;</span><span class="p">,</span>
6996
+ <span class="p">]</span>
6997
+
6998
+ <span class="c1"># create new spotify client instance.</span>
6999
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
7000
+
7001
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
7002
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
7003
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
7004
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
7005
+
7006
+ <span class="c1"># get Spotify catalog information about a show&#39;s episodes.</span>
7007
+ <span class="n">showId</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;6E1u3kxII5CbbFR4VObax4&#39;</span>
7008
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting list of ALL episodes for show id &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">showId</span><span class="p">)</span>
7009
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">EpisodePageSimplified</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetShowEpisodes</span><span class="p">(</span><span class="n">showId</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
7010
+
7011
+ <span class="c1"># display paging details.</span>
7012
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
7013
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Episodes in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
7014
+
7015
+ <span class="c1"># display episode details.</span>
7016
+ <span class="n">episodeSimplified</span><span class="p">:</span><span class="n">EpisodePageSimplified</span>
7017
+ <span class="k">for</span> <span class="n">episodeSimplified</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
7018
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">episodeSimplified</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">episodeSimplified</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
7019
+
7020
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
7021
+
7022
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
7023
+ </code></pre>
7024
+ </div>
7025
+
7026
+ <p></details></p>
7027
+ </div>
7028
+
7029
+
7030
+ </div>
7031
+ <div id="SpotifyClient.GetShowFavorites" class="classattr">
7032
+ <div class="attr function">
7033
+
7034
+ <span class="def">def</span>
7035
+ <span class="name">GetShowFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/showpagesaved.html#ShowPageSaved">spotifywebapipython.models.showpagesaved.ShowPageSaved</a></span>:</span></span>
6271
7036
 
6272
7037
 
6273
7038
  </div>
@@ -6280,11 +7045,16 @@ and the response contains error information.</li>
6280
7045
  <h6 id="arguments">Arguments:</h6>
6281
7046
 
6282
7047
  <ul>
6283
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
7048
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
6284
7049
  Default: 20, Range: 1 to 50. </li>
6285
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
7050
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
6286
7051
  Use with limit to get the next set of items. <br />
6287
7052
  Default: 0 (the first item). </li>
7053
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
7054
+ If specified, this argument overrides the limit and offset argument values
7055
+ and paging is automatically used to retrieve all available items up to the
7056
+ maximum number specified. <br />
7057
+ Default: None (disabled)</li>
6288
7058
  </ul>
6289
7059
 
6290
7060
  <h6 id="returns">Returns:</h6>
@@ -6302,7 +7072,7 @@ and the response contains error information.</li>
6302
7072
  </ul>
6303
7073
 
6304
7074
  <p><details>
6305
- <summary>Sample Code</summary></p>
7075
+ <summary>Sample Code - Manual Paging</summary></p>
6306
7076
 
6307
7077
  <div class="pdoc-code codehilite">
6308
7078
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6360,6 +7130,48 @@ and the response contains error information.</li>
6360
7130
  </code></pre>
6361
7131
  </div>
6362
7132
 
7133
+ <p></details>
7134
+ <details>
7135
+ <summary>Sample Code - Auto Paging</summary></p>
7136
+
7137
+ <div class="pdoc-code codehilite">
7138
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
7139
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
7140
+
7141
+ <span class="k">try</span><span class="p">:</span>
7142
+
7143
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
7144
+
7145
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
7146
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span><span class="s1">&#39;user-library-read&#39;</span><span class="p">]</span>
7147
+
7148
+ <span class="c1"># create new spotify client instance.</span>
7149
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
7150
+
7151
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
7152
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
7153
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
7154
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
7155
+
7156
+ <span class="c1"># get a list of the shows saved in the current Spotify user&#39;s &#39;Your Library&#39;.</span>
7157
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL saved shows for current user ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
7158
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">ShowPageSaved</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetShowFavorites</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
7159
+
7160
+ <span class="c1"># display paging details.</span>
7161
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
7162
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Shows in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
7163
+
7164
+ <span class="c1"># display show details.</span>
7165
+ <span class="n">showSaved</span><span class="p">:</span><span class="n">ShowSaved</span>
7166
+ <span class="k">for</span> <span class="n">showSaved</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
7167
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">showSaved</span><span class="o">.</span><span class="n">Show</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">showSaved</span><span class="o">.</span><span class="n">Show</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
7168
+
7169
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
7170
+
7171
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
7172
+ </code></pre>
7173
+ </div>
7174
+
6363
7175
  <p></details></p>
6364
7176
  </div>
6365
7177
 
@@ -6610,7 +7422,7 @@ and the response contains error information.</li>
6610
7422
  <div class="attr function">
6611
7423
 
6612
7424
  <span class="def">def</span>
6613
- <span class="name">GetTrackFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/trackpagesaved.html#TrackPageSaved">spotifywebapipython.models.trackpagesaved.TrackPageSaved</a></span>:</span></span>
7425
+ <span class="name">GetTrackFavorites</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/trackpagesaved.html#TrackPageSaved">spotifywebapipython.models.trackpagesaved.TrackPageSaved</a></span>:</span></span>
6614
7426
 
6615
7427
 
6616
7428
  </div>
@@ -6623,9 +7435,9 @@ and the response contains error information.</li>
6623
7435
  <h6 id="arguments">Arguments:</h6>
6624
7436
 
6625
7437
  <ul>
6626
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
7438
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
6627
7439
  Default: 20, Range: 1 to 50. </li>
6628
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
7440
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
6629
7441
  Use with limit to get the next set of items. <br />
6630
7442
  Default: 0 (the first item). </li>
6631
7443
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
@@ -6635,6 +7447,11 @@ this parameter. <br />
6635
7447
  Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
6636
7448
  Users can view the country that is associated with their account in the account settings. <br />
6637
7449
  Example: <code>ES</code></li>
7450
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
7451
+ If specified, this argument overrides the limit and offset argument values
7452
+ and paging is automatically used to retrieve all available items up to the
7453
+ maximum number specified. <br />
7454
+ Default: None (disabled)</li>
6638
7455
  </ul>
6639
7456
 
6640
7457
  <h6 id="returns">Returns:</h6>
@@ -6652,7 +7469,7 @@ and the response contains error information.</li>
6652
7469
  </ul>
6653
7470
 
6654
7471
  <p><details>
6655
- <summary>Sample Code</summary></p>
7472
+ <summary>Sample Code - Manual Paging</summary></p>
6656
7473
 
6657
7474
  <div class="pdoc-code codehilite">
6658
7475
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6710,6 +7527,48 @@ and the response contains error information.</li>
6710
7527
  </code></pre>
6711
7528
  </div>
6712
7529
 
7530
+ <p></details>
7531
+ <details>
7532
+ <summary>Sample Code - Auto Paging</summary></p>
7533
+
7534
+ <div class="pdoc-code codehilite">
7535
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
7536
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
7537
+
7538
+ <span class="k">try</span><span class="p">:</span>
7539
+
7540
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
7541
+
7542
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
7543
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span><span class="s1">&#39;user-library-read&#39;</span><span class="p">]</span>
7544
+
7545
+ <span class="c1"># create new spotify client instance.</span>
7546
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
7547
+
7548
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
7549
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
7550
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
7551
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
7552
+
7553
+ <span class="c1"># get a list of the tracks saved in the current Spotify user&#39;s &#39;Your Library&#39;.</span>
7554
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL saved tracks for current user ...</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
7555
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">TrackPageSaved</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetTrackFavorites</span><span class="p">(</span><span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
7556
+
7557
+ <span class="c1"># display paging details.</span>
7558
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
7559
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Tracks in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
7560
+
7561
+ <span class="c1"># display track details.</span>
7562
+ <span class="n">trackSaved</span><span class="p">:</span><span class="n">TrackSaved</span>
7563
+ <span class="k">for</span> <span class="n">trackSaved</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
7564
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">trackSaved</span><span class="o">.</span><span class="n">Track</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">trackSaved</span><span class="o">.</span><span class="n">Track</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
7565
+
7566
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
7567
+
7568
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
7569
+ </code></pre>
7570
+ </div>
7571
+
6713
7572
  <p></details></p>
6714
7573
  </div>
6715
7574
 
@@ -6899,7 +7758,7 @@ minX / maxX / and targetX argument values.</p>
6899
7758
  <h6 id="arguments">Arguments:</h6>
6900
7759
 
6901
7760
  <ul>
6902
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
7761
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
6903
7762
  Default: 20, Range: 1 to 50. </li>
6904
7763
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
6905
7764
  is available in that market will be returned. If a valid user access token is specified
@@ -7319,7 +8178,7 @@ and the response contains error information.</li>
7319
8178
  <div class="attr function">
7320
8179
 
7321
8180
  <span class="def">def</span>
7322
- <span class="name">GetUsersTopArtists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">timeRange</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;medium_term&#39;</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></span><span class="return-annotation">) -> <span class="n"><a href="models/artistpage.html#ArtistPage">spotifywebapipython.models.artistpage.ArtistPage</a></span>:</span></span>
8181
+ <span class="name">GetUsersTopArtists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">timeRange</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;medium_term&#39;</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/artistpage.html#ArtistPage">spotifywebapipython.models.artistpage.ArtistPage</a></span>:</span></span>
7323
8182
 
7324
8183
 
7325
8184
  </div>
@@ -7339,11 +8198,16 @@ Valid values: <br />
7339
8198
  Default: <code>medium_term</code> <br />
7340
8199
  Example: <code>long_term</code></li>
7341
8200
  </ul></li>
7342
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
8201
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
7343
8202
  Default: 20, Range: 1 to 50. </li>
7344
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
8203
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
7345
8204
  Use with limit to get the next set of items. <br />
7346
8205
  Default: 0 (the first item), Range: 0 to 1000</li>
8206
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
8207
+ If specified, this argument overrides the limit and offset argument values
8208
+ and paging is automatically used to retrieve all available items up to the
8209
+ maximum number specified. <br />
8210
+ Default: None (disabled)</li>
7347
8211
  </ul>
7348
8212
 
7349
8213
  <h6 id="returns">Returns:</h6>
@@ -7361,7 +8225,7 @@ and the response contains error information.</li>
7361
8225
  </ul>
7362
8226
 
7363
8227
  <p><details>
7364
- <summary>Sample Code</summary></p>
8228
+ <summary>Sample Code - Manual Paging</summary></p>
7365
8229
 
7366
8230
  <div class="pdoc-code codehilite">
7367
8231
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -7420,6 +8284,53 @@ and the response contains error information.</li>
7420
8284
  </code></pre>
7421
8285
  </div>
7422
8286
 
8287
+ <p></details>
8288
+ <details>
8289
+ <summary>Sample Code - Auto Paging</summary></p>
8290
+
8291
+ <div class="pdoc-code codehilite">
8292
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
8293
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
8294
+
8295
+ <span class="k">try</span><span class="p">:</span>
8296
+
8297
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
8298
+
8299
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
8300
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
8301
+ <span class="p">[</span>
8302
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
8303
+ <span class="s1">&#39;user-top-read&#39;</span><span class="p">,</span>
8304
+ <span class="p">]</span>
8305
+
8306
+ <span class="c1"># create new spotify client instance.</span>
8307
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
8308
+
8309
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
8310
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
8311
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
8312
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
8313
+
8314
+ <span class="c1"># get current user&#39;s top artists based on calculated affinity.</span>
8315
+ <span class="n">affinity</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;long_term&#39;</span>
8316
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL current user top artists for &quot;</span><span class="si">%s</span><span class="s1">&quot; affinity ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">affinity</span><span class="p">)</span>
8317
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">ArtistPage</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetUsersTopArtists</span><span class="p">(</span><span class="n">affinity</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
8318
+
8319
+ <span class="c1"># display paging details.</span>
8320
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
8321
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Artists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
8322
+
8323
+ <span class="c1"># display artist details.</span>
8324
+ <span class="n">artist</span><span class="p">:</span><span class="n">Artist</span>
8325
+ <span class="k">for</span> <span class="n">artist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
8326
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
8327
+
8328
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
8329
+
8330
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
8331
+ </code></pre>
8332
+ </div>
8333
+
7423
8334
  <p></details></p>
7424
8335
  </div>
7425
8336
 
@@ -7429,7 +8340,7 @@ and the response contains error information.</li>
7429
8340
  <div class="attr function">
7430
8341
 
7431
8342
  <span class="def">def</span>
7432
- <span class="name">GetUsersTopTracks</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">timeRange</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;medium_term&#39;</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></span><span class="return-annotation">) -> <span class="n"><a href="models/trackpage.html#TrackPage">spotifywebapipython.models.trackpage.TrackPage</a></span>:</span></span>
8343
+ <span class="name">GetUsersTopTracks</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">timeRange</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;medium_term&#39;</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/trackpage.html#TrackPage">spotifywebapipython.models.trackpage.TrackPage</a></span>:</span></span>
7433
8344
 
7434
8345
 
7435
8346
  </div>
@@ -7449,11 +8360,16 @@ Valid values: <br />
7449
8360
  Default: <code>medium_term</code> <br />
7450
8361
  Example: <code>long_term</code></li>
7451
8362
  </ul></li>
7452
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
8363
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
7453
8364
  Default: 20, Range: 1 to 50. </li>
7454
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
8365
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
7455
8366
  Use with limit to get the next set of items. <br />
7456
- Default: 0 (the first item), Range: 0 to 1000</li>
8367
+ Default: 0 (the first item). </li>
8368
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
8369
+ If specified, this argument overrides the limit and offset argument values
8370
+ and paging is automatically used to retrieve all available items up to the
8371
+ maximum number specified. <br />
8372
+ Default: None (disabled)</li>
7457
8373
  </ul>
7458
8374
 
7459
8375
  <h6 id="returns">Returns:</h6>
@@ -7471,7 +8387,7 @@ and the response contains error information.</li>
7471
8387
  </ul>
7472
8388
 
7473
8389
  <p><details>
7474
- <summary>Sample Code</summary></p>
8390
+ <summary>Sample Code - Manual Paging</summary></p>
7475
8391
 
7476
8392
  <div class="pdoc-code codehilite">
7477
8393
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -7530,6 +8446,53 @@ and the response contains error information.</li>
7530
8446
  </code></pre>
7531
8447
  </div>
7532
8448
 
8449
+ <p></details>
8450
+ <details>
8451
+ <summary>Sample Code - Auto Paging</summary></p>
8452
+
8453
+ <div class="pdoc-code codehilite">
8454
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
8455
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
8456
+
8457
+ <span class="k">try</span><span class="p">:</span>
8458
+
8459
+ <span class="c1"># this sample requires an authorization token, as it requires security scope to accesses user data.</span>
8460
+
8461
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
8462
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
8463
+ <span class="p">[</span>
8464
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
8465
+ <span class="s1">&#39;user-top-read&#39;</span><span class="p">,</span>
8466
+ <span class="p">]</span>
8467
+
8468
+ <span class="c1"># create new spotify client instance.</span>
8469
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
8470
+
8471
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
8472
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
8473
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
8474
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
8475
+
8476
+ <span class="c1"># get current user&#39;s top tracks based on calculated affinity.</span>
8477
+ <span class="n">affinity</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;long_term&#39;</span>
8478
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting ALL current user top tracks for &quot;</span><span class="si">%s</span><span class="s1">&quot; affinity ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">affinity</span><span class="p">)</span>
8479
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">TrackPage</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">GetUsersTopTracks</span><span class="p">(</span><span class="n">affinity</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
8480
+
8481
+ <span class="c1"># display paging details.</span>
8482
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
8483
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Tracks in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
8484
+
8485
+ <span class="c1"># display track details.</span>
8486
+ <span class="n">track</span><span class="p">:</span><span class="n">Track</span>
8487
+ <span class="k">for</span> <span class="n">track</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
8488
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">track</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">track</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
8489
+
8490
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
8491
+
8492
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
8493
+ </code></pre>
8494
+ </div>
8495
+
7533
8496
  <p></details></p>
7534
8497
  </div>
7535
8498
 
@@ -9843,19 +10806,17 @@ in the Spotify music catalog.</p>
9843
10806
 
9844
10807
 
9845
10808
  </div>
9846
- <div id="SpotifyClient.Search" class="classattr">
10809
+ <div id="SpotifyClient.SearchAlbums" class="classattr">
9847
10810
  <div class="attr function">
9848
10811
 
9849
10812
  <span class="def">def</span>
9850
- <span class="name">Search</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">criteriaType</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
10813
+ <span class="name">SearchAlbums</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
9851
10814
 
9852
10815
 
9853
10816
  </div>
9854
- <a class="headerlink" href="#SpotifyClient.Search"></a>
10817
+ <a class="headerlink" href="#SpotifyClient.SearchAlbums"></a>
9855
10818
 
9856
- <div class="docstring"><p>Get Spotify catalog information about albums, artists, playlists, tracks, shows, episodes
9857
- or audiobooks that match a keyword string. Audiobooks are only available within the US, UK,
9858
- Canada, Ireland, New Zealand and Australia markets.</p>
10819
+ <div class="docstring"><p>Get Spotify catalog information about Albums that match a keyword string. </p>
9859
10820
 
9860
10821
  <h6 id="arguments">Arguments:</h6>
9861
10822
 
@@ -9872,15 +10833,11 @@ The isrc and track filters can be used while searching tracks. <br />
9872
10833
  The upc, tag:new and tag:hipster filters can only be used while searching albums.
9873
10834
  The tag:new filter will return albums released in the past two weeks and tag:hipster
9874
10835
  can be used to return only albums with the lowest 10% popularity.</li>
9875
- <li><strong>criteriaType (str):</strong> A comma-separated list of item types to search across. <br />
9876
- Search results include hits from all the specified item types. <br />
9877
- For example: "album,track" returns both albums and tracks matching criteria argument. <br />
9878
- Allowed values: "album", "artist", "playlist", "track", "show", "episode", "audiobook".</li>
9879
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
10836
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
9880
10837
  Default: 20, Range: 1 to 50. </li>
9881
- <li><strong>offset (int):</strong> The index of the first item to return. <br />
10838
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
9882
10839
  Use with limit to get the next set of items. <br />
9883
- Default: 0 (the first item), Range: 0 to 1000</li>
10840
+ Default: 0 (the first item). Range: 0 to 1000. </li>
9884
10841
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
9885
10842
  is available in that market will be returned. If a valid user access token is specified
9886
10843
  in the request header, the country associated with the user account will take priority over
@@ -9892,6 +10849,11 @@ Example: <code>ES</code></li>
9892
10849
  marks the content as playable in the response. By default externally hosted audio content is marked
9893
10850
  as unplayable in the response. <br />
9894
10851
  Allowed values: "audio"</li>
10852
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
10853
+ If specified, this argument overrides the limit and offset argument values
10854
+ and paging is automatically used to retrieve all available items up to the
10855
+ maximum number specified. <br />
10856
+ Default: None (disabled)</li>
9895
10857
  </ul>
9896
10858
 
9897
10859
  <h6 id="returns">Returns:</h6>
@@ -9908,11 +10870,11 @@ and the response contains error information.</li>
9908
10870
  <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
9909
10871
  </ul>
9910
10872
 
9911
- <p>Note the offset limitation of 1000 entries; this effectively limits you to 1,050 maximum
9912
- entries that you can return with a search.</p>
10873
+ <p>Note that Spotify Web API automatically limits you to 1,000 max entries per type that can
10874
+ be returned with a search.</p>
9913
10875
 
9914
10876
  <p><details>
9915
- <summary>Sample Code - Search Albums</summary></p>
10877
+ <summary>Sample Code - Manual Paging</summary></p>
9916
10878
 
9917
10879
  <div class="pdoc-code codehilite">
9918
10880
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -9931,11 +10893,10 @@ entries that you can return with a search.</p>
9931
10893
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
9932
10894
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
9933
10895
 
9934
- <span class="c1"># get Spotify catalog information about albums that match a keyword string.</span>
10896
+ <span class="c1"># get Spotify catalog information about Albums that match a keyword string.</span>
9935
10897
  <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Welcome to the New&#39;</span>
9936
- <span class="n">criteriaType</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;album&#39;</span>
9937
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for albums - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
9938
- <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
10898
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Albums - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10899
+ <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchAlbums</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
9939
10900
 
9940
10901
  <span class="c1"># display search response details.</span>
9941
10902
  <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
@@ -9959,10 +10920,15 @@ entries that you can return with a search.</p>
9959
10920
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Albums in this page of results:&#39;</span><span class="p">)</span>
9960
10921
 
9961
10922
  <span class="c1"># display album details.</span>
9962
- <span class="n">albumSimplified</span><span class="p">:</span><span class="n">AlbumSimplified</span>
9963
- <span class="k">for</span> <span class="n">albumSimplified</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
9964
-
9965
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">albumSimplified</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">albumSimplified</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10923
+ <span class="n">album</span><span class="p">:</span><span class="n">AlbumSimplified</span>
10924
+ <span class="k">for</span> <span class="n">album</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
10925
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">album</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">album</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10926
+
10927
+ <span class="c1"># for testing - don&#39;t return 1000 results! </span>
10928
+ <span class="c1"># comment the following 3 lines of code if you want ALL results.</span>
10929
+ <span class="k">if</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span> <span class="o">&gt;=</span> <span class="mi">75</span><span class="p">:</span>
10930
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">*** Stopping paging loop after 75 entries for testing.&#39;</span><span class="p">)</span>
10931
+ <span class="k">break</span>
9966
10932
 
9967
10933
  <span class="c1"># anymore page results?</span>
9968
10934
  <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
@@ -9971,7 +10937,7 @@ entries that you can return with a search.</p>
9971
10937
  <span class="k">else</span><span class="p">:</span>
9972
10938
  <span class="c1"># yes - retrieve the next page of results.</span>
9973
10939
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
9974
- <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
10940
+ <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchAlbums</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
9975
10941
 
9976
10942
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
9977
10943
 
@@ -9979,10 +10945,9 @@ entries that you can return with a search.</p>
9979
10945
  </code></pre>
9980
10946
  </div>
9981
10947
 
9982
- <p></details></p>
9983
-
9984
- <p><details>
9985
- <summary>Sample Code - Search Artists</summary></p>
10948
+ <p></details>
10949
+ <details>
10950
+ <summary>Sample Code - Auto Paging</summary></p>
9986
10951
 
9987
10952
  <div class="pdoc-code codehilite">
9988
10953
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10001,47 +10966,20 @@ entries that you can return with a search.</p>
10001
10966
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
10002
10967
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
10003
10968
 
10004
- <span class="c1"># get Spotify catalog information about artists that match a keyword string.</span>
10005
- <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;MercyMe&#39;</span>
10006
- <span class="n">criteriaType</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;artist&#39;</span>
10007
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for artists - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10008
- <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
10009
-
10010
- <span class="c1"># display search response details.</span>
10011
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
10012
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10013
-
10014
- <span class="c1"># save initial search response total, as search next page response total </span>
10015
- <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10016
- <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10017
- <span class="c1"># than working off of a cached result set.</span>
10018
- <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Artists</span><span class="o">.</span><span class="n">Total</span>
10019
-
10020
- <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10021
- <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
10022
-
10023
- <span class="c1"># only display album results for this example.</span>
10024
- <span class="n">pageObj</span><span class="p">:</span><span class="n">ArtistPage</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Artists</span>
10025
-
10026
- <span class="c1"># display paging details.</span>
10027
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
10028
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10029
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Artists in this page of results:&#39;</span><span class="p">)</span>
10030
-
10031
- <span class="c1"># display album details.</span>
10032
- <span class="n">artist</span><span class="p">:</span><span class="n">Artist</span>
10033
- <span class="k">for</span> <span class="n">artist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
10969
+ <span class="c1"># get Spotify catalog information about Albums that match a keyword string.</span>
10970
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Welcome to the New&#39;</span>
10971
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Albums - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10972
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchAlbums</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">75</span><span class="p">)</span>
10034
10973
 
10035
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10974
+ <span class="c1"># display paging details.</span>
10975
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
10976
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Albums</span><span class="p">))</span>
10977
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Albums in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Albums</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
10036
10978
 
10037
- <span class="c1"># anymore page results?</span>
10038
- <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
10039
- <span class="c1"># no - all pages were processed.</span>
10040
- <span class="k">break</span>
10041
- <span class="k">else</span><span class="p">:</span>
10042
- <span class="c1"># yes - retrieve the next page of results.</span>
10043
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
10044
- <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
10979
+ <span class="c1"># display album details.</span>
10980
+ <span class="n">album</span><span class="p">:</span><span class="n">AlbumSimplified</span>
10981
+ <span class="k">for</span> <span class="n">album</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Albums</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
10982
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">album</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">album</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10045
10983
 
10046
10984
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
10047
10985
 
@@ -10050,39 +10988,295 @@ entries that you can return with a search.</p>
10050
10988
  </div>
10051
10989
 
10052
10990
  <p></details></p>
10991
+ </div>
10053
10992
 
10054
- <p><details>
10055
- <summary>Sample Code - Search Audiobooks</summary></p>
10056
-
10057
- <div class="pdoc-code codehilite">
10058
- <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
10059
- <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
10060
10993
 
10061
- <span class="k">try</span><span class="p">:</span>
10994
+ </div>
10995
+ <div id="SpotifyClient.SearchArtists" class="classattr">
10996
+ <div class="attr function">
10997
+
10998
+ <span class="def">def</span>
10999
+ <span class="name">SearchArtists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
10062
11000
 
10063
- <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
10064
- <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
10065
- <span class="p">[</span>
10066
- <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
10067
- <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
10068
- <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
10069
- <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
10070
- <span class="s1">&#39;playlist-modify-public&#39;</span>
10071
- <span class="p">]</span>
11001
+
11002
+ </div>
11003
+ <a class="headerlink" href="#SpotifyClient.SearchArtists"></a>
11004
+
11005
+ <div class="docstring"><p>Get Spotify catalog information about Artists that match a keyword string. </p>
10072
11006
 
10073
- <span class="c1"># create new spotify client instance.</span>
10074
- <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11007
+ <h6 id="arguments">Arguments:</h6>
10075
11008
 
10076
- <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
10077
- <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
11009
+ <ul>
11010
+ <li><strong>criteria (str):</strong> Your search query. <br />
11011
+ You can narrow down your search using field filters. <br />
11012
+ The available filters are album, artist, track, year, upc, tag:hipster, tag:new,
11013
+ isrc, and genre. Each field filter only applies to certain result types. <br />
11014
+ The artist and year filters can be used while searching albums, artists and tracks.
11015
+ You can filter on a single year or a range (e.g. 1955-1960). <br />
11016
+ The album filter can be used while searching albums and tracks. <br />
11017
+ The genre filter can be used while searching artists and tracks. <br />
11018
+ The isrc and track filters can be used while searching tracks. <br />
11019
+ The upc, tag:new and tag:hipster filters can only be used while searching albums.
11020
+ The tag:new filter will return albums released in the past two weeks and tag:hipster
11021
+ can be used to return only albums with the lowest 10% popularity.</li>
11022
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
11023
+ Default: 20, Range: 1 to 50. </li>
11024
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
11025
+ Use with limit to get the next set of items. <br />
11026
+ Default: 0 (the first item). Range: 0 to 1000. </li>
11027
+ <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
11028
+ is available in that market will be returned. If a valid user access token is specified
11029
+ in the request header, the country associated with the user account will take priority over
11030
+ this parameter. <br />
11031
+ Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
11032
+ Users can view the country that is associated with their account in the account settings. <br />
11033
+ Example: <code>ES</code></li>
11034
+ <li><strong>includeExternal (str):</strong> If "audio" is specified it signals that the client can play externally hosted audio content, and
11035
+ marks the content as playable in the response. By default externally hosted audio content is marked
11036
+ as unplayable in the response. <br />
11037
+ Allowed values: "audio"</li>
11038
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
11039
+ If specified, this argument overrides the limit and offset argument values
11040
+ and paging is automatically used to retrieve all available items up to the
11041
+ maximum number specified. <br />
11042
+ Default: None (disabled)</li>
11043
+ </ul>
11044
+
11045
+ <h6 id="returns">Returns:</h6>
11046
+
11047
+ <blockquote>
11048
+ <p>A <code>SearchResponse</code> object that contains the search results.</p>
11049
+ </blockquote>
11050
+
11051
+ <h6 id="raises">Raises:</h6>
11052
+
11053
+ <ul>
11054
+ <li><strong>SpotifyWebApiError:</strong> If the Spotify Web API request was for a non-authorization service
11055
+ and the response contains error information.</li>
11056
+ <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
11057
+ </ul>
11058
+
11059
+ <p>Note that Spotify Web API automatically limits you to 1,000 max entries per type that can
11060
+ be returned with a search.</p>
11061
+
11062
+ <p><details>
11063
+ <summary>Sample Code - Manual Paging</summary></p>
11064
+
11065
+ <div class="pdoc-code codehilite">
11066
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11067
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11068
+
11069
+ <span class="k">try</span><span class="p">:</span>
11070
+
11071
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11072
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
11073
+
11074
+ <span class="c1"># create new spotify client instance.</span>
11075
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11076
+
11077
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
11078
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
11079
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
11080
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
11081
+
11082
+ <span class="c1"># get Spotify catalog information about Artists that match a keyword string.</span>
11083
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;MercyMe&#39;</span>
11084
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Artists - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11085
+ <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchArtists</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
11086
+
11087
+ <span class="c1"># display search response details.</span>
11088
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
11089
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
11090
+
11091
+ <span class="c1"># save initial search response total, as search next page response total </span>
11092
+ <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
11093
+ <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
11094
+ <span class="c1"># than working off of a cached result set.</span>
11095
+ <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Artists</span><span class="o">.</span><span class="n">Total</span>
11096
+
11097
+ <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
11098
+ <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
11099
+
11100
+ <span class="c1"># only display artist results for this example.</span>
11101
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">ArtistPage</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Artists</span>
11102
+
11103
+ <span class="c1"># display paging details.</span>
11104
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11105
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Artists in this page of results:&#39;</span><span class="p">)</span>
11106
+
11107
+ <span class="c1"># display artist details.</span>
11108
+ <span class="n">artist</span><span class="p">:</span><span class="n">ArtistPage</span>
11109
+ <span class="k">for</span> <span class="n">artist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11110
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11111
+
11112
+ <span class="c1"># for testing - don&#39;t return 1000 results! </span>
11113
+ <span class="c1"># comment the following 3 lines of code if you want ALL results.</span>
11114
+ <span class="k">if</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span> <span class="o">&gt;=</span> <span class="mi">75</span><span class="p">:</span>
11115
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">*** Stopping paging loop after 75 entries for testing.&#39;</span><span class="p">)</span>
11116
+ <span class="k">break</span>
11117
+
11118
+ <span class="c1"># anymore page results?</span>
11119
+ <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
11120
+ <span class="c1"># no - all pages were processed.</span>
11121
+ <span class="k">break</span>
11122
+ <span class="k">else</span><span class="p">:</span>
11123
+ <span class="c1"># yes - retrieve the next page of results.</span>
11124
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
11125
+ <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchArtists</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
11126
+
11127
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
11128
+
11129
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
11130
+ </code></pre>
11131
+ </div>
11132
+
11133
+ <p></details>
11134
+ <details>
11135
+ <summary>Sample Code - Auto Paging</summary></p>
11136
+
11137
+ <div class="pdoc-code codehilite">
11138
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11139
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11140
+
11141
+ <span class="k">try</span><span class="p">:</span>
11142
+
11143
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11144
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
11145
+
11146
+ <span class="c1"># create new spotify client instance.</span>
11147
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11148
+
11149
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
11150
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
11151
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
11152
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
11153
+
11154
+ <span class="c1"># get Spotify catalog information about Artists that match a keyword string.</span>
11155
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;MercyMe&#39;</span>
11156
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Artists - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11157
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchArtists</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">75</span><span class="p">)</span>
11158
+
11159
+ <span class="c1"># display paging details.</span>
11160
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11161
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Artists</span><span class="p">))</span>
11162
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Artists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Artists</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
11163
+
11164
+ <span class="c1"># display artist details.</span>
11165
+ <span class="n">artist</span><span class="p">:</span><span class="n">Artist</span>
11166
+ <span class="k">for</span> <span class="n">artist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Artists</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11167
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">artist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11168
+
11169
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
11170
+
11171
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
11172
+ </code></pre>
11173
+ </div>
11174
+
11175
+ <p></details></p>
11176
+ </div>
11177
+
11178
+
11179
+ </div>
11180
+ <div id="SpotifyClient.SearchAudiobooks" class="classattr">
11181
+ <div class="attr function">
11182
+
11183
+ <span class="def">def</span>
11184
+ <span class="name">SearchAudiobooks</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
11185
+
11186
+
11187
+ </div>
11188
+ <a class="headerlink" href="#SpotifyClient.SearchAudiobooks"></a>
11189
+
11190
+ <div class="docstring"><p>Get Spotify catalog information about Audiobooks that match a keyword string. </p>
11191
+
11192
+ <h6 id="arguments">Arguments:</h6>
11193
+
11194
+ <ul>
11195
+ <li><strong>criteria (str):</strong> Your search query. <br />
11196
+ You can narrow down your search using field filters. <br />
11197
+ The available filters are album, artist, track, year, upc, tag:hipster, tag:new,
11198
+ isrc, and genre. Each field filter only applies to certain result types. <br />
11199
+ The artist and year filters can be used while searching albums, artists and tracks.
11200
+ You can filter on a single year or a range (e.g. 1955-1960). <br />
11201
+ The album filter can be used while searching albums and tracks. <br />
11202
+ The genre filter can be used while searching artists and tracks. <br />
11203
+ The isrc and track filters can be used while searching tracks. <br />
11204
+ The upc, tag:new and tag:hipster filters can only be used while searching albums.
11205
+ The tag:new filter will return albums released in the past two weeks and tag:hipster
11206
+ can be used to return only albums with the lowest 10% popularity.</li>
11207
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
11208
+ Default: 20, Range: 1 to 50. </li>
11209
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
11210
+ Use with limit to get the next set of items. <br />
11211
+ Default: 0 (the first item). Range: 0 to 1000. </li>
11212
+ <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
11213
+ is available in that market will be returned. If a valid user access token is specified
11214
+ in the request header, the country associated with the user account will take priority over
11215
+ this parameter. <br />
11216
+ Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
11217
+ Users can view the country that is associated with their account in the account settings. <br />
11218
+ Example: <code>ES</code></li>
11219
+ <li><strong>includeExternal (str):</strong> If "audio" is specified it signals that the client can play externally hosted audio content, and
11220
+ marks the content as playable in the response. By default externally hosted audio content is marked
11221
+ as unplayable in the response. <br />
11222
+ Allowed values: "audio"</li>
11223
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
11224
+ If specified, this argument overrides the limit and offset argument values
11225
+ and paging is automatically used to retrieve all available items up to the
11226
+ maximum number specified. <br />
11227
+ Default: None (disabled)</li>
11228
+ </ul>
11229
+
11230
+ <h6 id="returns">Returns:</h6>
11231
+
11232
+ <blockquote>
11233
+ <p>A <code>SearchResponse</code> object that contains the search results.</p>
11234
+ </blockquote>
11235
+
11236
+ <h6 id="raises">Raises:</h6>
11237
+
11238
+ <ul>
11239
+ <li><strong>SpotifyWebApiError:</strong> If the Spotify Web API request was for a non-authorization service
11240
+ and the response contains error information.</li>
11241
+ <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
11242
+ </ul>
11243
+
11244
+ <p>Audiobooks are only available within the US, UK, Canada, Ireland, New Zealand and Australia markets.</p>
11245
+
11246
+ <p>Note that Spotify Web API automatically limits you to 1,000 max entries per type that can
11247
+ be returned with a search.</p>
11248
+
11249
+ <p><details>
11250
+ <summary>Sample Code - Manual Paging</summary></p>
11251
+
11252
+ <div class="pdoc-code codehilite">
11253
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11254
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11255
+
11256
+ <span class="k">try</span><span class="p">:</span>
11257
+
11258
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11259
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
11260
+ <span class="p">[</span>
11261
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
11262
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
11263
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
11264
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
11265
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
11266
+ <span class="p">]</span>
11267
+
11268
+ <span class="c1"># create new spotify client instance.</span>
11269
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11270
+
11271
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
11272
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
10078
11273
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
10079
11274
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
10080
11275
 
10081
- <span class="c1"># get Spotify catalog information about audiobooks that match a keyword string.</span>
10082
- <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Sword of Shannara&#39;</span>
10083
- <span class="n">criteriaType</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;audiobook&#39;</span>
10084
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for audiobooks - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10085
- <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
11276
+ <span class="c1"># get Spotify catalog information about Audiobooks that match a keyword string.</span>
11277
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Terry Brooks&#39;</span>
11278
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Audiobooks - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11279
+ <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchAudiobooks</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
10086
11280
 
10087
11281
  <span class="c1"># display search response details.</span>
10088
11282
  <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
@@ -10100,25 +11294,476 @@ entries that you can return with a search.</p>
10100
11294
  <span class="c1"># only display audiobook results for this example.</span>
10101
11295
  <span class="n">pageObj</span><span class="p">:</span><span class="n">AudiobookPageSimplified</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Audiobooks</span>
10102
11296
 
10103
- <span class="c1"># display paging details.</span>
10104
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
10105
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10106
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Audiobooks in this page of results:&#39;</span><span class="p">)</span>
11297
+ <span class="c1"># display paging details.</span>
11298
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11299
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Audiobooks in this page of results:&#39;</span><span class="p">)</span>
11300
+
11301
+ <span class="c1"># display audiobook details.</span>
11302
+ <span class="n">audiobook</span><span class="p">:</span><span class="n">AudiobookSimplified</span>
11303
+ <span class="k">for</span> <span class="n">audiobook</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11304
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11305
+
11306
+ <span class="c1"># for testing - don&#39;t return 1000 results! </span>
11307
+ <span class="c1"># comment the following 3 lines of code if you want ALL results.</span>
11308
+ <span class="k">if</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span> <span class="o">&gt;=</span> <span class="mi">75</span><span class="p">:</span>
11309
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">*** Stopping paging loop after 75 entries for testing.&#39;</span><span class="p">)</span>
11310
+ <span class="k">break</span>
11311
+
11312
+ <span class="c1"># anymore page results?</span>
11313
+ <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
11314
+ <span class="c1"># no - all pages were processed.</span>
11315
+ <span class="k">break</span>
11316
+ <span class="k">else</span><span class="p">:</span>
11317
+ <span class="c1"># yes - retrieve the next page of results.</span>
11318
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
11319
+ <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchAudiobooks</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
11320
+
11321
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
11322
+
11323
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
11324
+ </code></pre>
11325
+ </div>
11326
+
11327
+ <p></details>
11328
+ <details>
11329
+ <summary>Sample Code - Auto Paging</summary></p>
11330
+
11331
+ <div class="pdoc-code codehilite">
11332
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11333
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11334
+
11335
+ <span class="k">try</span><span class="p">:</span>
11336
+
11337
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11338
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
11339
+ <span class="p">[</span>
11340
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
11341
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
11342
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
11343
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
11344
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
11345
+ <span class="p">]</span>
11346
+
11347
+ <span class="c1"># create new spotify client instance.</span>
11348
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11349
+
11350
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
11351
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
11352
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
11353
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
11354
+
11355
+ <span class="c1"># get Spotify catalog information about Audiobooks that match a keyword string.</span>
11356
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Terry Brooks&#39;</span>
11357
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Audiobooks - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11358
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchAudiobooks</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">75</span><span class="p">)</span>
11359
+
11360
+ <span class="c1"># display paging details.</span>
11361
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11362
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Audiobooks</span><span class="p">))</span>
11363
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Audiobooks in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Audiobooks</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
11364
+
11365
+ <span class="c1"># display audiobook details.</span>
11366
+ <span class="n">audiobook</span><span class="p">:</span><span class="n">Audiobook</span>
11367
+ <span class="k">for</span> <span class="n">audiobook</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Audiobooks</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11368
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11369
+
11370
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
11371
+
11372
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
11373
+ </code></pre>
11374
+ </div>
11375
+
11376
+ <p></details></p>
11377
+ </div>
11378
+
11379
+
11380
+ </div>
11381
+ <div id="SpotifyClient.SearchEpisodes" class="classattr">
11382
+ <div class="attr function">
11383
+
11384
+ <span class="def">def</span>
11385
+ <span class="name">SearchEpisodes</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
11386
+
11387
+
11388
+ </div>
11389
+ <a class="headerlink" href="#SpotifyClient.SearchEpisodes"></a>
11390
+
11391
+ <div class="docstring"><p>Get Spotify catalog information about Episodes that match a keyword string. </p>
11392
+
11393
+ <h6 id="arguments">Arguments:</h6>
11394
+
11395
+ <ul>
11396
+ <li><strong>criteria (str):</strong> Your search query. <br />
11397
+ You can narrow down your search using field filters. <br />
11398
+ The available filters are album, artist, track, year, upc, tag:hipster, tag:new,
11399
+ isrc, and genre. Each field filter only applies to certain result types. <br />
11400
+ The artist and year filters can be used while searching albums, artists and tracks.
11401
+ You can filter on a single year or a range (e.g. 1955-1960). <br />
11402
+ The album filter can be used while searching albums and tracks. <br />
11403
+ The genre filter can be used while searching artists and tracks. <br />
11404
+ The isrc and track filters can be used while searching tracks. <br />
11405
+ The upc, tag:new and tag:hipster filters can only be used while searching albums.
11406
+ The tag:new filter will return albums released in the past two weeks and tag:hipster
11407
+ can be used to return only albums with the lowest 10% popularity.</li>
11408
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
11409
+ Default: 20, Range: 1 to 50. </li>
11410
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
11411
+ Use with limit to get the next set of items. <br />
11412
+ Default: 0 (the first item). Range: 0 to 1000. </li>
11413
+ <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
11414
+ is available in that market will be returned. If a valid user access token is specified
11415
+ in the request header, the country associated with the user account will take priority over
11416
+ this parameter. <br />
11417
+ Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
11418
+ Users can view the country that is associated with their account in the account settings. <br />
11419
+ Example: <code>ES</code></li>
11420
+ <li><strong>includeExternal (str):</strong> If "audio" is specified it signals that the client can play externally hosted audio content, and
11421
+ marks the content as playable in the response. By default externally hosted audio content is marked
11422
+ as unplayable in the response. <br />
11423
+ Allowed values: "audio"</li>
11424
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
11425
+ If specified, this argument overrides the limit and offset argument values
11426
+ and paging is automatically used to retrieve all available items up to the
11427
+ maximum number specified. <br />
11428
+ Default: None (disabled)</li>
11429
+ </ul>
11430
+
11431
+ <h6 id="returns">Returns:</h6>
11432
+
11433
+ <blockquote>
11434
+ <p>A <code>SearchResponse</code> object that contains the search results.</p>
11435
+ </blockquote>
11436
+
11437
+ <h6 id="raises">Raises:</h6>
11438
+
11439
+ <ul>
11440
+ <li><strong>SpotifyWebApiError:</strong> If the Spotify Web API request was for a non-authorization service
11441
+ and the response contains error information.</li>
11442
+ <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
11443
+ </ul>
11444
+
11445
+ <p>Note that Spotify Web API automatically limits you to 1,000 max entries per type that can
11446
+ be returned with a search.</p>
11447
+
11448
+ <p><details>
11449
+ <summary>Sample Code - Manual Paging</summary></p>
11450
+
11451
+ <div class="pdoc-code codehilite">
11452
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11453
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11454
+
11455
+ <span class="k">try</span><span class="p">:</span>
11456
+
11457
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11458
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
11459
+ <span class="p">[</span>
11460
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
11461
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
11462
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
11463
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
11464
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
11465
+ <span class="p">]</span>
11466
+
11467
+ <span class="c1"># create new spotify client instance.</span>
11468
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11469
+
11470
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
11471
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
11472
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
11473
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
11474
+
11475
+ <span class="c1"># get Spotify catalog information about Episodes that match a keyword string.</span>
11476
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;The LOL Podcast&#39;</span>
11477
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Episodes - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11478
+ <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchEpisodes</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
11479
+
11480
+ <span class="c1"># display search response details.</span>
11481
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
11482
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
11483
+
11484
+ <span class="c1"># save initial search response total, as search next page response total </span>
11485
+ <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
11486
+ <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
11487
+ <span class="c1"># than working off of a cached result set.</span>
11488
+ <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Episodes</span><span class="o">.</span><span class="n">Total</span>
11489
+
11490
+ <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
11491
+ <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
11492
+
11493
+ <span class="c1"># only display episode results for this example.</span>
11494
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">EpisodePageSimplified</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Episodes</span>
11495
+
11496
+ <span class="c1"># display paging details.</span>
11497
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11498
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Episodes in this page of results:&#39;</span><span class="p">)</span>
11499
+
11500
+ <span class="c1"># display episode details.</span>
11501
+ <span class="n">episode</span><span class="p">:</span><span class="n">EpisodeSimplified</span>
11502
+ <span class="k">for</span> <span class="n">episode</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11503
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">episode</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">episode</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11504
+
11505
+ <span class="c1"># for testing - don&#39;t return 1000 results! </span>
11506
+ <span class="c1"># comment the following 3 lines of code if you want ALL results.</span>
11507
+ <span class="k">if</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span> <span class="o">&gt;=</span> <span class="mi">75</span><span class="p">:</span>
11508
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">*** Stopping paging loop after 75 entries for testing.&#39;</span><span class="p">)</span>
11509
+ <span class="k">break</span>
11510
+
11511
+ <span class="c1"># anymore page results?</span>
11512
+ <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
11513
+ <span class="c1"># no - all pages were processed.</span>
11514
+ <span class="k">break</span>
11515
+ <span class="k">else</span><span class="p">:</span>
11516
+ <span class="c1"># yes - retrieve the next page of results.</span>
11517
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
11518
+ <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchEpisodes</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
11519
+
11520
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
11521
+
11522
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
11523
+ </code></pre>
11524
+ </div>
11525
+
11526
+ <p></details>
11527
+ <details>
11528
+ <summary>Sample Code - Auto Paging</summary></p>
11529
+
11530
+ <div class="pdoc-code codehilite">
11531
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11532
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11533
+
11534
+ <span class="k">try</span><span class="p">:</span>
11535
+
11536
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11537
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
11538
+ <span class="p">[</span>
11539
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
11540
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
11541
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
11542
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
11543
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
11544
+ <span class="p">]</span>
11545
+
11546
+ <span class="c1"># create new spotify client instance.</span>
11547
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11548
+
11549
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
11550
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
11551
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
11552
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
11553
+
11554
+ <span class="c1"># get Spotify catalog information about Episodes that match a keyword string.</span>
11555
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;The LOL Podcast&#39;</span>
11556
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Episodes - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11557
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchEpisodes</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">75</span><span class="p">)</span>
11558
+
11559
+ <span class="c1"># display paging details.</span>
11560
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11561
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Episodes</span><span class="p">))</span>
11562
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Episodes in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Episodes</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
11563
+
11564
+ <span class="c1"># display episode details.</span>
11565
+ <span class="n">episode</span><span class="p">:</span><span class="n">EpisodeSimplified</span>
11566
+ <span class="k">for</span> <span class="n">episode</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Episodes</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11567
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">episode</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">episode</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11568
+
11569
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
11570
+
11571
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
11572
+ </code></pre>
11573
+ </div>
11574
+
11575
+ <p></details></p>
11576
+ </div>
11577
+
11578
+
11579
+ </div>
11580
+ <div id="SpotifyClient.SearchPlaylists" class="classattr">
11581
+ <div class="attr function">
11582
+
11583
+ <span class="def">def</span>
11584
+ <span class="name">SearchPlaylists</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
11585
+
11586
+
11587
+ </div>
11588
+ <a class="headerlink" href="#SpotifyClient.SearchPlaylists"></a>
11589
+
11590
+ <div class="docstring"><p>Get Spotify catalog information about Playlists that match a keyword string. </p>
11591
+
11592
+ <h6 id="arguments">Arguments:</h6>
11593
+
11594
+ <ul>
11595
+ <li><strong>criteria (str):</strong> Your search query. <br />
11596
+ You can narrow down your search using field filters. <br />
11597
+ The available filters are album, artist, track, year, upc, tag:hipster, tag:new,
11598
+ isrc, and genre. Each field filter only applies to certain result types. <br />
11599
+ The artist and year filters can be used while searching albums, artists and tracks.
11600
+ You can filter on a single year or a range (e.g. 1955-1960). <br />
11601
+ The album filter can be used while searching albums and tracks. <br />
11602
+ The genre filter can be used while searching artists and tracks. <br />
11603
+ The isrc and track filters can be used while searching tracks. <br />
11604
+ The upc, tag:new and tag:hipster filters can only be used while searching albums.
11605
+ The tag:new filter will return albums released in the past two weeks and tag:hipster
11606
+ can be used to return only albums with the lowest 10% popularity.</li>
11607
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
11608
+ Default: 20, Range: 1 to 50. </li>
11609
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
11610
+ Use with limit to get the next set of items. <br />
11611
+ Default: 0 (the first item). Range: 0 to 1000. </li>
11612
+ <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
11613
+ is available in that market will be returned. If a valid user access token is specified
11614
+ in the request header, the country associated with the user account will take priority over
11615
+ this parameter. <br />
11616
+ Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
11617
+ Users can view the country that is associated with their account in the account settings. <br />
11618
+ Example: <code>ES</code></li>
11619
+ <li><strong>includeExternal (str):</strong> If "audio" is specified it signals that the client can play externally hosted audio content, and
11620
+ marks the content as playable in the response. By default externally hosted audio content is marked
11621
+ as unplayable in the response. <br />
11622
+ Allowed values: "audio"</li>
11623
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
11624
+ If specified, this argument overrides the limit and offset argument values
11625
+ and paging is automatically used to retrieve all available items up to the
11626
+ maximum number specified. <br />
11627
+ Default: None (disabled)</li>
11628
+ </ul>
11629
+
11630
+ <h6 id="returns">Returns:</h6>
11631
+
11632
+ <blockquote>
11633
+ <p>A <code>SearchResponse</code> object that contains the search results.</p>
11634
+ </blockquote>
11635
+
11636
+ <h6 id="raises">Raises:</h6>
11637
+
11638
+ <ul>
11639
+ <li><strong>SpotifyWebApiError:</strong> If the Spotify Web API request was for a non-authorization service
11640
+ and the response contains error information.</li>
11641
+ <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
11642
+ </ul>
11643
+
11644
+ <p>Note that Spotify Web API automatically limits you to 1,000 max entries per type that can
11645
+ be returned with a search.</p>
11646
+
11647
+ <p><details>
11648
+ <summary>Sample Code - Manual Paging</summary></p>
11649
+
11650
+ <div class="pdoc-code codehilite">
11651
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11652
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11653
+
11654
+ <span class="k">try</span><span class="p">:</span>
11655
+
11656
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11657
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
11658
+ <span class="p">[</span>
11659
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
11660
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
11661
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
11662
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
11663
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
11664
+ <span class="p">]</span>
11665
+
11666
+ <span class="c1"># create new spotify client instance.</span>
11667
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
11668
+
11669
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
11670
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
11671
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
11672
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
11673
+
11674
+ <span class="c1"># get Spotify catalog information about Playlists that match a keyword string.</span>
11675
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;MercyMe&#39;</span>
11676
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Playlists - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11677
+ <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchPlaylists</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
11678
+
11679
+ <span class="c1"># display search response details.</span>
11680
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
11681
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
11682
+
11683
+ <span class="c1"># save initial search response total, as search next page response total </span>
11684
+ <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
11685
+ <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
11686
+ <span class="c1"># than working off of a cached result set.</span>
11687
+ <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Playlists</span><span class="o">.</span><span class="n">Total</span>
11688
+
11689
+ <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
11690
+ <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
11691
+
11692
+ <span class="c1"># only display playlist results for this example.</span>
11693
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">PlaylistPageSimplified</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Playlists</span>
11694
+
11695
+ <span class="c1"># display paging details.</span>
11696
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11697
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Playlists in this page of results:&#39;</span><span class="p">)</span>
11698
+
11699
+ <span class="c1"># display playlist details.</span>
11700
+ <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
11701
+ <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11702
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11703
+
11704
+ <span class="c1"># for testing - don&#39;t return 1000 results! </span>
11705
+ <span class="c1"># comment the following 3 lines of code if you want ALL results.</span>
11706
+ <span class="k">if</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span> <span class="o">&gt;=</span> <span class="mi">75</span><span class="p">:</span>
11707
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">*** Stopping paging loop after 75 entries for testing.&#39;</span><span class="p">)</span>
11708
+ <span class="k">break</span>
11709
+
11710
+ <span class="c1"># anymore page results?</span>
11711
+ <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
11712
+ <span class="c1"># no - all pages were processed.</span>
11713
+ <span class="k">break</span>
11714
+ <span class="k">else</span><span class="p">:</span>
11715
+ <span class="c1"># yes - retrieve the next page of results.</span>
11716
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
11717
+ <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchPlaylists</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
11718
+
11719
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
11720
+
11721
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
11722
+ </code></pre>
11723
+ </div>
11724
+
11725
+ <p></details>
11726
+ <details>
11727
+ <summary>Sample Code - Auto Paging</summary></p>
11728
+
11729
+ <div class="pdoc-code codehilite">
11730
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
11731
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
11732
+
11733
+ <span class="k">try</span><span class="p">:</span>
11734
+
11735
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
11736
+ <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
11737
+ <span class="p">[</span>
11738
+ <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
11739
+ <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
11740
+ <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
11741
+ <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
11742
+ <span class="s1">&#39;playlist-modify-public&#39;</span>
11743
+ <span class="p">]</span>
11744
+
11745
+ <span class="c1"># create new spotify client instance.</span>
11746
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
10107
11747
 
10108
- <span class="c1"># display audiobook details.</span>
10109
- <span class="n">audiobook</span><span class="p">:</span><span class="n">AudiobookSimplified</span>
10110
- <span class="k">for</span> <span class="n">audiobook</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11748
+ <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
11749
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenAuthorizationCodePKCE</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">SPOTIFY_SCOPES</span><span class="p">)</span>
11750
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
11751
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
10111
11752
 
10112
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">audiobook</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11753
+ <span class="c1"># get Spotify catalog information about Playlists that match a keyword string.</span>
11754
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;MercyMe&#39;</span>
11755
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Playlists - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11756
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchPlaylists</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">75</span><span class="p">)</span>
10113
11757
 
10114
- <span class="c1"># anymore page results?</span>
10115
- <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
10116
- <span class="c1"># no - all pages were processed.</span>
10117
- <span class="k">break</span>
10118
- <span class="k">else</span><span class="p">:</span>
10119
- <span class="c1"># yes - retrieve the next page of results.</span>
10120
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
10121
- <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
11758
+ <span class="c1"># display paging details.</span>
11759
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
11760
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Playlists</span><span class="p">))</span>
11761
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Playlists in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Playlists</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
11762
+
11763
+ <span class="c1"># display playlist details.</span>
11764
+ <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
11765
+ <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Playlists</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11766
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10122
11767
 
10123
11768
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
10124
11769
 
@@ -10126,10 +11771,9 @@ entries that you can return with a search.</p>
10126
11771
  </code></pre>
10127
11772
  </div>
10128
11773
 
10129
- <p></details></p>
10130
-
10131
- <p><details>
10132
- <summary>Sample Code - Search Episodes</summary></p>
11774
+ <p></details>
11775
+ <details>
11776
+ <summary>Sample Code - Spotify Generated, Daily Mix</summary></p>
10133
11777
 
10134
11778
  <div class="pdoc-code codehilite">
10135
11779
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10155,47 +11799,23 @@ entries that you can return with a search.</p>
10155
11799
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
10156
11800
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
10157
11801
 
10158
- <span class="c1"># get Spotify catalog information about episodes that match a keyword string.</span>
10159
- <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;The LOL Podcast&#39;</span>
10160
- <span class="n">criteriaType</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;episode&#39;</span>
10161
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for episodes - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10162
- <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
10163
-
10164
- <span class="c1"># display search response details.</span>
10165
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
10166
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10167
-
10168
- <span class="c1"># save initial search response total, as search next page response total </span>
10169
- <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10170
- <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10171
- <span class="c1"># than working off of a cached result set.</span>
10172
- <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Episodes</span><span class="o">.</span><span class="n">Total</span>
10173
-
10174
- <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10175
- <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
10176
-
10177
- <span class="c1"># only display episode results for this example.</span>
10178
- <span class="n">pageObj</span><span class="p">:</span><span class="n">EpisodePageSimplified</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Episodes</span>
10179
-
10180
- <span class="c1"># display paging details.</span>
10181
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
10182
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10183
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Episodes in this page of results:&#39;</span><span class="p">)</span>
11802
+ <span class="c1"># get Spotify catalog information about Playlists that match a keyword string.</span>
11803
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Daily Mix&#39;</span>
11804
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Playlists - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11805
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchPlaylists</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">200</span><span class="p">)</span>
10184
11806
 
10185
- <span class="c1"># display episode details.</span>
10186
- <span class="n">episode</span><span class="p">:</span><span class="n">EpisodeSimplified</span>
10187
- <span class="k">for</span> <span class="n">episode</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11807
+ <span class="c1"># get playlists owned by spotify (e.g. content generated for you).</span>
11808
+ <span class="n">spotifyOwnedPlaylists</span><span class="p">:</span><span class="nb">list</span><span class="p">[</span><span class="n">PlaylistSimplified</span><span class="p">]</span> <span class="o">=</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">GetSpotifyOwnedPlaylists</span><span class="p">()</span>
10188
11809
 
10189
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">episode</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">episode</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11810
+ <span class="c1"># sort them by name.</span>
11811
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">spotifyOwnedPlaylists</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
11812
+ <span class="n">spotifyOwnedPlaylists</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">Name</span> <span class="ow">or</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
10190
11813
 
10191
- <span class="c1"># anymore page results?</span>
10192
- <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
10193
- <span class="c1"># no - all pages were processed.</span>
10194
- <span class="k">break</span>
10195
- <span class="k">else</span><span class="p">:</span>
10196
- <span class="c1"># yes - retrieve the next page of results.</span>
10197
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
10198
- <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
11814
+ <span class="c1"># display playlist details.</span>
11815
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Playlists generated for you by Spotify (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">spotifyOwnedPlaylists</span><span class="p">))</span>
11816
+ <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
11817
+ <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">spotifyOwnedPlaylists</span><span class="p">:</span>
11818
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10199
11819
 
10200
11820
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
10201
11821
 
@@ -10204,9 +11824,79 @@ entries that you can return with a search.</p>
10204
11824
  </div>
10205
11825
 
10206
11826
  <p></details></p>
11827
+ </div>
11828
+
11829
+
11830
+ </div>
11831
+ <div id="SpotifyClient.SearchShows" class="classattr">
11832
+ <div class="attr function">
11833
+
11834
+ <span class="def">def</span>
11835
+ <span class="name">SearchShows</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
11836
+
11837
+
11838
+ </div>
11839
+ <a class="headerlink" href="#SpotifyClient.SearchShows"></a>
11840
+
11841
+ <div class="docstring"><p>Get Spotify catalog information about Shows that match a keyword string. </p>
11842
+
11843
+ <h6 id="arguments">Arguments:</h6>
11844
+
11845
+ <ul>
11846
+ <li><strong>criteria (str):</strong> Your search query. <br />
11847
+ You can narrow down your search using field filters. <br />
11848
+ The available filters are album, artist, track, year, upc, tag:hipster, tag:new,
11849
+ isrc, and genre. Each field filter only applies to certain result types. <br />
11850
+ The artist and year filters can be used while searching albums, artists and tracks.
11851
+ You can filter on a single year or a range (e.g. 1955-1960). <br />
11852
+ The album filter can be used while searching albums and tracks. <br />
11853
+ The genre filter can be used while searching artists and tracks. <br />
11854
+ The isrc and track filters can be used while searching tracks. <br />
11855
+ The upc, tag:new and tag:hipster filters can only be used while searching albums.
11856
+ The tag:new filter will return albums released in the past two weeks and tag:hipster
11857
+ can be used to return only albums with the lowest 10% popularity.</li>
11858
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
11859
+ Default: 20, Range: 1 to 50. </li>
11860
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
11861
+ Use with limit to get the next set of items. <br />
11862
+ Default: 0 (the first item). Range: 0 to 1000. </li>
11863
+ <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
11864
+ is available in that market will be returned. If a valid user access token is specified
11865
+ in the request header, the country associated with the user account will take priority over
11866
+ this parameter. <br />
11867
+ Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
11868
+ Users can view the country that is associated with their account in the account settings. <br />
11869
+ Example: <code>ES</code></li>
11870
+ <li><strong>includeExternal (str):</strong> If "audio" is specified it signals that the client can play externally hosted audio content, and
11871
+ marks the content as playable in the response. By default externally hosted audio content is marked
11872
+ as unplayable in the response. <br />
11873
+ Allowed values: "audio"</li>
11874
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
11875
+ If specified, this argument overrides the limit and offset argument values
11876
+ and paging is automatically used to retrieve all available items up to the
11877
+ maximum number specified. <br />
11878
+ Default: None (disabled)</li>
11879
+ </ul>
11880
+
11881
+ <h6 id="returns">Returns:</h6>
11882
+
11883
+ <blockquote>
11884
+ <p>A <code>SearchResponse</code> object that contains the search results.</p>
11885
+ </blockquote>
11886
+
11887
+ <h6 id="raises">Raises:</h6>
11888
+
11889
+ <ul>
11890
+ <li><strong>SpotifyWebApiError:</strong> If the Spotify Web API request was for a non-authorization service
11891
+ and the response contains error information.</li>
11892
+ <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
11893
+ </ul>
11894
+
11895
+ <p>Note that Spotify Web API automatically limits you to 1,000 max entries per type that can
11896
+ be returned with a search.</p>
10207
11897
 
10208
11898
  <p><details>
10209
- <summary>Sample Code - Search Playlists</summary></p>
11899
+ <summary>Sample Code - Manual Paging</summary></p>
10210
11900
 
10211
11901
  <div class="pdoc-code codehilite">
10212
11902
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10232,11 +11922,12 @@ entries that you can return with a search.</p>
10232
11922
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
10233
11923
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
10234
11924
 
10235
- <span class="c1"># get Spotify catalog information about playlists that match a keyword string.</span>
10236
- <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Taylor Sheridan&#39;</span>
10237
- <span class="n">criteriaType</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;playlist&#39;</span>
10238
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for playlists - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10239
- <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
11925
+ <span class="c1"># get Spotify catalog information about Shows that match a keyword string.</span>
11926
+ <span class="c1"># note - use an Authorization type of token or the `market` argument for this</span>
11927
+ <span class="c1"># method, otherwise the item result are all null.</span>
11928
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Joe Rogan&#39;</span>
11929
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Shows - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
11930
+ <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchShows</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
10240
11931
 
10241
11932
  <span class="c1"># display search response details.</span>
10242
11933
  <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
@@ -10246,24 +11937,28 @@ entries that you can return with a search.</p>
10246
11937
  <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10247
11938
  <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10248
11939
  <span class="c1"># than working off of a cached result set.</span>
10249
- <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Playlists</span><span class="o">.</span><span class="n">Total</span>
11940
+ <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Shows</span><span class="o">.</span><span class="n">Total</span>
10250
11941
 
10251
11942
  <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10252
11943
  <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
10253
11944
 
10254
- <span class="c1"># only display playlist results for this example.</span>
10255
- <span class="n">pageObj</span><span class="p">:</span><span class="n">PlaylistPageSimplified</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Playlists</span>
11945
+ <span class="c1"># only display show results for this example.</span>
11946
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">ShowPageSimplified</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Shows</span>
10256
11947
 
10257
11948
  <span class="c1"># display paging details.</span>
10258
11949
  <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
10259
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10260
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Playlists in this page of results:&#39;</span><span class="p">)</span>
11950
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Shows in this page of results:&#39;</span><span class="p">)</span>
10261
11951
 
10262
- <span class="c1"># display playlist details.</span>
10263
- <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
10264
- <span class="k">for</span> <span class="n">playlist</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11952
+ <span class="c1"># display show details.</span>
11953
+ <span class="n">show</span><span class="p">:</span><span class="n">ShowSimplified</span>
11954
+ <span class="k">for</span> <span class="n">show</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
11955
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">show</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">show</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10265
11956
 
10266
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">playlist</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
11957
+ <span class="c1"># for testing - don&#39;t return 1000 results! </span>
11958
+ <span class="c1"># comment the following 3 lines of code if you want ALL results.</span>
11959
+ <span class="k">if</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span> <span class="o">&gt;=</span> <span class="mi">75</span><span class="p">:</span>
11960
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">*** Stopping paging loop after 75 entries for testing.&#39;</span><span class="p">)</span>
11961
+ <span class="k">break</span>
10267
11962
 
10268
11963
  <span class="c1"># anymore page results?</span>
10269
11964
  <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
@@ -10272,7 +11967,7 @@ entries that you can return with a search.</p>
10272
11967
  <span class="k">else</span><span class="p">:</span>
10273
11968
  <span class="c1"># yes - retrieve the next page of results.</span>
10274
11969
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
10275
- <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
11970
+ <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchShows</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
10276
11971
 
10277
11972
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
10278
11973
 
@@ -10280,10 +11975,9 @@ entries that you can return with a search.</p>
10280
11975
  </code></pre>
10281
11976
  </div>
10282
11977
 
10283
- <p></details></p>
10284
-
10285
- <p><details>
10286
- <summary>Sample Code - Search Shows</summary></p>
11978
+ <p></details>
11979
+ <details>
11980
+ <summary>Sample Code - Auto Paging</summary></p>
10287
11981
 
10288
11982
  <div class="pdoc-code codehilite">
10289
11983
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10309,60 +12003,103 @@ entries that you can return with a search.</p>
10309
12003
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
10310
12004
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
10311
12005
 
10312
- <span class="c1"># get Spotify catalog information about shows that match a keyword string.</span>
10313
- <span class="c1"># note - it seems that you have to use an Authorization type of token in </span>
10314
- <span class="c1"># order to return show objects in the results (otherwise they are all null).</span>
12006
+ <span class="c1"># get Spotify catalog information about Shows that match a keyword string.</span>
12007
+ <span class="c1"># note - use an Authorization type of token or the `market` argument for this</span>
12008
+ <span class="c1"># method, otherwise the item result are all null.</span>
10315
12009
  <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Joe Rogan&#39;</span>
10316
- <span class="n">criteriaType</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;show&#39;</span>
10317
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for shows - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10318
- <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
12010
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Shows - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
12011
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchShows</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">75</span><span class="p">)</span>
10319
12012
 
10320
- <span class="c1"># display search response details.</span>
10321
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
10322
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
12013
+ <span class="c1"># display paging details.</span>
12014
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
12015
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Shows</span><span class="p">))</span>
12016
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Shows in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Shows</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
10323
12017
 
10324
- <span class="c1"># save initial search response total, as search next page response total </span>
10325
- <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10326
- <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10327
- <span class="c1"># than working off of a cached result set.</span>
10328
- <span class="n">pageObjInitialTotal</span><span class="p">:</span><span class="nb">int</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Shows</span><span class="o">.</span><span class="n">Total</span>
12018
+ <span class="c1"># display show details.</span>
12019
+ <span class="n">show</span><span class="p">:</span><span class="n">ShowSimplified</span>
12020
+ <span class="k">for</span> <span class="n">show</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Shows</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
12021
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">show</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">show</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10329
12022
 
10330
- <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10331
- <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
12023
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
10332
12024
 
10333
- <span class="c1"># only display show results for this example.</span>
10334
- <span class="n">pageObj</span><span class="p">:</span><span class="n">ShowPageSimplified</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Shows</span>
12025
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
12026
+ </code></pre>
12027
+ </div>
10335
12028
 
10336
- <span class="c1"># display paging details.</span>
10337
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
10338
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10339
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Shows in this page of results:&#39;</span><span class="p">)</span>
12029
+ <p></details></p>
12030
+ </div>
10340
12031
 
10341
- <span class="c1"># display show details.</span>
10342
- <span class="n">show</span><span class="p">:</span><span class="n">ShowSimplified</span>
10343
- <span class="k">for</span> <span class="n">show</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
10344
12032
 
10345
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">show</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">show</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
12033
+ </div>
12034
+ <div id="SpotifyClient.SearchTracks" class="classattr">
12035
+ <div class="attr function">
12036
+
12037
+ <span class="def">def</span>
12038
+ <span class="name">SearchTracks</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">criteria</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span>,</span><span class="param"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>,</span><span class="param"> <span class="n">market</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">includeExternal</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">limitTotal</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="models/searchresponse.html#SearchResponse">spotifywebapipython.models.searchresponse.SearchResponse</a></span>:</span></span>
10346
12039
 
10347
- <span class="c1"># anymore page results?</span>
10348
- <span class="k">if</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Next</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">((</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">pageObjInitialTotal</span><span class="p">):</span>
10349
- <span class="c1"># no - all pages were processed.</span>
10350
- <span class="k">break</span>
10351
- <span class="k">else</span><span class="p">:</span>
10352
- <span class="c1"># yes - retrieve the next page of results.</span>
10353
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
10354
- <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
12040
+
12041
+ </div>
12042
+ <a class="headerlink" href="#SpotifyClient.SearchTracks"></a>
12043
+
12044
+ <div class="docstring"><p>Get Spotify catalog information about Tracks that match a keyword string. </p>
10355
12045
 
10356
- <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
12046
+ <h6 id="arguments">Arguments:</h6>
10357
12047
 
10358
- <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
10359
- </code></pre>
10360
- </div>
12048
+ <ul>
12049
+ <li><strong>criteria (str):</strong> Your search query. <br />
12050
+ You can narrow down your search using field filters. <br />
12051
+ The available filters are album, artist, track, year, upc, tag:hipster, tag:new,
12052
+ isrc, and genre. Each field filter only applies to certain result types. <br />
12053
+ The artist and year filters can be used while searching albums, artists and tracks.
12054
+ You can filter on a single year or a range (e.g. 1955-1960). <br />
12055
+ The album filter can be used while searching albums and tracks. <br />
12056
+ The genre filter can be used while searching artists and tracks. <br />
12057
+ The isrc and track filters can be used while searching tracks. <br />
12058
+ The upc, tag:new and tag:hipster filters can only be used while searching albums.
12059
+ The tag:new filter will return albums released in the past two weeks and tag:hipster
12060
+ can be used to return only albums with the lowest 10% popularity.</li>
12061
+ <li><strong>limit (int):</strong> The maximum number of items to return in a page of items. <br />
12062
+ Default: 20, Range: 1 to 50. </li>
12063
+ <li><strong>offset (int):</strong> The page index offset of the first item to return. <br />
12064
+ Use with limit to get the next set of items. <br />
12065
+ Default: 0 (the first item). Range: 0 to 1000. </li>
12066
+ <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
12067
+ is available in that market will be returned. If a valid user access token is specified
12068
+ in the request header, the country associated with the user account will take priority over
12069
+ this parameter. <br />
12070
+ Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
12071
+ Users can view the country that is associated with their account in the account settings. <br />
12072
+ Example: <code>ES</code></li>
12073
+ <li><strong>includeExternal (str):</strong> If "audio" is specified it signals that the client can play externally hosted audio content, and
12074
+ marks the content as playable in the response. By default externally hosted audio content is marked
12075
+ as unplayable in the response. <br />
12076
+ Allowed values: "audio"</li>
12077
+ <li><strong>limitTotal (int):</strong> The maximum number of items to return for the request. <br />
12078
+ If specified, this argument overrides the limit and offset argument values
12079
+ and paging is automatically used to retrieve all available items up to the
12080
+ maximum number specified. <br />
12081
+ Default: None (disabled)</li>
12082
+ </ul>
10361
12083
 
10362
- <p></details></p>
12084
+ <h6 id="returns">Returns:</h6>
12085
+
12086
+ <blockquote>
12087
+ <p>A <code>SearchResponse</code> object that contains the search results.</p>
12088
+ </blockquote>
12089
+
12090
+ <h6 id="raises">Raises:</h6>
12091
+
12092
+ <ul>
12093
+ <li><strong>SpotifyWebApiError:</strong> If the Spotify Web API request was for a non-authorization service
12094
+ and the response contains error information.</li>
12095
+ <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
12096
+ </ul>
12097
+
12098
+ <p>Note that Spotify Web API automatically limits you to 1,000 max entries per type that can
12099
+ be returned with a search.</p>
10363
12100
 
10364
12101
  <p><details>
10365
- <summary>Sample Code - Search Tracks</summary></p>
12102
+ <summary>Sample Code - Manual Paging</summary></p>
10366
12103
 
10367
12104
  <div class="pdoc-code codehilite">
10368
12105
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10381,11 +12118,10 @@ entries that you can return with a search.</p>
10381
12118
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
10382
12119
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
10383
12120
 
10384
- <span class="c1"># get Spotify catalog information about tracks that match a keyword string.</span>
12121
+ <span class="c1"># get Spotify catalog information about Tracks that match a keyword string.</span>
10385
12122
  <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Flawless&#39;</span>
10386
- <span class="n">criteriaType</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;track&#39;</span>
10387
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for tracks - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
10388
- <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
12123
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Tracks - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
12124
+ <span class="n">searchResponse</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchTracks</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
10389
12125
 
10390
12126
  <span class="c1"># display search response details.</span>
10391
12127
  <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">searchResponse</span><span class="p">))</span>
@@ -10403,6 +12139,11 @@ entries that you can return with a search.</p>
10403
12139
  <span class="c1"># only display track results for this example.</span>
10404
12140
  <span class="n">pageObj</span><span class="p">:</span><span class="n">TrackPage</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="o">.</span><span class="n">Tracks</span>
10405
12141
 
12142
+ <span class="c1"># for testing - don&#39;t return 1000 results! </span>
12143
+ <span class="c1"># comment the following 2 lines of code if you want ALL results.</span>
12144
+ <span class="k">if</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span> <span class="o">&gt;</span> <span class="mi">75</span><span class="p">:</span>
12145
+ <span class="k">break</span>
12146
+
10406
12147
  <span class="c1"># display paging details.</span>
10407
12148
  <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
10408
12149
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
@@ -10411,7 +12152,6 @@ entries that you can return with a search.</p>
10411
12152
  <span class="c1"># display track details.</span>
10412
12153
  <span class="n">track</span><span class="p">:</span><span class="n">Track</span>
10413
12154
  <span class="k">for</span> <span class="n">track</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
10414
-
10415
12155
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">track</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">track</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10416
12156
 
10417
12157
  <span class="c1"># anymore page results?</span>
@@ -10421,7 +12161,49 @@ entries that you can return with a search.</p>
10421
12161
  <span class="k">else</span><span class="p">:</span>
10422
12162
  <span class="c1"># yes - retrieve the next page of results.</span>
10423
12163
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Getting next page of </span><span class="si">%d</span><span class="s1"> items ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">))</span>
10424
- <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">Search</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">criteriaType</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
12164
+ <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchTracks</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Offset</span> <span class="o">+</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Limit</span><span class="p">)</span>
12165
+
12166
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
12167
+
12168
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;** Exception: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ex</span><span class="p">))</span>
12169
+ </code></pre>
12170
+ </div>
12171
+
12172
+ <p></details>
12173
+ <details>
12174
+ <summary>Sample Code - Auto Paging</summary></p>
12175
+
12176
+ <div class="pdoc-code codehilite">
12177
+ <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
12178
+ <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
12179
+
12180
+ <span class="k">try</span><span class="p">:</span>
12181
+
12182
+ <span class="n">CLIENT_ID</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_id&#39;</span>
12183
+ <span class="n">CLIENT_SECRET</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;your_client_secret&#39;</span>
12184
+
12185
+ <span class="c1"># create new spotify client instance.</span>
12186
+ <span class="n">spotify</span><span class="p">:</span><span class="n">SpotifyClient</span> <span class="o">=</span> <span class="n">SpotifyClient</span><span class="p">()</span>
12187
+
12188
+ <span class="c1"># generate a spotify client credentials access token (no scope, public data use only).</span>
12189
+ <span class="n">spotify</span><span class="o">.</span><span class="n">SetAuthTokenClientCredentials</span><span class="p">(</span><span class="n">CLIENT_ID</span><span class="p">,</span> <span class="n">CLIENT_SECRET</span><span class="p">)</span>
12190
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Auth Token:</span><span class="se">\n</span><span class="s1"> Type=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> Scope=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">AuthorizationType</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">AuthToken</span><span class="o">.</span><span class="n">Scope</span><span class="p">)))</span>
12191
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">User:</span><span class="se">\n</span><span class="s1"> DisplayName=&quot;</span><span class="si">%s</span><span class="s1">&quot;</span><span class="se">\n</span><span class="s1"> EMail=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">DisplayName</span><span class="p">,</span> <span class="n">spotify</span><span class="o">.</span><span class="n">UserProfile</span><span class="o">.</span><span class="n">EMail</span><span class="p">))</span>
12192
+
12193
+ <span class="c1"># get Spotify catalog information about Tracks that match a keyword string.</span>
12194
+ <span class="n">criteria</span><span class="p">:</span><span class="nb">str</span> <span class="o">=</span> <span class="s1">&#39;Parliament Funkadelic&#39;</span>
12195
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Searching for Tracks - criteria: &quot;</span><span class="si">%s</span><span class="s1">&quot; ...</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">criteria</span><span class="p">)</span>
12196
+ <span class="n">pageObj</span><span class="p">:</span><span class="n">SearchResponse</span> <span class="o">=</span> <span class="n">spotify</span><span class="o">.</span><span class="n">SearchTracks</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">limitTotal</span><span class="o">=</span><span class="mi">75</span><span class="p">)</span>
12197
+
12198
+ <span class="c1"># display paging details.</span>
12199
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="p">))</span>
12200
+ <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pageObj</span><span class="o">.</span><span class="n">Tracks</span><span class="p">))</span>
12201
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">Tracks in this page of results (</span><span class="si">%d</span><span class="s1"> items):&#39;</span> <span class="o">%</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Tracks</span><span class="o">.</span><span class="n">ItemsCount</span><span class="p">)</span>
12202
+
12203
+ <span class="c1"># display track details.</span>
12204
+ <span class="n">track</span><span class="p">:</span><span class="n">Track</span>
12205
+ <span class="k">for</span> <span class="n">track</span> <span class="ow">in</span> <span class="n">pageObj</span><span class="o">.</span><span class="n">Tracks</span><span class="o">.</span><span class="n">Items</span><span class="p">:</span>
12206
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;- &quot;</span><span class="si">{name}</span><span class="s1">&quot; (</span><span class="si">{uri}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">track</span><span class="o">.</span><span class="n">Name</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="n">track</span><span class="o">.</span><span class="n">Uri</span><span class="p">))</span>
10425
12207
 
10426
12208
  <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
10427
12209