spotifywebapiPython 1.0.254__py3-none-any.whl → 1.0.256__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.
- spotifywebapipython/const.py +1 -1
- spotifywebapipython/docs/__init__.html +20 -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 +15 -9
- spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html +2 -2
- spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html +2 -2
- spotifywebapipython/spotifyclient.py +81 -14
- {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/METADATA +1 -1
- {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/RECORD +21 -21
- {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/LICENSE +0 -0
- {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/WHEEL +0 -0
- {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/top_level.txt +0 -0
|
@@ -7252,12 +7252,13 @@ class SpotifyClient:
|
|
|
7252
7252
|
uri:str,
|
|
7253
7253
|
) -> str:
|
|
7254
7254
|
"""
|
|
7255
|
-
Get the id portion from a Spotify uri value.
|
|
7255
|
+
Get the id portion from a Spotify uri (or url) value.
|
|
7256
7256
|
|
|
7257
7257
|
Args:
|
|
7258
7258
|
uri (str):
|
|
7259
|
-
The Spotify URI value.
|
|
7260
|
-
Example: `spotify:track:5v5ETK9WFXAnGQ3MRubKuE`
|
|
7259
|
+
The Spotify URI (or url) value.
|
|
7260
|
+
Example: `spotify:track:5v5ETK9WFXAnGQ3MRubKuE`
|
|
7261
|
+
Example: `https://open.spotify.com/track/5v5ETK9WFXAnGQ3MRubKuE`
|
|
7261
7262
|
|
|
7262
7263
|
Returns:
|
|
7263
7264
|
A string containing the id value.
|
|
@@ -7272,13 +7273,19 @@ class SpotifyClient:
|
|
|
7272
7273
|
if uri is None or len(uri.strip()) == 0:
|
|
7273
7274
|
return result
|
|
7274
7275
|
|
|
7275
|
-
#
|
|
7276
|
+
# is this a uri value (e.g. "spotify:track:5v5ETK9WFXAnGQ3MRubKuE")?
|
|
7276
7277
|
colonCnt:int = uri.count(':')
|
|
7277
7278
|
if colonCnt == 2:
|
|
7278
7279
|
idx:int = uri.rfind(':')
|
|
7279
7280
|
if idx > -1:
|
|
7280
7281
|
result = uri[idx+1:]
|
|
7281
7282
|
|
|
7283
|
+
# is this a url value (e.g. "https://open.spotify.com/track/5v5ETK9WFXAnGQ3MRubKuE")?
|
|
7284
|
+
elif (uri.startswith("http")):
|
|
7285
|
+
idx = uri.rfind("/")
|
|
7286
|
+
if (idx > 0):
|
|
7287
|
+
result = uri[idx + 1:len(uri)]
|
|
7288
|
+
|
|
7282
7289
|
return result
|
|
7283
7290
|
|
|
7284
7291
|
except Exception:
|
|
@@ -11698,12 +11705,13 @@ class SpotifyClient:
|
|
|
11698
11705
|
uri:str,
|
|
11699
11706
|
) -> str:
|
|
11700
11707
|
"""
|
|
11701
|
-
Get the type portion from a Spotify uri value.
|
|
11708
|
+
Get the type portion from a Spotify uri (or url) value.
|
|
11702
11709
|
|
|
11703
11710
|
Args:
|
|
11704
11711
|
uri (str):
|
|
11705
|
-
The Spotify URI value.
|
|
11706
|
-
Example: `spotify:track:5v5ETK9WFXAnGQ3MRubKuE`
|
|
11712
|
+
The Spotify URI (or URL) value.
|
|
11713
|
+
Example: `spotify:track:5v5ETK9WFXAnGQ3MRubKuE`
|
|
11714
|
+
Example: `https://open.spotify.com/track/5v5ETK9WFXAnGQ3MRubKuE`
|
|
11707
11715
|
|
|
11708
11716
|
Returns:
|
|
11709
11717
|
A string containing the type value (e.g. `track`).
|
|
@@ -11718,7 +11726,7 @@ class SpotifyClient:
|
|
|
11718
11726
|
if uri is None or len(uri.strip()) == 0:
|
|
11719
11727
|
return result
|
|
11720
11728
|
|
|
11721
|
-
#
|
|
11729
|
+
# is this a uri value (e.g. "spotify:track:5v5ETK9WFXAnGQ3MRubKuE")?
|
|
11722
11730
|
colonCnt:int = uri.count(':')
|
|
11723
11731
|
if colonCnt == 2:
|
|
11724
11732
|
idxStart:int = uri.find(':')
|
|
@@ -11729,6 +11737,14 @@ class SpotifyClient:
|
|
|
11729
11737
|
if idxEnd > -1:
|
|
11730
11738
|
result = uri[idxStart+1:idxEnd]
|
|
11731
11739
|
|
|
11740
|
+
# is this a url value (e.g. "https://open.spotify.com/track/5v5ETK9WFXAnGQ3MRubKuE")?
|
|
11741
|
+
elif (uri.startswith("http")):
|
|
11742
|
+
idxR = uri.rfind("/")
|
|
11743
|
+
if (idxR > 0):
|
|
11744
|
+
idxL = uri.rfind("/", 0, idxR - 1)
|
|
11745
|
+
if (idxR > -1):
|
|
11746
|
+
result = uri[idxL + 1:idxR]
|
|
11747
|
+
|
|
11732
11748
|
return result
|
|
11733
11749
|
|
|
11734
11750
|
except Exception as ex:
|
|
@@ -12514,6 +12530,7 @@ class SpotifyClient:
|
|
|
12514
12530
|
delay:float=0.50,
|
|
12515
12531
|
resolveDeviceId:bool=True,
|
|
12516
12532
|
shuffle:bool=None,
|
|
12533
|
+
playShowLatestEpisode:bool=None,
|
|
12517
12534
|
) -> None:
|
|
12518
12535
|
"""
|
|
12519
12536
|
Start playing one or more tracks of the specified context on a Spotify Connect device.
|
|
@@ -12565,6 +12582,11 @@ class SpotifyClient:
|
|
|
12565
12582
|
True to enable player shuffle mode; False to disable player shuffle mode;
|
|
12566
12583
|
None to use current player shuffle mode.
|
|
12567
12584
|
Default is None.
|
|
12585
|
+
playShowLatestEpisode (bool):
|
|
12586
|
+
True to play the most current episode of a podcast show, starting at the beginning;
|
|
12587
|
+
otherwise, False to resume playing of the podcast episode that was previously played.
|
|
12588
|
+
Default is False.
|
|
12589
|
+
This argument is only considered for `show` contexts.
|
|
12568
12590
|
|
|
12569
12591
|
Raises:
|
|
12570
12592
|
SpotifyWebApiError:
|
|
@@ -12628,6 +12650,7 @@ class SpotifyClient:
|
|
|
12628
12650
|
apiMethodParms.AppendKeyValue("delay", delay)
|
|
12629
12651
|
apiMethodParms.AppendKeyValue("resolveDeviceId (DEPRECATED)", resolveDeviceId)
|
|
12630
12652
|
apiMethodParms.AppendKeyValue("shuffle", shuffle)
|
|
12653
|
+
apiMethodParms.AppendKeyValue("playShowLatestEpisode", playShowLatestEpisode)
|
|
12631
12654
|
_logsi.LogMethodParmList(SILevel.Verbose, "Spotify Connect device play context", apiMethodParms)
|
|
12632
12655
|
|
|
12633
12656
|
# validations.
|
|
@@ -12636,6 +12659,8 @@ class SpotifyClient:
|
|
|
12636
12659
|
positionMS = 0
|
|
12637
12660
|
if (offsetPosition is None) or (offsetPosition < 0):
|
|
12638
12661
|
offsetPosition = 0
|
|
12662
|
+
if (playShowLatestEpisode is None):
|
|
12663
|
+
playShowLatestEpisode = False
|
|
12639
12664
|
|
|
12640
12665
|
# if shuffle specified, then we will reset the offset argument values
|
|
12641
12666
|
# since we are playing things in random order anyway.
|
|
@@ -12650,6 +12675,41 @@ class SpotifyClient:
|
|
|
12650
12675
|
# are spotify web player credentials configured? if so, then we will use them to create
|
|
12651
12676
|
# an elevated authorization access token for the Spotify Web API endpoint call.
|
|
12652
12677
|
accessTokenHeaderValue:str = self._GetSpotifyWebPlayerTokenHeaderValue(scDevice)
|
|
12678
|
+
|
|
12679
|
+
# did caller request to play the most current podcast show episode?
|
|
12680
|
+
if (playShowLatestEpisode == True):
|
|
12681
|
+
|
|
12682
|
+
if (self.GetTypeFromUri(contextUri) == SpotifyMediaTypes.SHOW.value):
|
|
12683
|
+
|
|
12684
|
+
try:
|
|
12685
|
+
|
|
12686
|
+
# trace.
|
|
12687
|
+
_logsi.LogVerbose("playShowLatestEpisode=True was specified; retrieving latest show episode")
|
|
12688
|
+
|
|
12689
|
+
# get episodes for the specified show.
|
|
12690
|
+
# at this point, it could be either an audiobook or podcast (both are shows).
|
|
12691
|
+
showId = self.GetIdFromUri(contextUri)
|
|
12692
|
+
showEpisodes:PageObject = self.GetShowEpisodes(showId, limitTotal=2)
|
|
12693
|
+
if (showEpisodes.ItemsCount > 0):
|
|
12694
|
+
|
|
12695
|
+
# get the most current show episode details.
|
|
12696
|
+
episodeUri = showEpisodes.Items[0].Uri
|
|
12697
|
+
episodeId = showEpisodes.Items[0].Id
|
|
12698
|
+
|
|
12699
|
+
# is this an audiobook episode? or a podcast episode?
|
|
12700
|
+
# if podcast episode, then play it.
|
|
12701
|
+
if (not self.IsChapterEpisode(episodeId)):
|
|
12702
|
+
self.PlayerMediaPlayTracks(episodeUri, deviceId=scDevice, delay=delay, shuffle=None)
|
|
12703
|
+
return
|
|
12704
|
+
|
|
12705
|
+
# if audiobook episode, then just play the context which will automatically
|
|
12706
|
+
# pickup where it left off the last time.
|
|
12707
|
+
|
|
12708
|
+
except Exception as ex:
|
|
12709
|
+
|
|
12710
|
+
# trace.
|
|
12711
|
+
_logsi.LogVerbose("playShowLatestEpisode=True was specified; could not determine if show was an audiobook or podcast")
|
|
12712
|
+
# ignore exceptions, and just play the context.
|
|
12653
12713
|
|
|
12654
12714
|
# is this an active Sonos device?
|
|
12655
12715
|
# Sonos device can still be active, even if there is no active device in Spotify playstate.
|
|
@@ -12763,6 +12823,10 @@ class SpotifyClient:
|
|
|
12763
12823
|
# trace.
|
|
12764
12824
|
_logsi.LogVerbose("Context will be played on the Spotify Connect device via Spotify Web API")
|
|
12765
12825
|
|
|
12826
|
+
# get uri parts.
|
|
12827
|
+
uriType:str = self.GetTypeFromUri(contextUri)
|
|
12828
|
+
uriId:str = self.GetIdFromUri(contextUri)
|
|
12829
|
+
|
|
12766
12830
|
# get current player state.
|
|
12767
12831
|
playerState:PlayerPlayState = self.GetPlayerPlaybackState(additionalTypes=SpotifyMediaTypes.EPISODE.value)
|
|
12768
12832
|
|
|
@@ -12779,9 +12843,6 @@ class SpotifyClient:
|
|
|
12779
12843
|
# is shuffle enabled? and is this a Spotify URI value (e.g. `spotify:type:id`)?
|
|
12780
12844
|
if (shuffle or playerState.IsShuffleEnabled) and (self.IsSpotifyUri(contextUri)):
|
|
12781
12845
|
|
|
12782
|
-
# get uri parts.
|
|
12783
|
-
uriType:str = self.GetTypeFromUri(contextUri)
|
|
12784
|
-
uriId:str = self.GetIdFromUri(contextUri)
|
|
12785
12846
|
uriItems:PageObject = None
|
|
12786
12847
|
|
|
12787
12848
|
# wrap this in a try, as errors will be returned if context contains
|
|
@@ -12793,9 +12854,7 @@ class SpotifyClient:
|
|
|
12793
12854
|
|
|
12794
12855
|
# get number of items in the context, up to 50 max.
|
|
12795
12856
|
# we limit it to 50 to keep it fast, as some context lists are quite large!
|
|
12796
|
-
# note that playlist type is the only type we can limit the
|
|
12797
|
-
# note that offset cannot be specified for artist context type; a `400 - Bad Request
|
|
12798
|
-
# Can't have offset for context type: ARTIST` error is returned if specified.
|
|
12857
|
+
# note that playlist type is the only type we can limit the fields to be returned.
|
|
12799
12858
|
if (uriType == SpotifyMediaTypes.PLAYLIST.value):
|
|
12800
12859
|
uriItems = self.GetPlaylistItems(uriId, limitTotal=50, fields="items(track(name))")
|
|
12801
12860
|
elif (uriType == SpotifyMediaTypes.ALBUM.value):
|
|
@@ -12813,6 +12872,14 @@ class SpotifyClient:
|
|
|
12813
12872
|
offsetPosition = random.randint(0, uriItems.ItemsCount - 1)
|
|
12814
12873
|
_logsi.LogVerbose("Shuffle is enabled; setting random offsetPosition to %s" % str(offsetPosition))
|
|
12815
12874
|
|
|
12875
|
+
# offset cannot be specified for artist context type, otherwise the following error
|
|
12876
|
+
# is returneed: `400 - Bad Request can't have offset for context type: ARTIST`.
|
|
12877
|
+
if (uriType == SpotifyMediaTypes.ARTIST.value):
|
|
12878
|
+
if (offsetUri is not None) or (offsetPosition > 0):
|
|
12879
|
+
_logsi.LogVerbose("Context uri type is artist; ignoring offsetPosition and offsetUri values")
|
|
12880
|
+
offsetPosition = 0
|
|
12881
|
+
offsetUri = None
|
|
12882
|
+
|
|
12816
12883
|
# build spotify web api request parameters.
|
|
12817
12884
|
reqData:dict = \
|
|
12818
12885
|
{
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
spotifywebapipython/__init__.py,sha256=SnB5BsUGChYgcZHjhZenqYZkb_v3c8aiAUQLkp4lYSY,1205
|
|
2
|
-
spotifywebapipython/const.py,sha256=
|
|
2
|
+
spotifywebapipython/const.py,sha256=M9sIBcweqAbQT1Brp430jwTzfodj96MSa2xPtkO3oG8,3739
|
|
3
3
|
spotifywebapipython/saappmessages.py,sha256=KWy4H0ePYARZgtGYc2CHXRY0JOQ0bqr0JuDKRBu-wjA,4645
|
|
4
4
|
spotifywebapipython/sautils.py,sha256=j3f_Lu3Tb5D7-Gd2rJ2Ep901W-4XDp6Vq6XXVl8DX5I,8098
|
|
5
5
|
spotifywebapipython/spotifyapierror.py,sha256=23_CYlxWN0BceYYCLpBpunl55vEwPr_wFf34l74xzeA,1855
|
|
6
6
|
spotifywebapipython/spotifyapimessage.py,sha256=wCnW8jYMLS3x9kjyXPgXXZqaf1HeMTTXzU8u_Dm5pfA,8447
|
|
7
7
|
spotifywebapipython/spotifyauthtoken.py,sha256=iVg2Pa5mfMqYe4qgc5H8td6JzJlaDqk4vMEhH5LmtfI,9289
|
|
8
|
-
spotifywebapipython/spotifyclient.py,sha256=
|
|
8
|
+
spotifywebapipython/spotifyclient.py,sha256=a17f9cQBZrTafD4v0cBMgFT5hxQwGVbnIxSDlR2fc00,853246
|
|
9
9
|
spotifywebapipython/spotifydiscovery.py,sha256=cyysxl8PQj9yGHVbaqhSF3SStlrp-NvfGAudM-dDmg0,20290
|
|
10
10
|
spotifywebapipython/spotifymediatypes.py,sha256=MkHdPc1BF5hWo4WA-b4PtoihNKJMTXOe9JdnGpzp79c,1608
|
|
11
11
|
spotifywebapipython/spotifywebapiauthenticationerror.py,sha256=5A0MKvYo3Ypv0ZeSSfLHuFLwzoUUu044bBoUgMfNXNw,3940
|
|
12
12
|
spotifywebapipython/spotifywebapierror.py,sha256=5cga9213J_nFQ0UX4vSn3dpyinASKTRiH0wAR4nLjvs,3147
|
|
13
13
|
spotifywebapipython/spotifywebplayertoken.py,sha256=axj1j1lM7COiiZfpElkJRdnk4AmE6bAQcjKshUIz1Nk,35813
|
|
14
|
-
spotifywebapipython/docs/__init__.html,sha256=
|
|
14
|
+
spotifywebapipython/docs/__init__.html,sha256=tZP0DSBZSXYTqclFkHWVTwIUDXVc_j8of1fGDpDEQdI,181125
|
|
15
15
|
spotifywebapipython/docs/codecopy.js,sha256=ryuoZwLIL03YitjjFzn49UO5ta7-OBos6LNA3qHhFzs,3120
|
|
16
|
-
spotifywebapipython/docs/index.html,sha256=
|
|
17
|
-
spotifywebapipython/docs/search.js,sha256=
|
|
16
|
+
spotifywebapipython/docs/index.html,sha256=4wVCoGmPz22QaxlrCOBBoGlycMJg7ugnrZszd_Mjg38,48523
|
|
17
|
+
spotifywebapipython/docs/search.js,sha256=FZPlz9oM11zplFClPIv4YkacnGkZbPihs2NU8JVbbbI,8951356
|
|
18
18
|
spotifywebapipython/docs/spotifywebapipython.ico,sha256=YImj39fqqSPSuB2-sMDlUYDd6YwRfQeJRtq4FjwWglg,16410
|
|
19
19
|
spotifywebapipython/docs/spotifywebapipython_OLD.ico,sha256=YIv5LjcD4bTIJQSOr8jjwbWaeB3QkElRwkTOePiGbZo,14904
|
|
20
|
-
spotifywebapipython/docs/spotifywebapipython/const.html,sha256=
|
|
21
|
-
spotifywebapipython/docs/spotifywebapipython/saappmessages.html,sha256=
|
|
22
|
-
spotifywebapipython/docs/spotifywebapipython/sautils.html,sha256=
|
|
23
|
-
spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html,sha256=
|
|
24
|
-
spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html,sha256=
|
|
25
|
-
spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html,sha256=
|
|
26
|
-
spotifywebapipython/docs/spotifywebapipython/spotifyclient.html,sha256=
|
|
27
|
-
spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html,sha256=
|
|
28
|
-
spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html,sha256=
|
|
29
|
-
spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html,sha256=
|
|
30
|
-
spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html,sha256=
|
|
20
|
+
spotifywebapipython/docs/spotifywebapipython/const.html,sha256=6w21d7taCvDLE-cR0XM06T78DiCRj495asxGTv_JskE,59034
|
|
21
|
+
spotifywebapipython/docs/spotifywebapipython/saappmessages.html,sha256=O7gWFOZsnbbVIz0yaGb4fiHqQdKKTG4saCXdiEjepgY,60895
|
|
22
|
+
spotifywebapipython/docs/spotifywebapipython/sautils.html,sha256=qvxzg-O8ztRFmnoB0OpAuaLfM7OAUndDWn06jfRmI_s,61063
|
|
23
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html,sha256=HFPrZ4_ubjBLUw6lGqmutvgHXO7nfowqt6d6hIC1bSA,48054
|
|
24
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html,sha256=ve6hx4x7PbbmLy5-E-HyveFK1bqBJCjYuvQexcCwhi4,59210
|
|
25
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html,sha256=mfUrMqN4hDcsF7rWlPZlIj-l-pjTGxDMFAK1_PRaF-Q,59256
|
|
26
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyclient.html,sha256=k1MnXmkJT4RvTg0l1Udok1wWdPj5I_kOCSZZsvpnLY4,1635516
|
|
27
|
+
spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html,sha256=D-0CJ-CV8ij-0ueCQhoE0u-E2ktVsJV1mwOkYyDo0W8,57662
|
|
28
|
+
spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html,sha256=rOZLbn0Zpa-Nz78cW4GDWthkbviuNpPeI-muNRvVujg,52174
|
|
29
|
+
spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html,sha256=yESEI3lACcURXQggf-l3FWd-fnATkRTLS5QiX7Q2NT8,50592
|
|
30
|
+
spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html,sha256=AZ3PbcVZH-4kFm8aCC2_HwW_sol-O32EzJbzj2OZv-A,62204
|
|
31
31
|
spotifywebapipython/models/__init__.py,sha256=RwRQhUX-6EUs8XvStVFpR8EPwoqIAz9K6ref-28qHKI,4423
|
|
32
32
|
spotifywebapipython/models/album.py,sha256=U3Pdw0-EL33LdkeiN31fjZ23rlLk6DNGV8jRmZU7EyQ,5170
|
|
33
33
|
spotifywebapipython/models/albumpagesaved.py,sha256=SBYMhkh5ZsMrRAXl-cm9zsxMDh8gO190ENq6Py2TyGY,2417
|
|
@@ -134,8 +134,8 @@ spotifywebapipython/zeroconfapi/zeroconfgetinfo.py,sha256=APayso_F7lCsdzzrkescgd
|
|
|
134
134
|
spotifywebapipython/zeroconfapi/zeroconfgetinfoalias.py,sha256=FZJM23HIPJSfhXIC3-EuS1XhawheoG5maSp7__k4yBo,2932
|
|
135
135
|
spotifywebapipython/zeroconfapi/zeroconfgetinfodrmmediaformat.py,sha256=c5uk8ljsIuBK3w2jahHKQuoWvm245LOjUBitetXx5Mo,2347
|
|
136
136
|
spotifywebapipython/zeroconfapi/zeroconfresponse.py,sha256=mAPIDj5MG53x8peiScrp7OJblwy_o_Sto4wqE0rGujU,6445
|
|
137
|
-
spotifywebapipython-1.0.
|
|
138
|
-
spotifywebapipython-1.0.
|
|
139
|
-
spotifywebapipython-1.0.
|
|
140
|
-
spotifywebapipython-1.0.
|
|
141
|
-
spotifywebapipython-1.0.
|
|
137
|
+
spotifywebapipython-1.0.256.dist-info/LICENSE,sha256=KGcc9g0zwqNLcWnSn_ezv1UtKyhMENFhvtixpxUPNsE,1177
|
|
138
|
+
spotifywebapipython-1.0.256.dist-info/METADATA,sha256=2R-1HIO57DbWdJ1vgpxurcV435FSrrw6W_Dp06DjhGA,11644
|
|
139
|
+
spotifywebapipython-1.0.256.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
140
|
+
spotifywebapipython-1.0.256.dist-info/top_level.txt,sha256=jTBLFlijKTesYh2dteAz4vb17qjaqWKeDjpnnwTcrjs,20
|
|
141
|
+
spotifywebapipython-1.0.256.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/top_level.txt
RENAMED
|
File without changes
|