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

@@ -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.83" -->
12
+ <!-- build env - Package Version = "1.0.85" -->
13
13
  <!-- pdoc module.modulename = "spotifywebapipython.spotifywebapierror" -->
14
14
  <!-- pdoc module.is_package = "False" -->
15
15
  <!-- pdoc root_module_name = "None" -->
@@ -71,7 +71,7 @@
71
71
 
72
72
  <footer class="footertext">
73
73
  spotifywebapiPython</br>
74
- Version 1.0.83</br>
74
+ Version 1.0.85</br>
75
75
  <a href="https://developer.spotify.com/documentation/web-api" target="_blank">
76
76
  <img src="../spotifywebapipython.ico" alt="brand icon" style="width:32px; height:32px; padding:4px;"/>
77
77
  A Spotify Web Api Client
@@ -619,16 +619,69 @@ class SpotifyClient:
619
619
  return result
620
620
 
621
621
 
622
- def _GetPlayerNowPlayingUri(self) -> str:
622
+ def _GetPlayerNowPlayingAudiobookUri(self) -> str:
623
623
  """
624
- Returns the uri value of the currently playing media if something is
624
+ Returns the audiobook uri value of the currently playing media if something is
625
625
  playing; otherwise, null is returned.
626
626
  """
627
627
  result:str = None
628
628
 
629
629
  # get nowplaying status.
630
630
  _logsi.LogVerbose("Querying NowPlaying status of Spotify player")
631
- nowPlaying:PlayerPlayState = self.GetPlayerNowPlaying()
631
+ nowPlaying:PlayerPlayState = self.GetPlayerNowPlaying(additionalTypes='episode')
632
+
633
+ # is an chapter playing? if so, return the parent show uri value.
634
+ if nowPlaying is not None:
635
+ _logsi.LogVerbose("NowPlaying data: %s" % str(nowPlaying))
636
+ if nowPlaying.CurrentlyPlayingType in ['episode']:
637
+ playingItem:Chapter = nowPlaying.Item
638
+ if (playingItem is not None):
639
+ chapter:Chapter = self.GetChapter(playingItem.Id)
640
+ result = chapter.Audiobook.Uri
641
+ else:
642
+ raise SpotifyApiError("Currently playing item is not a Audiobook Chapter", logsi=_logsi)
643
+
644
+ return result
645
+
646
+
647
+ def _GetPlayerNowPlayingShowUri(self) -> str:
648
+ """
649
+ Returns the show uri value of the currently playing media if something is
650
+ playing; otherwise, null is returned.
651
+ """
652
+ result:str = None
653
+
654
+ # get nowplaying status.
655
+ _logsi.LogVerbose("Querying NowPlaying status of Spotify player")
656
+ nowPlaying:PlayerPlayState = self.GetPlayerNowPlaying(additionalTypes='episode')
657
+
658
+ # is an episode playing? if so, return the parent show uri value.
659
+ if nowPlaying is not None:
660
+ _logsi.LogVerbose("NowPlaying data: %s" % str(nowPlaying))
661
+ if nowPlaying.CurrentlyPlayingType in ['episode']:
662
+ playingItem:Episode = nowPlaying.Item
663
+ if (playingItem is not None):
664
+ episode:Episode = self.GetEpisode(playingItem.Id)
665
+ result = episode.Show.Uri
666
+ else:
667
+ raise SpotifyApiError("Currently playing item is not a Show Episode", logsi=_logsi)
668
+
669
+ return result
670
+
671
+
672
+ def _GetPlayerNowPlayingUri(
673
+ self,
674
+ additionalTypes:str=None,
675
+ ) -> str:
676
+ """
677
+ Returns the uri value of the currently playing media type if something is
678
+ playing; otherwise, null is returned.
679
+ """
680
+ result:str = None
681
+
682
+ # get nowplaying status.
683
+ _logsi.LogVerbose("Querying NowPlaying status of Spotify player")
684
+ nowPlaying:PlayerPlayState = self.GetPlayerNowPlaying(additionalTypes=additionalTypes)
632
685
 
633
686
  # is anything playing? if so, return the uri value.
634
687
  if nowPlaying is not None:
@@ -2496,6 +2549,7 @@ class SpotifyClient:
2496
2549
  limit (int):
