spotifywebapiPython 1.0.27__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.27.dist-info → spotifywebapiPython-1.0.28.dist-info}/METADATA +1 -1
  2. {spotifywebapiPython-1.0.27.dist-info → spotifywebapiPython-1.0.28.dist-info}/RECORD +24 -24
  3. spotifywebapipython/const.py +26 -2
  4. spotifywebapipython/docs/__init__.html +20 -2
  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 +2105 -326
  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 +2918 -335
  22. {spotifywebapiPython-1.0.27.dist-info → spotifywebapiPython-1.0.28.dist-info}/LICENSE +0 -0
  23. {spotifywebapiPython-1.0.27.dist-info → spotifywebapiPython-1.0.28.dist-info}/WHEEL +0 -0
  24. {spotifywebapiPython-1.0.27.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.27" -->
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.27</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
 
@@ -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="n"><a href="models/albumpagesimplified.html#AlbumPageSimplified">spotifywebapipython.models.albumpagesimplified.AlbumPageSimplified</a></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>
@@ -2750,7 +2906,7 @@ Example: <code>6APm8EjxOHSYM5B4i3vT3q</code></li>
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,6 +2917,11 @@ 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>
@@ -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
 
@@ -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>
@@ -3007,8 +3210,13 @@ and the response contains error information.</li>
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
3212
  Example: <code>6APm8EjxOHSYM5B4i3vT3q</code> </li>
3010
- <li><strong>limit (int):</strong> The maximum number of items to return. <br />
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>
@@ -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
 
@@ -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">
3817
-
3818
- <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>
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">
4215
+
4216
+ <span class="def">def</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 />
@@ -5692,7 +6240,7 @@ and the response contains error information.</li>
5692
6240
  <div class="attr function">
5693
6241
 
5694
6242
  <span class="def">def</span>
5695
- <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>
5696
6244
 
5697
6245
 
5698
6246
  </div>
@@ -5707,9 +6255,9 @@ and the response contains error information.</li>
5707
6255
  <ul>
5708
6256
  <li><strong>playlistId (str):</strong> The Spotify ID of the playlist. <br />
5709
6257
  Example: <code>5v5ETK9WFXAnGQ3MRubKuE</code></li>
5710
- <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 />
5711
6259
  Default: 50, Range: 1 to 50. </li>
5712
- <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 />
5713
6261
  Use with limit to get the next set of items. <br />
5714
6262
  Default: 0 (the first item). </li>
5715
6263
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
@@ -5737,6 +6285,11 @@ Valid types are: track and episode. <br />
5737
6285
  Note: This parameter was introduced to allow existing clients to maintain their current behaviour
5738
6286
  and might be deprecated in the future. In addition to providing this parameter, make sure that your
5739
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>
5740
6293
  </ul>
5741
6294
 
5742
6295
  <h6 id="returns">Returns:</h6>
@@ -5754,7 +6307,7 @@ and the response contains error information.</li>
5754
6307
  </ul>
5755
6308
 
5756
6309
  <p><details>
5757
- <summary>Sample Code</summary></p>
6310
+ <summary>Sample Code - Manual Paging</summary></p>
5758
6311
 
5759
6312
  <div class="pdoc-code codehilite">
5760
6313
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -5815,6 +6368,49 @@ and the response contains error information.</li>
5815
6368
  </code></pre>
5816
6369
  </div>
5817
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
+
5818
6414
  <p></details></p>
5819
6415
  </div>
5820
6416
 
@@ -5824,7 +6420,7 @@ and the response contains error information.</li>
5824
6420
  <div class="attr function">
5825
6421
 
5826
6422
  <span class="def">def</span>
5827
- <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>
5828
6424
 
5829
6425
 
5830
6426
  </div>
@@ -5837,11 +6433,16 @@ and the response contains error information.</li>
5837
6433
  <h6 id="arguments">Arguments:</h6>
5838
6434
 
5839
6435
  <ul>
5840
- <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 />
5841
6437
  Default: 20, Range: 1 to 50. </li>
5842
- <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 />
5843
6439
  Use with limit to get the next set of items. <br />
5844
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>
5845
6446
  </ul>
5846
6447
 
5847
6448
  <h6 id="returns">Returns:</h6>
@@ -5859,7 +6460,7 @@ and the response contains error information.</li>
5859
6460
  </ul>
5860
6461
 
5861
6462
  <p><details>
5862
- <summary>Sample Code</summary></p>
6463
+ <summary>Sample Code - Manual Paging</summary></p>
5863
6464
 
5864
6465
  <div class="pdoc-code codehilite">
5865
6466
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -5920,6 +6521,55 @@ and the response contains error information.</li>
5920
6521
  </code></pre>
5921
6522
  </div>
5922
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
+
5923
6573
  <p></details></p>
5924
6574
  </div>
5925
6575
 
@@ -5929,7 +6579,7 @@ and the response contains error information.</li>
5929
6579
  <div class="attr function">
5930
6580
 
5931
6581
  <span class="def">def</span>
5932
- <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>
5933
6583
 
5934
6584
 
5935
6585
  </div>
@@ -5944,11 +6594,16 @@ and the response contains error information.</li>
5944
6594
  <ul>
5945
6595
  <li><strong>userId (str):</strong> The user's Spotify user ID. <br />
5946
6596
  Example: <code>smedjan</code></li>
5947
- <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 />
5948
6598
  Default: 20, Range: 1 to 50. </li>
5949
- <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 />
5950
6600
  Use with limit to get the next set of items. <br />
5951
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>
5952
6607
  </ul>
5953
6608
 
5954
6609
  <h6 id="returns">Returns:</h6>
@@ -5966,7 +6621,7 @@ and the response contains error information.</li>
5966
6621
  </ul>
5967
6622
 
5968
6623
  <p><details>
5969
- <summary>Sample Code</summary></p>
6624
+ <summary>Sample Code - Manual Paging</summary></p>
5970
6625
 
5971
6626
  <div class="pdoc-code codehilite">
5972
6627
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6028,6 +6683,56 @@ and the response contains error information.</li>
6028
6683
  </code></pre>
6029
6684
  </div>
6030
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
+
6031
6736
  <p></details></p>
6032
6737
  </div>
6033
6738
 
@@ -6150,7 +6855,7 @@ and the response contains error information.</li>
6150
6855
  <div class="attr function">
6151
6856
 
6152
6857
  <span class="def">def</span>
6153
- <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>
6154
6859
 
6155
6860
 
6156
6861
  </div>
@@ -6165,7 +6870,7 @@ and the response contains error information.</li>
6165
6870
  <ul>
6166
6871
  <li><strong>showId (str):</strong> The Spotify ID for the show.
6167
6872
  Example: <code>38bS44xjbVVZ3No3ByF1dJ</code></li>
6168
- <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 />
6169
6874
  Default: 20, Range: 1 to 50. </li>
6170
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 />
6171
6876
  Default: 0 (the first item). </li>
@@ -6176,6 +6881,11 @@ this parameter. <br />
6176
6881
  Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
6177
6882
  Users can view the country that is associated with their account in the account settings. <br />
6178
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>
6179
6889
  </ul>
6180
6890
 
6181
6891
  <h6 id="returns">Returns:</h6>
@@ -6193,7 +6903,7 @@ and the response contains error information.</li>
6193
6903
  </ul>
6194
6904
 
6195
6905
  <p><details>
6196
- <summary>Sample Code</summary></p>
6906
+ <summary>Sample Code - Manual Paging</summary></p>
6197
6907
 
6198
6908
  <div class="pdoc-code codehilite">
6199
6909
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6261,16 +6971,68 @@ and the response contains error information.</li>
6261
6971
  </code></pre>
6262
6972
  </div>
6263
6973
 
6264
- <p></details></p>
6265
- </div>
6974
+ <p></details>
6975
+ <details>
6976
+ <summary>Sample Code - Auto Paging</summary></p>
6266
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>
6267
6981
 
6268
- </div>
6269
- <div id="SpotifyClient.GetShowFavorites" class="classattr">
6270
- <div class="attr function">
6271
-
6272
- <span class="def">def</span>
6273
- <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>
6274
7036
 
6275
7037
 
6276
7038
  </div>
@@ -6283,11 +7045,16 @@ and the response contains error information.</li>
6283
7045
  <h6 id="arguments">Arguments:</h6>
6284
7046
 
6285
7047
  <ul>
6286
- <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 />
6287
7049
  Default: 20, Range: 1 to 50. </li>
6288
- <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 />
6289
7051
  Use with limit to get the next set of items. <br />
6290
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>
6291
7058
  </ul>
6292
7059
 
6293
7060
  <h6 id="returns">Returns:</h6>
@@ -6305,7 +7072,7 @@ and the response contains error information.</li>
6305
7072
  </ul>
6306
7073
 
6307
7074
  <p><details>
6308
- <summary>Sample Code</summary></p>
7075
+ <summary>Sample Code - Manual Paging</summary></p>
6309
7076
 
6310
7077
  <div class="pdoc-code codehilite">
6311
7078
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6363,6 +7130,48 @@ and the response contains error information.</li>
6363
7130
  </code></pre>
6364
7131
  </div>
6365
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
+
6366
7175
  <p></details></p>
6367
7176
  </div>
6368
7177
 
@@ -6613,7 +7422,7 @@ and the response contains error information.</li>
6613
7422
  <div class="attr function">
6614
7423
 
6615
7424
  <span class="def">def</span>
6616
- <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>
6617
7426
 
6618
7427
 
6619
7428
  </div>
@@ -6626,9 +7435,9 @@ and the response contains error information.</li>
6626
7435
  <h6 id="arguments">Arguments:</h6>
6627
7436
 
6628
7437
  <ul>
6629
- <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 />
6630
7439
  Default: 20, Range: 1 to 50. </li>
6631
- <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 />
6632
7441
  Use with limit to get the next set of items. <br />
6633
7442
  Default: 0 (the first item). </li>
6634
7443
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
@@ -6638,6 +7447,11 @@ this parameter. <br />
6638
7447
  Note: If neither market or user country are provided, the content is considered unavailable for the client. <br />
6639
7448
  Users can view the country that is associated with their account in the account settings. <br />
6640
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>
6641
7455
  </ul>
6642
7456
 
6643
7457
  <h6 id="returns">Returns:</h6>
@@ -6655,7 +7469,7 @@ and the response contains error information.</li>
6655
7469
  </ul>
6656
7470
 
6657
7471
  <p><details>
6658
- <summary>Sample Code</summary></p>
7472
+ <summary>Sample Code - Manual Paging</summary></p>
6659
7473
 
6660
7474
  <div class="pdoc-code codehilite">
6661
7475
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -6713,6 +7527,48 @@ and the response contains error information.</li>
6713
7527
  </code></pre>
6714
7528
  </div>
6715
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
+
6716
7572
  <p></details></p>
6717
7573
  </div>
6718
7574
 
@@ -6902,7 +7758,7 @@ minX / maxX / and targetX argument values.</p>
6902
7758
  <h6 id="arguments">Arguments:</h6>
6903
7759
 
6904
7760
  <ul>
6905
- <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 />
6906
7762
  Default: 20, Range: 1 to 50. </li>
6907
7763
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
6908
7764
  is available in that market will be returned. If a valid user access token is specified
@@ -7322,7 +8178,7 @@ and the response contains error information.</li>
7322
8178
  <div class="attr function">
7323
8179
 
7324
8180
  <span class="def">def</span>
7325
- <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>
7326
8182
 
7327
8183
 
7328
8184
  </div>
@@ -7342,11 +8198,16 @@ Valid values: <br />
7342
8198
  Default: <code>medium_term</code> <br />
7343
8199
  Example: <code>long_term</code></li>
7344
8200
  </ul></li>
7345
- <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 />
7346
8202
  Default: 20, Range: 1 to 50. </li>
7347
- <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 />
7348
8204
  Use with limit to get the next set of items. <br />
7349
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>
7350
8211
  </ul>
7351
8212
 
7352
8213
  <h6 id="returns">Returns:</h6>
@@ -7364,7 +8225,7 @@ and the response contains error information.</li>
7364
8225
  </ul>
7365
8226
 
7366
8227
  <p><details>
7367
- <summary>Sample Code</summary></p>
8228
+ <summary>Sample Code - Manual Paging</summary></p>
7368
8229
 
7369
8230
  <div class="pdoc-code codehilite">
7370
8231
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -7423,6 +8284,53 @@ and the response contains error information.</li>
7423
8284
  </code></pre>
7424
8285
  </div>
7425
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
+
7426
8334
  <p></details></p>
7427
8335
  </div>
7428
8336
 
@@ -7432,7 +8340,7 @@ and the response contains error information.</li>
7432
8340
  <div class="attr function">
7433
8341
 
7434
8342
  <span class="def">def</span>
7435
- <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>
7436
8344
 
7437
8345
 
7438
8346
  </div>
@@ -7452,11 +8360,16 @@ Valid values: <br />
7452
8360
  Default: <code>medium_term</code> <br />
7453
8361
  Example: <code>long_term</code></li>
7454
8362
  </ul></li>
7455
- <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 />
7456
8364
  Default: 20, Range: 1 to 50. </li>
7457
- <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 />
7458
8366
  Use with limit to get the next set of items. <br />
7459
- 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>
7460
8373
  </ul>
7461
8374
 
7462
8375
  <h6 id="returns">Returns:</h6>
@@ -7474,7 +8387,7 @@ and the response contains error information.</li>
7474
8387
  </ul>
7475
8388
 
7476
8389
  <p><details>
7477
- <summary>Sample Code</summary></p>
8390
+ <summary>Sample Code - Manual Paging</summary></p>
7478
8391
 
7479
8392
  <div class="pdoc-code codehilite">
7480
8393
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -7533,6 +8446,53 @@ and the response contains error information.</li>
7533
8446
  </code></pre>
7534
8447
  </div>
7535
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
+
7536
8496
  <p></details></p>
7537
8497
  </div>
7538
8498
 
@@ -9846,19 +10806,17 @@ in the Spotify music catalog.</p>
9846
10806
 
9847
10807
 
9848
10808
  </div>
9849
- <div id="SpotifyClient.Search" class="classattr">
10809
+ <div id="SpotifyClient.SearchAlbums" class="classattr">
9850
10810
  <div class="attr function">
9851
10811
 
9852
10812
  <span class="def">def</span>
9853
- <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>
9854
10814
 
9855
10815
 
9856
10816
  </div>
9857
- <a class="headerlink" href="#SpotifyClient.Search"></a>
10817
+ <a class="headerlink" href="#SpotifyClient.SearchAlbums"></a>
9858
10818
 
9859
- <div class="docstring"><p>Get Spotify catalog information about albums, artists, playlists, tracks, shows, episodes
9860
- or audiobooks that match a keyword string. Audiobooks are only available within the US, UK,
9861
- 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>
9862
10820
 
9863
10821
  <h6 id="arguments">Arguments:</h6>
9864
10822
 
@@ -9875,15 +10833,11 @@ The isrc and track filters can be used while searching tracks. <br />
9875
10833
  The upc, tag:new and tag:hipster filters can only be used while searching albums.
9876
10834
  The tag:new filter will return albums released in the past two weeks and tag:hipster
9877
10835
  can be used to return only albums with the lowest 10% popularity.</li>
9878
- <li><strong>criteriaType (str):</strong> A comma-separated list of item types to search across. <br />
9879
- Search results include hits from all the specified item types. <br />
9880
- For example: "album,track" returns both albums and tracks matching criteria argument. <br />
9881
- Allowed values: "album", "artist", "playlist", "track", "show", "episode", "audiobook".</li>
9882
- <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 />
9883
10837
  Default: 20, Range: 1 to 50. </li>
9884
- <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 />
9885
10839
  Use with limit to get the next set of items. <br />
9886
- Default: 0 (the first item), Range: 0 to 1000</li>
10840
+ Default: 0 (the first item). Range: 0 to 1000. </li>
9887
10841
  <li><strong>market (str):</strong> An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that
9888
10842
  is available in that market will be returned. If a valid user access token is specified
9889
10843
  in the request header, the country associated with the user account will take priority over
@@ -9895,6 +10849,11 @@ Example: <code>ES</code></li>
9895
10849
  marks the content as playable in the response. By default externally hosted audio content is marked
9896
10850
  as unplayable in the response. <br />
9897
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>
9898
10857
  </ul>
9899
10858
 
9900
10859
  <h6 id="returns">Returns:</h6>
@@ -9911,11 +10870,11 @@ and the response contains error information.</li>
9911
10870
  <li><strong>SpotifApiError:</strong> If the method fails for any other reason.</li>
9912
10871
  </ul>
9913
10872
 
9914
- <p>Note the offset limitation of 1000 entries; this effectively limits you to 1,050 maximum
9915
- 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>
9916
10875
 
9917
10876
  <p><details>
9918
- <summary>Sample Code - Search Albums</summary></p>
10877
+ <summary>Sample Code - Manual Paging</summary></p>
9919
10878
 
9920
10879
  <div class="pdoc-code codehilite">
9921
10880
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -9934,11 +10893,10 @@ entries that you can return with a search.</p>
9934
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>
9935
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>
9936
10895
 
9937
- <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>
9938
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>
9939
- <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>
9940
- <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>
9941
- <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>
9942
10900
 
9943
10901
  <span class="c1"># display search response details.</span>
9944
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>
@@ -9962,10 +10920,15 @@ entries that you can return with a search.</p>
9962
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>
9963
10921
 
9964
10922
  <span class="c1"># display album details.</span>
9965
- <span class="n">albumSimplified</span><span class="p">:</span><span class="n">AlbumSimplified</span>
9966
- <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>
9967
-
9968
- <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>
9969
10932
 
9970
10933
  <span class="c1"># anymore page results?</span>
9971
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>
@@ -9974,7 +10937,7 @@ entries that you can return with a search.</p>
9974
10937
  <span class="k">else</span><span class="p">:</span>
9975
10938
  <span class="c1"># yes - retrieve the next page of results.</span>
9976
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>
9977
- <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>
9978
10941
 
9979
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>
9980
10943
 
@@ -9982,10 +10945,9 @@ entries that you can return with a search.</p>
9982
10945
  </code></pre>
9983
10946
  </div>
9984
10947
 
9985
- <p></details></p>
9986
-
9987
- <p><details>
9988
- <summary>Sample Code - Search Artists</summary></p>
10948
+ <p></details>
10949
+ <details>
10950
+ <summary>Sample Code - Auto Paging</summary></p>
9989
10951
 
9990
10952
  <div class="pdoc-code codehilite">
9991
10953
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10004,47 +10966,20 @@ entries that you can return with a search.</p>
10004
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>
10005
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>
10006
10968
 
10007
- <span class="c1"># get Spotify catalog information about artists that match a keyword string.</span>
10008
- <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>
10009
- <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>
10010
- <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>
10011
- <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>
10012
-
10013
- <span class="c1"># display search response details.</span>
10014
- <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>
10015
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10016
-
10017
- <span class="c1"># save initial search response total, as search next page response total </span>
10018
- <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10019
- <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10020
- <span class="c1"># than working off of a cached result set.</span>
10021
- <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>
10022
-
10023
- <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10024
- <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
10025
-
10026
- <span class="c1"># only display album results for this example.</span>
10027
- <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>
10028
-
10029
- <span class="c1"># display paging details.</span>
10030
- <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>
10031
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10032
- <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>
10033
-
10034
- <span class="c1"># display album details.</span>
10035
- <span class="n">artist</span><span class="p">:</span><span class="n">Artist</span>
10036
- <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>
10037
10973
 
10038
- <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>
10039
10978
 
10040
- <span class="c1"># anymore page results?</span>
10041
- <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>
10042
- <span class="c1"># no - all pages were processed.</span>
10043
- <span class="k">break</span>
10044
- <span class="k">else</span><span class="p">:</span>
10045
- <span class="c1"># yes - retrieve the next page of results.</span>
10046
- <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>
10047
- <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>
10048
10983
 
10049
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>
10050
10985
 
@@ -10053,39 +10988,295 @@ entries that you can return with a search.</p>
10053
10988
  </div>
10054
10989
 
10055
10990
  <p></details></p>
10991
+ </div>
10056
10992
 
10057
- <p><details>
10058
- <summary>Sample Code - Search Audiobooks</summary></p>
10059
-
10060
- <div class="pdoc-code codehilite">
10061
- <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
10062
- <span class="kn">from</span> <span class="nn">spotifywebapipython.models</span> <span class="kn">import</span> <span class="o">*</span>
10063
10993
 
10064
- <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>
10065
11000
 
10066
- <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>
10067
- <span class="n">SPOTIFY_SCOPES</span><span class="p">:</span><span class="nb">list</span> <span class="o">=</span> \
10068
- <span class="p">[</span>
10069
- <span class="s1">&#39;user-read-email&#39;</span><span class="p">,</span>
10070
- <span class="s1">&#39;user-library-read&#39;</span><span class="p">,</span>
10071
- <span class="s1">&#39;user-library-modify&#39;</span><span class="p">,</span>
10072
- <span class="s1">&#39;playlist-modify-private&#39;</span><span class="p">,</span>
10073
- <span class="s1">&#39;playlist-modify-public&#39;</span>
10074
- <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>
10075
11006
 
10076
- <span class="c1"># create new spotify client instance.</span>
10077
- <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>
10078
11008
 
10079
- <span class="c1"># generate a spotify authorization code with PKCE access token (with scope, private and public data use).</span>
10080
- <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>
10081
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>
10082
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>
10083
11275
 
10084
- <span class="c1"># get Spotify catalog information about audiobooks that match a keyword string.</span>
10085
- <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>
10086
- <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>
10087
- <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>
10088
- <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>
10089
11280
 
10090
11281
  <span class="c1"># display search response details.</span>
10091
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>
@@ -10103,25 +11294,476 @@ entries that you can return with a search.</p>
10103
11294
  <span class="c1"># only display audiobook results for this example.</span>
10104
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>
10105
11296
 
10106
- <span class="c1"># display paging details.</span>
10107
- <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>
10108
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10109
- <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>
10110
11747
 
10111
- <span class="c1"># display audiobook details.</span>
10112
- <span class="n">audiobook</span><span class="p">:</span><span class="n">AudiobookSimplified</span>
10113
- <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>
10114
11752
 
10115
- <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>
10116
11757
 
10117
- <span class="c1"># anymore page results?</span>
10118
- <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>
10119
- <span class="c1"># no - all pages were processed.</span>
10120
- <span class="k">break</span>
10121
- <span class="k">else</span><span class="p">:</span>
10122
- <span class="c1"># yes - retrieve the next page of results.</span>
10123
- <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>
10124
- <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>
10125
11767
 
10126
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>
10127
11769
 
@@ -10129,10 +11771,9 @@ entries that you can return with a search.</p>
10129
11771
  </code></pre>
10130
11772
  </div>
10131
11773
 
10132
- <p></details></p>
10133
-
10134
- <p><details>
10135
- <summary>Sample Code - Search Episodes</summary></p>
11774
+ <p></details>
11775
+ <details>
11776
+ <summary>Sample Code - Spotify Generated, Daily Mix</summary></p>
10136
11777
 
10137
11778
  <div class="pdoc-code codehilite">
10138
11779
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10158,47 +11799,23 @@ entries that you can return with a search.</p>
10158
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>
10159
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>
10160
11801
 
10161
- <span class="c1"># get Spotify catalog information about episodes that match a keyword string.</span>
10162
- <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>
10163
- <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>
10164
- <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>
10165
- <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>
10166
-
10167
- <span class="c1"># display search response details.</span>
10168
- <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>
10169
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10170
-
10171
- <span class="c1"># save initial search response total, as search next page response total </span>
10172
- <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10173
- <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10174
- <span class="c1"># than working off of a cached result set.</span>
10175
- <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>
10176
-
10177
- <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10178
- <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
10179
-
10180
- <span class="c1"># only display episode results for this example.</span>
10181
- <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>
10182
-
10183
- <span class="c1"># display paging details.</span>
10184
- <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>
10185
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10186
- <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>
10187
11806
 
10188
- <span class="c1"># display episode details.</span>
10189
- <span class="n">episode</span><span class="p">:</span><span class="n">EpisodeSimplified</span>
10190
- <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>
10191
11809
 
10192
- <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>
10193
11813
 
10194
- <span class="c1"># anymore page results?</span>
10195
- <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>
10196
- <span class="c1"># no - all pages were processed.</span>
10197
- <span class="k">break</span>
10198
- <span class="k">else</span><span class="p">:</span>
10199
- <span class="c1"># yes - retrieve the next page of results.</span>
10200
- <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>
10201
- <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>
10202
11819
 
10203
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>
10204
11821
 
@@ -10207,9 +11824,79 @@ entries that you can return with a search.</p>
10207
11824
  </div>
10208
11825
 
10209
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>
10210
11897
 
10211
11898
  <p><details>
10212
- <summary>Sample Code - Search Playlists</summary></p>
11899
+ <summary>Sample Code - Manual Paging</summary></p>
10213
11900
 
10214
11901
  <div class="pdoc-code codehilite">
10215
11902
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10235,11 +11922,12 @@ entries that you can return with a search.</p>
10235
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>
10236
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>
10237
11924
 
10238
- <span class="c1"># get Spotify catalog information about playlists that match a keyword string.</span>
10239
- <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>
10240
- <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>
10241
- <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>
10242
- <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>
10243
11931
 
10244
11932
  <span class="c1"># display search response details.</span>
10245
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>
@@ -10249,24 +11937,28 @@ entries that you can return with a search.</p>
10249
11937
  <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10250
11938
  <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10251
11939
  <span class="c1"># than working off of a cached result set.</span>
10252
- <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>
10253
11941
 
10254
11942
  <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10255
11943
  <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
10256
11944
 
10257
- <span class="c1"># only display playlist results for this example.</span>
10258
- <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>
10259
11947
 
10260
11948
  <span class="c1"># display paging details.</span>
10261
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>
10262
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10263
- <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>
10264
11951
 
10265
- <span class="c1"># display playlist details.</span>
10266
- <span class="n">playlist</span><span class="p">:</span><span class="n">PlaylistSimplified</span>
10267
- <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>
10268
11956
 
10269
- <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>
10270
11962
 
10271
11963
  <span class="c1"># anymore page results?</span>
10272
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>
@@ -10275,7 +11967,7 @@ entries that you can return with a search.</p>
10275
11967
  <span class="k">else</span><span class="p">:</span>
10276
11968
  <span class="c1"># yes - retrieve the next page of results.</span>
10277
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>
10278
- <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>
10279
11971
 
10280
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>
10281
11973
 
@@ -10283,10 +11975,9 @@ entries that you can return with a search.</p>
10283
11975
  </code></pre>
10284
11976
  </div>
10285
11977
 
10286
- <p></details></p>
10287
-
10288
- <p><details>
10289
- <summary>Sample Code - Search Shows</summary></p>
11978
+ <p></details>
11979
+ <details>
11980
+ <summary>Sample Code - Auto Paging</summary></p>
10290
11981
 
10291
11982
  <div class="pdoc-code codehilite">
10292
11983
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10312,60 +12003,103 @@ entries that you can return with a search.</p>
10312
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>
10313
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>
10314
12005
 
10315
- <span class="c1"># get Spotify catalog information about shows that match a keyword string.</span>
10316
- <span class="c1"># note - it seems that you have to use an Authorization type of token in </span>
10317
- <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>
10318
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>
10319
- <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>
10320
- <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>
10321
- <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>
10322
12012
 
10323
- <span class="c1"># display search response details.</span>
10324
- <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>
10325
- <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>
10326
12017
 
10327
- <span class="c1"># save initial search response total, as search next page response total </span>
10328
- <span class="c1"># will change with each page retrieved. this is odd behavior, as it seems</span>
10329
- <span class="c1"># that the spotify web api is returning a new result set each time rather </span>
10330
- <span class="c1"># than working off of a cached result set.</span>
10331
- <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>
10332
12022
 
10333
- <span class="c1"># handle pagination, as spotify limits us to a set # of items returned per response.</span>
10334
- <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>
10335
12024
 
10336
- <span class="c1"># only display show results for this example.</span>
10337
- <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>
10338
12028
 
10339
- <span class="c1"># display paging details.</span>
10340
- <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>
10341
- <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
10342
- <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>
10343
12031
 
10344
- <span class="c1"># display show details.</span>
10345
- <span class="n">show</span><span class="p">:</span><span class="n">ShowSimplified</span>
10346
- <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>
10347
12032
 
10348
- <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>
10349
12039
 
10350
- <span class="c1"># anymore page results?</span>
10351
- <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>
10352
- <span class="c1"># no - all pages were processed.</span>
10353
- <span class="k">break</span>
10354
- <span class="k">else</span><span class="p">:</span>
10355
- <span class="c1"># yes - retrieve the next page of results.</span>
10356
- <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>
10357
- <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>
10358
12045
 
10359
- <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>
10360
12047
 
10361
- <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>
10362
- </code></pre>
10363
- </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>
10364
12083
 
10365
- <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>
10366
12100
 
10367
12101
  <p><details>
10368
- <summary>Sample Code - Search Tracks</summary></p>
12102
+ <summary>Sample Code - Manual Paging</summary></p>
10369
12103
 
10370
12104
  <div class="pdoc-code codehilite">
10371
12105
  <pre><span></span><code><span class="kn">from</span> <span class="nn">spotifywebapipython</span> <span class="kn">import</span> <span class="o">*</span>
@@ -10384,11 +12118,10 @@ entries that you can return with a search.</p>
10384
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>
10385
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>
10386
12120
 
10387
- <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>
10388
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>
10389
- <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>
10390
- <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>
10391
- <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>
10392
12125
 
10393
12126
  <span class="c1"># display search response details.</span>
10394
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>
@@ -10406,6 +12139,11 @@ entries that you can return with a search.</p>
10406
12139
  <span class="c1"># only display track results for this example.</span>
10407
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>
10408
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
+
10409
12147
  <span class="c1"># display paging details.</span>
10410
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>
10411
12149
  <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
@@ -10414,7 +12152,6 @@ entries that you can return with a search.</p>
10414
12152
  <span class="c1"># display track details.</span>
10415
12153
  <span class="n">track</span><span class="p">:</span><span class="n">Track</span>
10416
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>
10417
-
10418
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>
10419
12156
 
10420
12157
  <span class="c1"># anymore page results?</span>
@@ -10424,7 +12161,49 @@ entries that you can return with a search.</p>
10424
12161
  <span class="k">else</span><span class="p">:</span>
10425
12162
  <span class="c1"># yes - retrieve the next page of results.</span>
10426
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>
10427
- <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>
10428
12207
 
10429
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>
10430
12209