spotifywebapiPython 1.0.35__py3-none-any.whl → 1.0.37__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.35" -->
12
+ <!-- build env - Package Version = "1.0.37" -->
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.35</br>
74
+ Version 1.0.37</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
@@ -484,6 +484,50 @@ class SpotifyClient:
484
484
  msg.ResponseData = responseData
485
485
 
486
486
 
487
+ def _GetPlayerNowPlayingAlbumUri(self) -> str:
488
+ """
489
+ Returns the album uri value of the currently playing media if something is
490
+ playing; otherwise, null is returned.
491
+ """
492
+ result:str = None
493
+
494
+ # get nowplaying status.
495
+ _logsi.LogVerbose("Querying NowPlaying status of Spotify player")
496
+ nowPlaying:PlayerPlayState = self.GetPlayerNowPlaying()
497
+
498
+ # is a track playing? if so, return the album uri value.
499
+ if nowPlaying is not None:
500
+ _logsi.LogVerbose("NowPlaying data: %s" % str(nowPlaying))
501
+ if nowPlaying.CurrentlyPlayingType in ['track']:
502
+ trackItem:Track = nowPlaying.Item
503
+ if (trackItem is not None) and (trackItem.Album is not None):
504
+ result = trackItem.Album.Uri
505
+
506
+ return result
507
+
508
+
509
+ def _GetPlayerNowPlayingArtistUri(self) -> str:
510
+ """
511
+ Returns the artist uri value of the currently playing media if something is
512
+ playing; otherwise, null is returned.
513
+ """
514
+ result:str = None
515
+
516
+ # get nowplaying status.
517
+ _logsi.LogVerbose("Querying NowPlaying status of Spotify player")
518
+ nowPlaying:PlayerPlayState = self.GetPlayerNowPlaying()
519
+
520
+ # is a track playing? if so, return the artist uri value.
521
+ if nowPlaying is not None:
522
+ _logsi.LogVerbose("NowPlaying data: %s" % str(nowPlaying))
523
+ if nowPlaying.CurrentlyPlayingType in ['track']:
524
+ trackItem:Track = nowPlaying.Item
525
+ if (trackItem is not None) and (len(trackItem.Artists) > 0):
526
+ result = trackItem.Artists[0].Uri
527
+
528
+ return result
529
+
530
+
487
531
  def _GetPlayerNowPlayingUri(self) -> str:
488
532
  """
489
533
  Returns the uri value of the currently playing media if something is
@@ -926,7 +970,7 @@ class SpotifyClient:
926
970
  _logsi.LogMethodParmList(SILevel.Verbose, "Add items to a user's playlist", apiMethodParms)
927
971
 
928
972
  # if uris not specified, then return currently playing uri value.
929
- if uris is None or len(uris.strip() == 0):
973
+ if (uris is None) or (len(uris.strip()) == 0):
930
974
  uris = self._GetPlayerNowPlayingUri()
931
975
  if uris is None:
932
976
  raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'uris'), logsi=_logsi)
@@ -977,7 +1021,8 @@ class SpotifyClient:
977
1021
  name:str=None,
978
1022
  description:str=None,
979
1023
  public:bool=None,
980
- collaborative:bool=None
1024
+ collaborative:bool=None,
1025
+ imagePath:str=None
981
1026
  ) -> None:
982
1027
  """
983
1028
  Change a playlist's details (name, description, and public / private state).
@@ -1001,6 +1046,9 @@ class SpotifyClient:
1001
1046
  If true, the playlist will become collaborative and other users will be able to modify
1002
1047
  the playlist in their Spotify client.
1003
1048
  Note: You can only set collaborative to true on non-public playlists.
1049
+ imagePath (str):
1050
+ A fully-qualified path of an image to display for the playlist.
1051
+ The image must be in JPEG format, and cannot exceed 256KB in Base64 encoded size.
1004
1052
 
1005
1053
  The user must own the playlist.
1006
1054
 
@@ -1021,6 +1069,9 @@ class SpotifyClient:
1021
1069
  A playlist can also be made collaborative by setting the `collaborative` argument to true.
1022
1070
  This means that anyone with the link can add to or remove a track from it.
1023
1071
 
1072
+ If the `imagePath` argument is specified, the `AddPlaylistCoverImage` method is called to
1073
+ upload the image after the playlist details are updated.
1074
+
1024
1075
  <details>