2497
2550
  The maximum number of items to return in a page of items when manual paging is used.
2498
2551
  Default: 20, Range: 1 to 50.
2552
+ See the `limitTotal` argument for automatic paging option.
2499
2553
  offset (int):
2500
2554
  The page index offset of the first item to return.
2501
2555
  Use with limit to get the next set of items.
@@ -2660,6 +2714,7 @@ class SpotifyClient:
2660
2714
  limit (int):
2661
2715
  The maximum number of items to return in a page of items when manual paging is used.
2662
2716
  Default: 20, Range: 1 to 50.
2717
+ See the `limitTotal` argument for automatic paging option.
2663
2718
  offset (int):
2664
2719
  The page index offset of the first item to return.
2665
2720
  Use with limit to get the next set of items.
@@ -2913,6 +2968,7 @@ class SpotifyClient:
2913
2968
  limit (int):
2914
2969
  The maximum number of items to return in a page of items when manual paging is used.
2915
2970
  Default: 20, Range: 1 to 50.
2971
+ See the `limitTotal` argument for automatic paging option.
2916
2972
  offset (int):
2917
2973
  The index of the first item to return; use with limit to get the next set of items.
2918
2974
  Default: 0 (the first item).
@@ -3143,6 +3199,7 @@ class SpotifyClient:
3143
3199
  limit (int):
3144
3200
  The maximum number of items to return in a page of items when manual paging is used.
3145
3201
  Default: 20, Range: 1 to 50.
3202
+ See the `limitTotal` argument for automatic paging option.
3146
3203
  offset (int):
3147
3204
  The index of the first item to return; use with limit to get the next set of items.
3148
3205
  Default: 0 (the first item).
@@ -3702,6 +3759,7 @@ class SpotifyClient:
3702
3759
  limit (int):
3703
3760
  The maximum number of items to return in a page of items when manual paging is used.
3704
3761
  Default: 20, Range: 1 to 50.
3762
+ See the `limitTotal` argument for automatic paging option.
3705
3763
  limitTotal (int):
3706
3764
  The maximum number of items to return for the request.
3707
3765
  If specified, this argument overrides the limit and offset argument values
@@ -4036,6 +4094,7 @@ class SpotifyClient:
4036
4094
  limit (int):
4037
4095
  The maximum number of items to return in a page of items when manual paging is used.
4038
4096
  Default: 20, Range: 1 to 50.
4097
+ See the `limitTotal` argument for automatic paging option.
4039
4098
  offset (int):
4040
4099
  The index of the first item to return; use with limit to get the next set of items.
4041
4100
  Default: 0 (the first item).
@@ -4193,6 +4252,7 @@ class SpotifyClient:
4193
4252
  limit (int):
4194
4253
  The maximum number of items to return in a page of items when manual paging is used.
4195
4254
  Default: 20, Range: 1 to 50.
4255
+ See the `limitTotal` argument for automatic paging option.
4196
4256
  offset (int):
4197
4257
  The page index offset of the first item to return.
4198
4258
  Use with limit to get the next set of items.
@@ -4556,6 +4616,7 @@ class SpotifyClient:
4556
4616
  limit (int):
4557
4617
  The maximum number of items to return in a page of items when manual paging is used.
4558
4618
  Default: 20, Range: 1 to 50.
4619
+ See the `limitTotal` argument for automatic paging option.
4559
4620
  offset (int):
4560
4621
  The page index offset of the first item to return.
4561
4622
  Use with limit to get the next set of items.
@@ -4831,6 +4892,7 @@ class SpotifyClient:
4831
4892
  limit (int):
4832
4893
  The maximum number of items to return in a page of items when manual paging is used.
4833
4894
  Default: 20, Range: 1 to 50.
4895
+ See the `limitTotal` argument for automatic paging option.
4834
4896
  offset (int):
4835
4897
  The page index offset of the first item to return.
4836
4898
  Use with limit to get the next set of items.
@@ -5283,6 +5345,7 @@ class SpotifyClient:
5283
5345
  limit (int):
5284
5346
  The maximum number of items to return in a page of items when manual paging is used.
5285
5347
  Default: 20, Range: 1 to 50.
5348
+ See the `limitTotal` argument for automatic paging option.
5286
5349
  offset (int):
