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.
Files changed (21) hide show
  1. spotifywebapipython/const.py +1 -1
  2. spotifywebapipython/docs/__init__.html +20 -2
  3. spotifywebapipython/docs/index.html +2 -2
  4. spotifywebapipython/docs/search.js +1 -1
  5. spotifywebapipython/docs/spotifywebapipython/const.html +3 -3
  6. spotifywebapipython/docs/spotifywebapipython/saappmessages.html +2 -2
  7. spotifywebapipython/docs/spotifywebapipython/sautils.html +2 -2
  8. spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html +2 -2
  9. spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html +2 -2
  10. spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html +2 -2
  11. spotifywebapipython/docs/spotifywebapipython/spotifyclient.html +15 -9
  12. spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html +2 -2
  13. spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html +2 -2
  14. spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html +2 -2
  15. spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html +2 -2
  16. spotifywebapipython/spotifyclient.py +81 -14
  17. {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/METADATA +1 -1
  18. {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/RECORD +21 -21
  19. {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/LICENSE +0 -0
  20. {spotifywebapipython-1.0.254.dist-info → spotifywebapipython-1.0.256.dist-info}/WHEEL +0 -0
  21. {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
- # get Id from uri value.
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
- # get type from uri value.
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 amount of data returned.
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spotifywebapipython
3
- Version: 1.0.254
3
+ Version: 1.0.256
4
4
  Summary: Spotify Web API Python3 Library
5
5
  Author: Todd Lucas
6
6
  Author-email: <thlucas@yahoo.com>
@@ -1,33 +1,33 @@
1
1
  spotifywebapipython/__init__.py,sha256=SnB5BsUGChYgcZHjhZenqYZkb_v3c8aiAUQLkp4lYSY,1205
2
- spotifywebapipython/const.py,sha256=5bQTKnJdcl1SwfWuTHJsb9g0oXT27W-lTMwWf_Vq9ME,3739
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=Bubu3NpCv3rWnvhQSLpiClsaVodRYUC7UcWQCXR72RQ,849557
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=AXwB83jRylZrpeh2vFrY4lqACliQTLLjV8yjk23-cCA,180178
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=cCXWbp1vYiY1mJlEQciAdUylQIcBGXP4tZuovNoCDJU,48523
17
- spotifywebapipython/docs/search.js,sha256=VKniDdrPDGkeKhwm1Xziwd1cUsIQ5XTmmVp0933kmew,8945681
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=h4uWlqGx8XYOZ6sxPTc4pJTx18taakwSitrlxWRMUew,59034
21
- spotifywebapipython/docs/spotifywebapipython/saappmessages.html,sha256=0sLKzAGboOSF2zzZMjLXXfGTtnOqfvaY1cecKWz4Tm0,60895
22
- spotifywebapipython/docs/spotifywebapipython/sautils.html,sha256=MNJ4cfRyA4e4GR5DdincAvmuUlYYwjLEx3vVJIOxWdo,61063
23
- spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html,sha256=ztTM6MGQOt6rvEVP5WaV4L5FQR4bEjXvCcTCBtyzotc,48054
24
- spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html,sha256=k-9K8VJjEAgE5HbhcI7_8UqkMLZjPEdnT6QBGP3WigQ,59210
25
- spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html,sha256=YtHHkL_ml25HBsy75OUdleruB7qxii8_xS--lDgEuho,59256
26
- spotifywebapipython/docs/spotifywebapipython/spotifyclient.html,sha256=rkUQ1b-VN0UP11xP6GWWAjZWzPqQa-qmtOsMM_QjqZA,1634791
27
- spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html,sha256=GIAJfef0PpJh0jzbV3re8cgJsCL8CVpOiccDdMRXA4w,57662
28
- spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html,sha256=8Wrd7wRt2rX8lCYGQNl3n0L7eR3LHz1F26NQfbX69kg,52174
29
- spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html,sha256=aIXaY0JeM8FAz5Uu2Fu-zMGlARQ5H9PkwVO6YcWJIiw,50592
30
- spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html,sha256=9epSKwiWvQm7y1dkvHzUBTwlM1CLk5K4GfEnp7T6DYc,62204
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.254.dist-info/LICENSE,sha256=KGcc9g0zwqNLcWnSn_ezv1UtKyhMENFhvtixpxUPNsE,1177
138
- spotifywebapipython-1.0.254.dist-info/METADATA,sha256=1ogYGbnoQek0MHllJUaQHVP0aN6l_ZgPb5J4vVFHlMw,11644
139
- spotifywebapipython-1.0.254.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
140
- spotifywebapipython-1.0.254.dist-info/top_level.txt,sha256=jTBLFlijKTesYh2dteAz4vb17qjaqWKeDjpnnwTcrjs,20
141
- spotifywebapipython-1.0.254.dist-info/RECORD,,
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,,