1025
1076
  <summary>Sample Code</summary>
1026
1077
  ```python
@@ -1040,6 +1091,7 @@ class SpotifyClient:
1040
1091
  apiMethodParms.AppendKeyValue("description", description)
1041
1092
  apiMethodParms.AppendKeyValue("public", public)
1042
1093
  apiMethodParms.AppendKeyValue("collaborative", collaborative)
1094
+ apiMethodParms.AppendKeyValue("imagePath", imagePath)
1043
1095
  _logsi.LogMethodParmList(SILevel.Verbose, "Change a playlist details", apiMethodParms)
1044
1096
 
1045
1097
  # if collaborative is True, then force public to false as Spotify requires it.
@@ -1067,6 +1119,13 @@ class SpotifyClient:
1067
1119
  msg.RequestJson = reqData
1068
1120
  self.MakeRequest('PUT', msg)
1069
1121
 
1122
+ # was a playlist image path specified? if so, then assign the image.
1123
+ if imagePath is not None:
1124
+ try:
1125
+ self.AddPlaylistCoverImage(playlistId, imagePath)
1126
+ except Exception as ex:
1127
+ pass # ignore exceptions, as they are already logged.
1128
+
1070
1129
  # process results.
1071
1130
  # no results to process - this is pass or fail.
1072
1131
  return
@@ -1871,7 +1930,8 @@ class SpotifyClient:
1871
1930
  name:str=None,
1872
1931
  description:str=None,
1873
1932
  public:bool=True,
1874
- collaborative:bool=False
1933
+ collaborative:bool=False,
1934
+ imagePath:str=None
1875
1935
  ) -> Playlist:
1876
1936
  """
1877
1937
  Create an empty playlist for a Spotify user.
@@ -1900,6 +1960,9 @@ class SpotifyClient:
1900
1960
  To create collaborative playlists you must have granted `playlist-modify-private`
1901
1961
  and `playlist-modify-public` scope.
1902
1962
  Defaults to false.
1963
+ imagePath (str):
1964
+ A fully-qualified path of an image to display for the playlist.
1965
+ The image must be in JPEG format, and cannot exceed 256KB in Base64 encoded size.
1903
1966
 
1904
1967
  The playlist will be empty until you add tracks.
1905
1968
 
@@ -1912,6 +1975,9 @@ class SpotifyClient:
1912
1975
  This means that anyone with the link can add to or remove a track from it.
1913
1976
 
1914
1977
  Each user is generally limited to a maximum of 11,000 playlists.
1978
+
1979
+ If the `imagePath` argument is specified, the `AddPlaylistCoverImage` method is called to
1980
+ upload the image after the playlist is created.
1915
1981
 
1916
1982
  Returns:
1917
1983
  A `Playlist` object that contains the playlist details.
@@ -1943,6 +2009,7 @@ class SpotifyClient:
1943
2009
  apiMethodParms.AppendKeyValue("description", description)
1944
2010
  apiMethodParms.AppendKeyValue("public", public)
1945
2011
  apiMethodParms.AppendKeyValue("collaborative", collaborative)
2012
+ apiMethodParms.AppendKeyValue("imagePath", imagePath)
1946
2013
  _logsi.LogMethodParmList(SILevel.Verbose, "Create an empty playlist for a user", apiMethodParms)
1947
2014
 
1948
2015
  # if userId is not supplied, then use profile value.
@@ -1970,6 +2037,13 @@ class SpotifyClient:
1970
2037
 
1971
2038
  # process results.
1972
2039
  result = Playlist(root=msg.ResponseData)
2040
+
2041
+ # was a playlist image path specified? if so, then assign the image.
2042
+ if imagePath is not None:
2043
+ try:
2044
+ self.AddPlaylistCoverImage(result.Id, imagePath)
2045
+ except Exception as ex:
2046
+ pass # ignore exceptions, as they are already logged.
1973
2047
 
1974
2048
  # trace.
1975
2049
  _logsi.LogObject(SILevel.Verbose, TRACE_METHOD_RESULT_TYPE % (apiMethodName, type(result).__name__), result, excludeNonPublic=True)
@@ -1989,7 +2063,7 @@ class SpotifyClient:
1989
2063
 
1990
2064
 
1991
2065
  def FollowArtists(self,
1992
- ids:str,
2066
+ ids:str=None,
1993
2067
  ) -> None:
1994
2068
  """
1995
2069
  Add the current user as a follower of one or more artists.
@@ -2001,6 +2075,7 @@ class SpotifyClient:
2001
2075
  A comma-separated list of the Spotify artist IDs.
2002
2076
  A maximum of 50 IDs can be sent in one request.
2003
2077
  Example: `2CIMQHirSU0MQqyYHq0eOx,1IQ2e1buppatiN1bxUVkrk`
2078
+ If null, the currently playing track artist uri id value is used.
2004
2079
 
2005
2080
  Raises:
2006
2081
  SpotifyWebApiError:
@@ -2027,7 +2102,15 @@ class SpotifyClient:
2027
2102
  apiMethodParms = _logsi.EnterMethodParmList(SILevel.Debug, apiMethodName)
2028
2103
  apiMethodParms.AppendKeyValue("ids", ids)
2029
2104
  _logsi.LogMethodParmList(SILevel.Verbose, "Add the current user as a follower of one or more artists", apiMethodParms)
2030
-
2105
+
2106
+ # if ids not specified, then return currently playing artist id value.
2107
+ if (ids is None) or (len(ids.strip()) == 0):
2108
+ uri = self._GetPlayerNowPlayingArtistUri()
2109
+ if uri is not None:
2110
+ ids = SpotifyClient.GetIdFromUri(uri)
2111
+ else:
2112
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
2113
+
2031
2114
  # build a list of all item id's.
2032
2115
  # remove any leading / trailing spaces in case user put a space between the items.
2033
2116
  arrIds:list[str] = ids.split(',')
@@ -9486,7 +9569,7 @@ class SpotifyClient:
9486
9569
 
9487
9570
 
9488
9571
  def RemoveAlbumFavorites(self,
9489
- ids:str
9572
+ ids:str=None
9490
9573
  ) -> None:
9491
9574
  """
9492
9575
  Remove one or more albums from the current user's 'Your Library'.
@@ -9498,6 +9581,7 @@ class SpotifyClient:
9498
9581
  A comma-separated list of the Spotify IDs for the albums.
9499
9582
  Maximum: 50 IDs.
9500
9583
  Example: `6vc9OTcyd3hyzabCmsdnwE,382ObEPsp2rxGrnsizN5TX`
9584
+ If null, the currently playing track album uri id value is used.
9501
9585
 
9502
9586
  Raises:
9503
9587
  SpotifyWebApiError:
@@ -9529,6 +9613,14 @@ class SpotifyClient:
9529
9613
  apiMethodParms.AppendKeyValue("ids", ids)
9530
9614
  _logsi.LogMethodParmList(SILevel.Verbose, "Remove album(s) from user favorites", apiMethodParms)
9531
9615
 
9616
+ # if ids not specified, then return currently playing album id value.
9617
+ if (ids is None) or (len(ids.strip()) == 0):
9618
+ uri = self._GetPlayerNowPlayingAlbumUri()
9619
+ if uri is not None:
9620
+ ids = SpotifyClient.GetIdFromUri(uri)
9621
+ else:
9622
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
9623
+
9532
9624
  # build a list of all item id's.
9533
9625
  # remove any leading / trailing spaces in case user put a space between the items.
9534
9626
  arrIds:list[str] = ids.split(',')
@@ -9783,7 +9875,7 @@ class SpotifyClient:
9783
9875
  _logsi.LogMethodParmList(SILevel.Verbose, "Remove item(s) from a user's playlist", apiMethodParms)
9784
9876
 
9785
9877
  # if uris not specified, then return currently playing uri value.
9786
- if uris is None or len(uris.strip() == 0):
9878
+ if (uris is None) or (len(uris.strip()) == 0):
9787
9879
  uris = self._GetPlayerNowPlayingUri()
9788
9880
  if uris is None:
9789
9881
  raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'uris'), logsi=_logsi)
@@ -9959,7 +10051,7 @@ class SpotifyClient:
9959
10051
  _logsi.LogMethodParmList(SILevel.Verbose, "Remove track(s) from user favorites", apiMethodParms)
9960
10052
 
9961
10053
  # if ids not specified, then return currently playing id value.
9962
- if ids is None or len(ids.strip() == 0):
10054
+ if (ids is None) or (len(ids.strip()) == 0):
9963
10055
  uri = self._GetPlayerNowPlayingUri()
9964
10056
  if uri is not None:
9965
10057
  ids = SpotifyClient.GetIdFromUri(uri)
@@ -10203,7 +10295,7 @@ class SpotifyClient:
10203
10295
 
10204
10296
 
10205
10297
  def SaveAlbumFavorites(self,
10206
- ids:str
10298
+ ids:str=None
10207
10299
  ) -> None:
10208
10300
  """
10209
10301
  Save one or more albums to the current user's 'Your Library'.
@@ -10215,6 +10307,7 @@ class SpotifyClient:
10215
10307
  A comma-separated list of the Spotify IDs for the albums.
10216
10308
  Maximum: 50 IDs.
10217
10309
  Example: `6vc9OTcyd3hyzabCmsdnwE,382ObEPsp2rxGrnsizN5TX,2noRn2Aes5aoNVsU6iWThc`
10310
+ If null, the currently playing track album uri id value is used.
10218
10311
 
10219
10312
  Raises:
10220
10313
  SpotifyWebApiError:
@@ -10246,6 +10339,14 @@ class SpotifyClient:
10246
10339
  apiMethodParms.AppendKeyValue("ids", ids)
10247
10340
  _logsi.LogMethodParmList(SILevel.Verbose, "Save album(s) to user favorites", apiMethodParms)
10248
10341
 
10342
+ # if ids not specified, then return currently playing album id value.
10343
+ if (ids is None) or (len(ids.strip()) == 0):
10344
+ uri = self._GetPlayerNowPlayingAlbumUri()
10345
+ if uri is not None:
10346
+ ids = SpotifyClient.GetIdFromUri(uri)
10347
+ else:
10348
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
10349
+
10249
10350
  # build a list of all item id's.
10250
10351
  # remove any leading / trailing spaces in case user put a space between the items.
10251
10352
  arrIds:list[str] = ids.split(',')
@@ -10564,7 +10665,7 @@ class SpotifyClient:
10564
10665
  _logsi.LogMethodParmList(SILevel.Verbose, "Save track(s) to user favorites", apiMethodParms)
10565
10666
 
10566
10667
  # if ids not specified, then return currently playing id value.
10567
- if ids is None or len(ids.strip() == 0):
10668
+ if (ids is None) or (len(ids.strip()) == 0):
10568
10669
  uri = self._GetPlayerNowPlayingUri()
10569
10670
  if uri is not None:
10570
10671
  ids = SpotifyClient.GetIdFromUri(uri)
@@ -12681,7 +12782,7 @@ class SpotifyClient:
12681
12782
 
12682
12783
 
12683
12784
  def UnfollowArtists(self,
12684
- ids:str,
12785
+ ids:str=None,
12685
12786
  ) -> None:
12686
12787
  """
12687
12788
  Remove the current user as a follower of one or more artists.
@@ -12693,6 +12794,7 @@ class SpotifyClient:
12693
12794
  A comma-separated list of Spotify artist IDs.
12694
12795
  A maximum of 50 IDs can be sent in one request.
12695
12796
  Example: `2CIMQHirSU0MQqyYHq0eOx,1IQ2e1buppatiN1bxUVkrk`
12797
+ If null, the currently playing track artist uri id value is used.
12696
12798
 
12697
12799
  Raises:
12698
12800
  SpotifyWebApiError:
@@ -12720,6 +12822,14 @@ class SpotifyClient:
12720
12822
  apiMethodParms.AppendKeyValue("ids", ids)
12721
12823
  _logsi.LogMethodParmList(SILevel.Verbose, "Remove the current user as a follower of one or more artists", apiMethodParms)
12722
12824
 
12825
+ # if ids not specified, then return currently playing artist id value.
12826
+ if (ids is None) or (len(ids.strip()) == 0):
12827
+ uri = self._GetPlayerNowPlayingArtistUri()
12828
+ if uri is not None:
12829
+ ids = SpotifyClient.GetIdFromUri(uri)
12830
+ else:
12831
+ raise SpotifyApiError(SAAppMessages.ARGUMENT_REQUIRED_ERROR % (apiMethodName, 'ids'), logsi=_logsi)
12832
+
12723
12833
  # build a list of all item id's.
12724
12834
  # remove any leading / trailing spaces in case user put a space between the items.
12725
12835
  arrIds:list[str] = ids.split(',')