5287
5350
  The page index offset of the first item to return.
5288
5351
  Use with limit to get the next set of items.
@@ -5529,6 +5592,7 @@ class SpotifyClient:
5529
5592
  limit (int):
5530
5593
  The maximum number of items to return in a page of items when manual paging is used.
5531
5594
  Default: 20, Range: 1 to 50.
5595
+ See the `limitTotal` argument for automatic paging option.
5532
5596
  offset (int):
5533
5597
  The page index offset of the first item to return.
5534
5598
  Use with limit to get the next set of items.
@@ -6649,6 +6713,7 @@ class SpotifyClient:
6649
6713
  limit (int):
6650
6714
  The maximum number of items to return in a page of items when manual paging is used.
6651
6715
  Default: 20, Range: 1 to 50.
6716
+ See the `limitTotal` argument for automatic paging option.
6652
6717
  after (int):
6653
6718
  Returns all items after (but not including) this cursor position, which is
6654
6719
  a Unix timestamp in milliseconds.
@@ -7037,6 +7102,7 @@ class SpotifyClient:
7037
7102
  limit (int):
7038
7103
  The maximum number of items to return in a page of items when manual paging is used.
7039
7104
  Default: 50, Range: 1 to 50.
7105
+ See the `limitTotal` argument for automatic paging option.
7040
7106
  offset (int):
7041
7107
  The page index offset of the first item to return.
7042
7108
  Use with limit to get the next set of items.
@@ -7221,6 +7287,7 @@ class SpotifyClient:
7221
7287
  limit (int):
7222
7288
  The maximum number of items to return in a page of items when manual paging is used.
7223
7289
  Default: 20, Range: 1 to 50.
7290
+ See the `limitTotal` argument for automatic paging option.
7224
7291
  offset (int):
7225
7292
  The page index offset of the first item to return.
7226
7293
  Use with limit to get the next set of items.
@@ -7375,6 +7442,7 @@ class SpotifyClient:
7375
7442
  limit (int):
7376
7443
  The maximum number of items to return in a page of items when manual paging is used.
7377
7444
  Default: 20, Range: 1 to 50.
7445
+ See the `limitTotal` argument for automatic paging option.
7378
7446
  offset (int):
7379
7447
  The page index offset of the first item to return.
7380
7448
  Use with limit to get the next set of items.
@@ -7618,6 +7686,7 @@ class SpotifyClient:
7618
7686
  limit (int):
7619
7687
  The maximum number of items to return in a page of items when manual paging is used.
7620
7688
  Default: 20, Range: 1 to 50.
7689
+ See the `limitTotal` argument for automatic paging option.
7621
7690
  offset (int):
7622
7691
  The index of the first item to return; use with limit to get the next set of items.
7623
7692
  Default: 0 (the first item).
@@ -7775,6 +7844,7 @@ class SpotifyClient:
7775
7844
  limit (int):
7776
7845
  The maximum number of items to return in a page of items when manual paging is used.
7777
7846
  Default: 20, Range: 1 to 50.
7847
+ See the `limitTotal` argument for automatic paging option.
7778
7848
  offset (int):
7779
7849
  The page index offset of the first item to return.
7780
7850
  Use with limit to get the next set of items.
@@ -8099,7 +8169,7 @@ class SpotifyClient:
8099
8169
  apiMethodParms.AppendKeyValue("refreshDeviceList", refreshDeviceList)
8100
8170
  apiMethodParms.AppendKeyValue("activateDevice", activateDevice)
8101
8171
  apiMethodParms.AppendKeyValue("delay", delay)
8102
- _logsi.LogMethodParmList(SILevel.Verbose, "Resolving Spotify Connect Device", apiMethodParms)
8172
+ _logsi.LogMethodParmList(SILevel.Verbose, "Retrieving Spotify Connect Device", apiMethodParms)
8103
8173
 
8104
8174
  # if device value not specified then we are done.
8105
8175
  if (deviceValue is None) or (len(deviceValue.strip()) == 0):
@@ -8687,6 +8757,7 @@ class SpotifyClient:
8687
8757
  limit (int):
8688
8758
  The maximum number of items to return in a page of items when manual paging is used.
8689
8759
  Default: 20, Range: 1 to 50.
