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.
- {spotifywebapiPython-1.0.35.dist-info → spotifywebapiPython-1.0.37.dist-info}/METADATA +1 -1
- {spotifywebapiPython-1.0.35.dist-info → spotifywebapiPython-1.0.37.dist-info}/RECORD +20 -20
- spotifywebapipython/const.py +1 -1
- spotifywebapipython/docs/__init__.html +22 -2
- spotifywebapipython/docs/index.html +2 -2
- spotifywebapipython/docs/search.js +1 -1
- spotifywebapipython/docs/spotifywebapiPython/const.html +3 -3
- spotifywebapipython/docs/spotifywebapiPython/saappmessages.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/sautils.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifyapierror.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifyapimessage.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifyauthtoken.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifyclient.html +71 -12
- spotifywebapipython/docs/spotifywebapiPython/spotifydiscovery.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifywebapiauthenticationerror.html +2 -2
- spotifywebapipython/docs/spotifywebapiPython/spotifywebapierror.html +2 -2
- spotifywebapipython/spotifyclient.py +121 -11
- {spotifywebapiPython-1.0.35.dist-info → spotifywebapiPython-1.0.37.dist-info}/LICENSE +0 -0
- {spotifywebapiPython-1.0.35.dist-info → spotifywebapiPython-1.0.37.dist-info}/WHEEL +0 -0
- {spotifywebapiPython-1.0.35.dist-info → spotifywebapiPython-1.0.37.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.
|
|
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.
|
|
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(',')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|