8760
+ See the `limitTotal` argument for automatic paging option.
8690
8761
  offset (int):
8691
8762
  The page index offset of the first item to return.
8692
8763
  Use with limit to get the next set of items.
@@ -9613,6 +9684,7 @@ class SpotifyClient:
9613
9684
  limit (int):
9614
9685
  The maximum number of items to return in a page of items when manual paging is used.
9615
9686
  Default: 20, Range: 1 to 50.
9687
+ See the `limitTotal` argument for automatic paging option.
9616
9688
  offset (int):
9617
9689
  The page index offset of the first item to return.
9618
9690
  Use with limit to get the next set of items.
@@ -9774,6 +9846,7 @@ class SpotifyClient:
9774
9846
  limit (int):
9775
9847
  The maximum number of items to return in a page of items when manual paging is used.
9776
9848
  Default: 20, Range: 1 to 50.
9849
+ See the `limitTotal` argument for automatic paging option.
9777
9850
  offset (int):
9778
9851
  The page index offset of the first item to return.
9779
9852
  Use with limit to get the next set of items.
@@ -11250,7 +11323,7 @@ class SpotifyClient:
11250
11323
  deviceId:str=None,
11251
11324
  play:bool=True,
11252
11325
  delay:float=0.50,
11253
- refreshDeviceList:bool=False,
11326
+ refreshDeviceList:bool=True,
11254
11327
  ) -> None:
11255
11328
  """
11256
11329
  Transfer playback to a new Spotify Connect device and optionally begin playback.
@@ -11275,7 +11348,7 @@ class SpotifyClient:
11275
11348
  refreshDeviceList (bool):
11276
11349
  True to refresh the Spotify Connect device list; otherwise, False to use the
11277
11350
  Spotify Connect device list cache.
11278
- Default is False.
11351
+ Default is True.
11279
11352
 
11280
11353
  Raises:
11281
11354
  SpotifyWebApiError:
@@ -11351,7 +11424,7 @@ class SpotifyClient:
11351
11424
  if delay > 0:
11352
11425
  _logsi.LogVerbose(TRACE_MSG_DELAY_DEVICE % delay)
11353
11426
  time.sleep(delay)
11354
-
11427
+
11355
11428
  # process results.
11356
11429
  # no results to process - this is pass or fail.
11357
11430
  return
@@ -11444,7 +11517,7 @@ class SpotifyClient:
11444
11517
  _logsi.LogVerbose('No active Spotify Connect device was found - activating device "%s"' % defaultDeviceId)
11445
11518
 
11446
11519
  # no - transfer control to the default device.
11447
- self.PlayerTransferPlayback(defaultDeviceId, play, delay)
11520
+ self.PlayerTransferPlayback(defaultDeviceId, play, delay, refreshDeviceList=False)
11448
11521
 
11449
11522
  # get current Spotify Connect player state.
11450
11523
  result = self.GetPlayerPlaybackState()
@@ -11554,9 +11627,10 @@ class SpotifyClient:
11554
11627
  _logsi.LeaveMethod(SILevel.Debug, apiMethodName)
11555
11628
 
11556
11629
 
11557
- def RemoveAudiobookFavorites(self,
11558
- ids:str
11559
- ) -> None:
11630
+ def RemoveAudiobookFavorites(
11631
+ self,
11632
+ ids:str=None,
11633
+ ) -> None:
11560
11634
  """
11561
11635
  Remove one or more audiobooks from the current user's 'Your Library'.
11562
11636
 
@@ -11567,6 +11641,7 @@ class SpotifyClient:
11567
11641
  A comma-separated list of the Spotify IDs for the audiobooks.
11568
11642
  Maximum: 50 IDs.
11569
11643
  Example: `3PFyizE2tGCSRLusl2Qizf,7iHfbu1YPACw6oZPAFJtqe`
11644
+ If null, the currently playing track album uri id value is used.
11570
11645
 
11571
11646
  Raises:
11572
11647
  SpotifyWebApiError:
@@ -11598,6 +11673,14 @@ class SpotifyClient:
11598
11673
  apiMethodParms.AppendKeyValue("ids", ids)
11599
11674
  _logsi.LogMethodParmList(SILevel.Verbose, "Remove audiobook(s) from user favorites", apiMethodParms)
11600
11675
 
11676
+ # if ids not specified, then return currently playing id value.
11677
+ if (ids is None) or (len(ids.strip()) == 0):
11678
+ uri = self._GetPlayerNowPlayingAudiobookUri()
11679
+ if uri is not None:
11680
+ ids = SpotifyClient.GetIdFromUri(uri)
11681
+ else:
11682
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
11683
+
11601
11684
  # build a list of all item id's.
11602
11685
  # remove any leading / trailing spaces in case user put a space between the items.
11603
11686
  arrIds:list[str] = ids.split(',')
@@ -11633,9 +11716,10 @@ class SpotifyClient:
11633
11716
  _logsi.LeaveMethod(SILevel.Debug, apiMethodName)
11634
11717
 
11635
11718
 
11636
- def RemoveEpisodeFavorites(self,
11637
- ids:str
11638
- ) -> None:
11719
+ def RemoveEpisodeFavorites(
11720
+ self,
11721
+ ids:str=None,
11722
+ ) -> None:
11639
11723
  """
11640
11724
  Remove one or more episodes from the current user's 'Your Library'.
11641
11725
 
@@ -11646,6 +11730,7 @@ class SpotifyClient:
11646
11730
  A comma-separated list of the Spotify IDs for the episodes.
11647
11731
  Maximum: 50 IDs.
11648
11732
  Example: `6kAsbP8pxwaU2kPibKTuHE,4rOoJ6Egrf8K2IrywzwOMk`
11733
+ If null, the currently playing context uri id value is used.
11649
11734
 
11650
11735
  Raises:
11651
11736
  SpotifyWebApiError:
@@ -11677,6 +11762,14 @@ class SpotifyClient:
11677
11762
  apiMethodParms.AppendKeyValue("ids", ids)
11678
11763
  _logsi.LogMethodParmList(SILevel.Verbose, "Remove episode(s) from user favorites", apiMethodParms)
11679
11764
 
11765
+ # if ids not specified, then return currently playing id value.
11766
+ if (ids is None) or (len(ids.strip()) == 0):
11767
+ uri = self._GetPlayerNowPlayingUri('episode')
11768
+ if uri is not None:
11769
+ ids = SpotifyClient.GetIdFromUri(uri)
11770
+ else:
11771
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
11772
+
11680
11773
  # build a list of all item id's.
11681
11774
  # remove any leading / trailing spaces in case user put a space between the items.
11682
11775
  arrIds:list[str] = ids.split(',')
@@ -11891,9 +11984,10 @@ class SpotifyClient:
11891
11984
  _logsi.LeaveMethod(SILevel.Debug, apiMethodName)
11892
11985
 
11893
11986
 
11894
- def RemoveShowFavorites(self,
11895
- ids:str
11896
- ) -> None:
11987
+ def RemoveShowFavorites(
11988
+ self,
11989
+ ids:str=None,
11990
+ ) -> None:
11897
11991
  """
11898
11992
  Remove one or more shows from the current user's 'Your Library'.
11899
11993
 
@@ -11904,6 +11998,7 @@ class SpotifyClient:
11904
11998
  A comma-separated list of the Spotify IDs for the shows.
11905
11999
  Maximum: 50 IDs.
11906
12000
  Example: `6kAsbP8pxwaU2kPibKTuHE,4rOoJ6Egrf8K2IrywzwOMk`
12001
+ If null, the currently playing context uri id value is used.
11907
12002
 
11908
12003
  Raises:
11909
12004
  SpotifyWebApiError:
@@ -11935,6 +12030,14 @@ class SpotifyClient:
11935
12030
  apiMethodParms.AppendKeyValue("ids", ids)
11936
12031
  _logsi.LogMethodParmList(SILevel.Verbose, "Remove show(s) from user favorites", apiMethodParms)
11937
12032
 
12033
+ # if ids not specified, then return currently playing id value.
12034
+ if (ids is None) or (len(ids.strip()) == 0):
12035
+ uri = self._GetPlayerNowPlayingShowUri()
12036
+ if uri is not None:
12037
+ ids = SpotifyClient.GetIdFromUri(uri)
12038
+ else:
12039
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
12040
+
11938
12041
  # build a list of all item id's.
11939
12042
  # remove any leading / trailing spaces in case user put a space between the items.
11940
12043
  arrIds:list[str] = ids.split(',')
@@ -12348,9 +12451,10 @@ class SpotifyClient:
12348
12451
  _logsi.LeaveMethod(SILevel.Debug, apiMethodName)
12349
12452
 
12350
12453
 
12351
- def SaveAudiobookFavorites(self,
12352
- ids:str
12353
- ) -> None:
12454
+ def SaveAudiobookFavorites(
12455
+ self,
12456
+ ids:str=None,
12457
+ ) -> None:
12354
12458
  """
12355
12459
  Save one or more audiobooks to the current user's 'Your Library'.
12356
12460
 
@@ -12392,6 +12496,14 @@ class SpotifyClient:
12392
12496
  apiMethodParms.AppendKeyValue("ids", ids)
12393
12497
  _logsi.LogMethodParmList(SILevel.Verbose, "Save audiobook(s) to user favorites", apiMethodParms)
12394
12498
 
12499
+ # if ids not specified, then return currently playing id value.
12500
+ if (ids is None) or (len(ids.strip()) == 0):
12501
+ uri = self._GetPlayerNowPlayingAudiobookUri()
12502
+ if uri is not None:
12503
+ ids = SpotifyClient.GetIdFromUri(uri)
12504
+ else:
12505
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
12506
+
12395
12507
  # build a list of all item id's.
12396
12508
  # remove any leading / trailing spaces in case user put a space between the items.
12397
12509
  arrIds:list[str] = ids.split(',')
@@ -12427,9 +12539,10 @@ class SpotifyClient:
12427
12539
  _logsi.LeaveMethod(SILevel.Debug, apiMethodName)
12428
12540
 
12429
12541
 
12430
- def SaveEpisodeFavorites(self,
12431
- ids:str
12432
- ) -> None:
12542
+ def SaveEpisodeFavorites(
12543
+ self,
12544
+ ids:str=None,
12545
+ ) -> None:
12433
12546
  """
12434
12547
  Save one or more episodes to the current user's 'Your Library'.
12435
12548
 
@@ -12440,6 +12553,7 @@ class SpotifyClient:
12440
12553
  A comma-separated list of the Spotify IDs for the episodes.
12441
12554
  Maximum: 50 IDs.
12442
12555
  Example: `6kAsbP8pxwaU2kPibKTuHE,4rOoJ6Egrf8K2IrywzwOMk`
12556
+ If null, the currently playing context uri id value is used.
12443
12557
 
12444
12558
  Raises:
12445
12559
  SpotifyWebApiError:
@@ -12471,6 +12585,14 @@ class SpotifyClient:
12471
12585
  apiMethodParms.AppendKeyValue("ids", ids)
12472
12586
  _logsi.LogMethodParmList(SILevel.Verbose, "Save episode(s) to user favorites", apiMethodParms)
12473
12587
 
12588
+ # if ids not specified, then return currently playing id value.
12589
+ if (ids is None) or (len(ids.strip()) == 0):
12590
+ uri = self._GetPlayerNowPlayingUri('episode')
12591
+ if uri is not None:
12592
+ ids = SpotifyClient.GetIdFromUri(uri)
12593
+ else:
12594
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
12595
+
12474
12596
  # build a list of all item id's.
12475
12597
  # remove any leading / trailing spaces in case user put a space between the items.
12476
12598
  arrIds:list[str] = ids.split(',')
@@ -12506,9 +12628,10 @@ class SpotifyClient:
12506
12628
  _logsi.LeaveMethod(SILevel.Debug, apiMethodName)
12507
12629
 
12508
12630
 
12509
- def SaveShowFavorites(self,
12510
- ids:str
12511
- ) -> None:
12631
+ def SaveShowFavorites(
12632
+ self,
12633
+ ids:str=None,
12634
+ ) -> None:
12512
12635
  """
12513
12636
  Save one or more shows to the current user's 'Your Library'.
12514
12637
 
@@ -12519,6 +12642,7 @@ class SpotifyClient:
12519
12642
  A comma-separated list of the Spotify IDs for the shows.
12520
12643
  Maximum: 50 IDs.
12521
12644
  Example: `6kAsbP8pxwaU2kPibKTuHE,4rOoJ6Egrf8K2IrywzwOMk`
12645
+ If null, the currently playing context uri id value is used.
12522
12646
 
12523
12647
  Raises:
12524
12648
  SpotifyWebApiError:
@@ -12550,6 +12674,14 @@ class SpotifyClient:
12550
12674
  apiMethodParms.AppendKeyValue("ids", ids)
12551
12675
  _logsi.LogMethodParmList(SILevel.Verbose, "Save show(s) to user favorites", apiMethodParms)
12552
12676
 
12677
+ # if ids not specified, then return currently playing id value.
12678
+ if (ids is None) or (len(ids.strip()) == 0):
12679
+ uri = self._GetPlayerNowPlayingShowUri()
12680
+ if uri is not None:
12681
+ ids = SpotifyClient.GetIdFromUri(uri)
12682
+ else:
12683
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
12684
+
12553
12685
  # build a list of all item id's.
12554
12686
  # remove any leading / trailing spaces in case user put a space between the items.
12555
12687
  arrIds:list[str] = ids.split(',')
@@ -12709,6 +12841,7 @@ class SpotifyClient:
12709
12841
  # limit (int):
12710
12842
  # The maximum number of items to return in a page of items.
12711
12843
  # Default: 20, Range: 1 to 50.
12844
+ # See the `limitTotal` argument for automatic paging option.
12712
12845
  # offset (int):
12713
12846
  # The page index offset of the first item to return.
12714
12847
  # Use with limit to get the next set of items.
@@ -12878,6 +13011,7 @@ class SpotifyClient:
12878
13011
  limit (int):
12879
13012
  The maximum number of items to return in a page of items when manual paging is used.
12880
13013
  Default: 20, Range: 1 to 50.
13014
+ See the `limitTotal` argument for automatic paging option.
12881
13015
  offset (int):
12882
13016
  The page index offset of the first item to return.
12883
13017
  Use with limit to get the next set of items.
@@ -13068,6 +13202,7 @@ class SpotifyClient:
13068
13202
  limit (int):
13069
13203
  The maximum number of items to return in a page of items when manual paging is used.
13070
13204
  Default: 20, Range: 1 to 50.
13205
+ See the `limitTotal` argument for automatic paging option.
13071
13206
  offset (int):
13072
13207
  The page index offset of the first item to return.
13073
13208
  Use with limit to get the next set of items.
@@ -13258,6 +13393,7 @@ class SpotifyClient:
13258
13393
  limit (int):
13259
13394
  The maximum number of items to return in a page of items when manual paging is used.
13260
13395
  Default: 20, Range: 1 to 50.
13396
+ See the `limitTotal` argument for automatic paging option.
13261
13397
  offset (int):
13262
13398
  The page index offset of the first item to return.
13263
13399
  Use with limit to get the next set of items.
@@ -13450,6 +13586,7 @@ class SpotifyClient:
13450
13586
  limit (int):
13451
13587
  The maximum number of items to return in a page of items when manual paging is used.
13452
13588
  Default: 20, Range: 1 to 50.
13589
+ See the `limitTotal` argument for automatic paging option.
13453
13590
  offset (int):
13454
13591
  The page index offset of the first item to return.
13455
13592
  Use with limit to get the next set of items.
@@ -13640,6 +13777,7 @@ class SpotifyClient:
13640
13777
  limit (int):
13641
13778
  The maximum number of items to return in a page of items when manual paging is used.
13642
13779
  Default: 20, Range: 1 to 50.
13780
+ See the `limitTotal` argument for automatic paging option.
13643
13781
  offset (int):
13644
13782
  The page index offset of the first item to return.
13645
13783
  Use with limit to get the next set of items.
@@ -13830,6 +13968,7 @@ class SpotifyClient:
13830
13968
  limit (int):
13831
13969
  The maximum number of items to return in a page of items when manual paging is used.
13832
13970
  Default: 20, Range: 1 to 50.
13971
+ See the `limitTotal` argument for automatic paging option.
13833
13972
  offset (int):
13834
13973
  The page index offset of the first item to return.
13835
13974
  Use with limit to get the next set of items.
@@ -14020,6 +14159,7 @@ class SpotifyClient:
14020
14159
  limit (int):
14021
14160
  The maximum number of items to return in a page of items when manual paging is used.
14022
14161
  Default: 20, Range: 1 to 50.
14162
+ See the `limitTotal` argument for automatic paging option.
14023
14163
  offset (int):
14024
14164
  The page index offset of the first item to return.
14025
14165
  Use with limit to get the next set of items.
@@ -380,7 +380,7 @@ class ZeroconfConnect:
380
380
  apiMethodParms.AppendKeyValue("username", username)
381
381
  apiMethodParms.AppendKeyValue("password (with mask)", passwordMaskString(password))
382
382
  apiMethodParms.AppendKeyValue("delay", delay)
383
- _logsi.LogMethodParmList(SILevel.Verbose, "Connecting device to Spotify Connect using specified Username and Password (ip=%s)" % self._HostIpAddress, apiMethodParms)
383
+ _logsi.LogMethodParmList(SILevel.Verbose, "Connecting device to Spotify Connect (ip=%s)" % self._HostIpAddress, apiMethodParms)
384
384
 
385
385
  # validations.
386
386
  if (username is None) or (not isinstance(username,str)):
@@ -505,11 +505,16 @@ class ZeroconfConnect:
505
505
 
506
506
  # trace.
507
507
  apiMethodParms = _logsi.EnterMethodParmList(SILevel.Debug, apiMethodName)
508
+ apiMethodParms.AppendKeyValue("username", username)
509
+ apiMethodParms.AppendKeyValue("password (with mask)", passwordMaskString(password))
510
+ apiMethodParms.AppendKeyValue("loginId", loginId)
508
511
  apiMethodParms.AppendKeyValue("info.Availability", info.Availability)
509
512
  apiMethodParms.AppendKeyValue("info.PublicKey", info.PublicKey)
510
513
  apiMethodParms.AppendKeyValue("info.DeviceId", info.DeviceId)
511
514
  apiMethodParms.AppendKeyValue("info.RemoteName", info.RemoteName)
512
515
  apiMethodParms.AppendKeyValue("info.TokenType", info.TokenType)
516
+ apiMethodParms.AppendKeyValue("info.BrandDisplayName", info.BrandDisplayName)
517
+ apiMethodParms.AppendKeyValue("info.ModelDisplayName", info.ModelDisplayName)
513
518
  _logsi.LogMethodParmList(SILevel.Verbose, "Issuing Spotify Connect Zeroconf addUser request (ip=%s)" % self._HostIpAddress, apiMethodParms)
514
519
 
515
520
  # set request endpoint.
@@ -518,10 +523,7 @@ class ZeroconfConnect:
518
523
  # set request headers.
519
524
  reqHeaders:dict = {
520
525
  'Content-Type': 'application/x-www-form-urlencoded',
521
- #'Connection': 'close',
522
- 'Connection': 'keep-alive',
523
- 'Keep-Alive': '0',
524
- 'Accept-Encoding': 'gzip',
526
+ 'Connection': 'close'
525
527
  }
526
528
 
527
529
  # create credentials and builder objects.
@@ -542,6 +544,9 @@ class ZeroconfConnect:
542
544
  # special processing for tokenType "authorization_code":
543
545
  if info.TokenType == 'authorization_code':
544
546
 
547
+ # trace.
548
+ _logsi.LogVerbose("Spotify Connect token type is '%s' - using Spotify Desktop Client OAuth2 token to connect: '%s' (ip=%s)" % (info.TokenType, info.RemoteName, self._HostIpAddress))
549
+
545
550
  # set defaults used by token type "authorization_code".
546
551
  # - set the clientKey value to null, as it is not used to encrypt / decrypt anything.
547
552
  # - include origin device information in the addUser request.
@@ -555,6 +560,9 @@ class ZeroconfConnect:
555
560
 
556
561
  else:
557
562
 
563
+ # trace.
564
+ _logsi.LogVerbose("Spotify Connect token type is '%s' - using Spotify username and password to connect: '%s' (ip=%s)" % (info.TokenType, info.RemoteName, self._HostIpAddress))
565
+
558
566
  # set defaults used by this token type:
559
567
  # - clientKey should be the getInfo response PublicKey (base64 encoded).
560
568
  # - exclude origin device information from the addUser request.