spotifywebapiPython 1.0.295__py3-none-any.whl → 1.0.297__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 (26) hide show
  1. spotifywebapipython/const.py +1 -1
  2. spotifywebapipython/docs/__init__.html +16 -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 +2 -2
  12. spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html +2 -2
  13. spotifywebapipython/docs/spotifywebapipython/spotifymediatypes.html +2 -2
  14. spotifywebapipython/docs/spotifywebapipython/spotifytypeprefixes.html +2 -2
  15. spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html +2 -2
  16. spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html +2 -2
  17. spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html +2 -2
  18. spotifywebapipython/spotifyclient.py +2 -1
  19. spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py +10 -1
  20. spotifywebapipython/zeroconfapi/zeroconfconnect.py +213 -0
  21. spotifywebapipython/zeroconfapi/zeroconfgetinfo.py +25 -0
  22. {spotifywebapipython-1.0.295.dist-info → spotifywebapipython-1.0.297.dist-info}/METADATA +1 -1
  23. {spotifywebapipython-1.0.295.dist-info → spotifywebapipython-1.0.297.dist-info}/RECORD +26 -26
  24. {spotifywebapipython-1.0.295.dist-info → spotifywebapipython-1.0.297.dist-info}/LICENSE +0 -0
  25. {spotifywebapipython-1.0.295.dist-info → spotifywebapipython-1.0.297.dist-info}/WHEEL +0 -0
  26. {spotifywebapipython-1.0.295.dist-info → spotifywebapipython-1.0.297.dist-info}/top_level.txt +0 -0
@@ -648,6 +648,219 @@ class ZeroconfConnect:
648
648
  # formulate the blob.
649
649
  blob = builder.build()
650
650
 
651
+ # special processing for Spotify Soloist client:
652
+ elif (infoModelDisplayName in ["soloist"]):
653
+
654
+ # have not figured out how the Spotify Soloist initial session is created.
655
+ raise SpotifyWebApiError(404, "Spotify Soloist initial session has not been created for loginId \"%s\"; use an authorized Spotify App to connect to Soloist for this loginId first" % (loginId), apiMethodName, "Soloist Initial Session Not Created", _logsi)
656
+
657
+ # # trace.
658
+ # _logsi.LogVerbose("TEST TODO REMOVEME Spotify Connect token type is '%s' - using Spotify Desktop Client OAuth2 token to connect: '%s' (ip=%s)" % (info.TokenType, info.RemoteName, self._HostIpAddress))
659
+
660
+ # # validations.
661
+ # if (loginId is None) or (not isinstance(loginId,str)):
662
+ # raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_ACTIVATE_CREDENTIAL_REQUIRED % ("SpotifyConnectLoginId"), logsi=_logsi)
663
+ # if (username is None) or (not isinstance(username,str)):
664
+ # raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_ACTIVATE_CREDENTIAL_REQUIRED % ("SpotifyConnectUsername"), logsi=_logsi)
665
+ # if (password is None) or (not isinstance(password,str)):
666
+ # raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_ACTIVATE_CREDENTIAL_REQUIRED % ("SpotifyConnectPassword"), logsi=_logsi)
667
+
668
+ # # create credentials and builder objects.
669
+ # #credentials:Credentials = Credentials(username, password, AuthenticationTypes.USER_PASS)
670
+ # #credentials:Credentials = Credentials(loginId, password, AuthenticationTypes.SPOTIFY_TOKEN)
671
+ # #builder = BlobBuilder(credentials, info.DeviceId, info.PublicKey)
672
+ # credentials:Credentials = Credentials(username, password, AuthenticationTypes.USER_PASS)
673
+ # builder = BlobBuilder(credentials, info.DeviceId, info.PublicKey)
674
+
675
+ # # set defaults used by token type "authorization_code".
676
+ # # - set the clientKey value to null, as it is not used to encrypt / decrypt anything.
677
+ # # - include origin device information in the addUser request.
678
+ # # - set the tokenType to what is returned from the getInfo response.
679
+ # clientKey = ''
680
+ # includeOriginDeviceInfo = True
681
+ # tokenType = 'auth_token'
682
+ # #tokenType = 'authorization_code'
683
+
684
+ # # get authorization_code access token.
685
+ # blob:str = self._GetSpotifyConnectAuthorizationCodeToken(info, loginId=loginId)
686
+
687
+ # The following Soloist log errors are generated for this auth method if tokenType='authorization_code' is passed.
688
+ # 20:38:55.755 I [f:379] getAuthInfo: success
689
+ # 20:38:55.755 I [f:302] zeroconf: received getInfo
690
+ # 20:39:12.703 I [f:186] zeroconf: received addUser
691
+ # 20:39:12.703 E [f:233] zeroconf: invalid addUser arguments
692
+
693
+ # The following Soloist log errors are generated for this auth method if tokenType='auth_token' is passed.
694
+ # 20:42:32.994 I [f:379] getAuthInfo: success
695
+ # 20:42:32.994 I [f:302] zeroconf: received getInfo
696
+ # 20:42:59.754 I [f:379] getAuthInfo: success
697
+ # 20:42:59.754 I [f:302] zeroconf: received getInfo
698
+ # 20:43:04.163 I [f:263] High request latency: https://spclient.wg.spotify.com/gabo-receiver-service took 250 ms
699
+ # 20:43:04.643 I [f:186] zeroconf: received addUser
700
+ # 20:43:04.643 I [f:280] loginAuthToken
701
+ # 20:43:04.643 I [f:273] SpeakerAuth: Login state changed: LOGGED_OUT -> LOGGING_IN
702
+ # 20:43:04.643 I [f:53 ] Creating session via Connect
703
+ # 20:43:04.643 E [f:78 ] Session creation via Connect failed, error: session_invalid_connect_auth_token
704
+ # 20:43:04.643 E [f:813] Connect session creation failed: session_invalid_connect_auth_token
705
+ # 20:43:04.643 I [f:273] SpeakerAuth: Login state changed: LOGGING_IN -> LOGGED_OUT
706
+
707
+ # # create credentials and builder objects.
708
+ # credentials:Credentials = Credentials(loginId, password, AuthenticationTypes.SPOTIFY_TOKEN)
709
+ # #credentials:Credentials = Credentials(username, password, AuthenticationTypes.SPOTIFY_TOKEN)
710
+ # builder = BlobBuilder(credentials, info.DeviceId, info.PublicKey)
711
+
712
+ # # set defaults used by Soloist client.
713
+ # # - clientKey not required.
714
+ # # - include origin device information in the addUser request.
715
+ # # - use tokenType of "auth_token".
716
+ # clientKey = ''
717
+ # includeOriginDeviceInfo = True
718
+ # tokenType = 'auth_token'
719
+
720
+ # # get access token.
721
+ # blob:str = self._GetSpotifyConnectAccessToken(info, loginId=loginId)
722
+
723
+ # ==================================================================================================================================
724
+
725
+ # # create credentials and builder objects.
726
+ # librespot_username = credentials.get('username','')
727
+ # librespot_password = b64str_to_bytes(credentials.get('auth_data',''))
728
+ # credentials:Credentials = Credentials(librespot_username, librespot_password, AuthenticationTypes.STORED_SPOTIFY_CREDENTIALS)
729
+ # builder = BlobBuilder(credentials, info.DeviceId, info.PublicKey)
730
+
731
+ # # set defaults used by this token type:
732
+ # # - clientKey should be the getInfo response PublicKey (base64 encoded).
733
+ # # - include origin device information in the addUser request.
734
+ # # - tokenType should be set to '' (not used by librespot).
735
+ # clientKey:str = ''
736
+ # includeOriginDeviceInfo = True
737
+ # tokenType = 'auth_token'
738
+
739
+ # # formulate the blob.
740
+ # blob = builder.build()
741
+
742
+ # The following Soloist log info is generated by a successful connection from an authorized Spotify App:
743
+ # 20:30:15.371 I [f:379] getAuthInfo: success
744
+ # 20:30:15.371 I [f:302] zeroconf: received getInfo
745
+ # 20:30:18.700 I [f:379] getAuthInfo: success
746
+ # 20:30:18.700 I [f:302] zeroconf: received getInfo
747
+ # 20:30:18.939 I [f:186] zeroconf: received addUser
748
+ # 20:30:18.939 I [f:280] loginAuthToken
749
+ # 20:30:18.939 I [f:273] SpeakerAuth: Login state changed: LOGGED_OUT -> LOGGING_IN
750
+ # 20:30:18.939 I [f:53 ] Creating session via Connect
751
+ # 20:30:19.275 I [f:263] High request latency: https://accounts.spotify.com/api took 185 ms
752
+ # 20:30:19.275 I [f:218] Auth code grant token exchange succeeded
753
+ # 20:30:19.277 I [f:72 ] Session created via Connect, session: [session:31l77y2al5lnn7mxfrmd4bpfhqke]
754
+ # 20:30:19.278 I [f:808] Connect session created successfully, received AuthenticatedSession
755
+
756
+ # left the following code in for now - still trying to work out how to create the
757
+ # initial Soloist session if one has not been established yet.
758
+
759
+ # # special processing for Spotify Soloist client:
760
+ # elif (infoModelDisplayName in ["soloist"]):
761
+
762
+ # # trace.
763
+ # _logsi.LogVerbose("Spotify Connect token type is '%s' - using soloist authorization credentials to connect: '%s' (ip=%s)" % (info.TokenType, info.RemoteName, self._HostIpAddress))
764
+
765
+ # # validations.
766
+ # # note that userid and password are not needed by soloist, as both of those
767
+ # # are contained in the soloist credentials object. we only need the loginId
768
+ # # value for the credentials lookup.
769
+ # if (loginId is None) or (not isinstance(loginId,str)):
770
+ # raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_ACTIVATE_CREDENTIAL_REQUIRED % ("SpotifyConnectLoginId"), logsi=_logsi)
771
+
772
+ # # we will use credentials from a librespot credentials.json file.
773
+ # # this requires that the user copy the "credentials.json" file from the
774
+ # # librespot cache location (e.g. "/home/user/.cache/spotifyd/credentials.json", etc)
775
+ # # and place it in the same folder as the token storage file with a new name
776
+ # # of "SpotifyWebApiPython_librespot_credentials.json".
777
+
778
+ # # get credentials from librespot credentials file.
779
+ # credentials:dict = self._LoadLibrespotCredentials(loginId)
780
+
781
+ # # create credentials and builder objects.
782
+ # librespot_username = credentials.get('username','')
783
+ # librespot_password = b64str_to_bytes(credentials.get('auth_data',''))
784
+ # credentials:Credentials = Credentials(librespot_username, librespot_password, AuthenticationTypes.STORED_SPOTIFY_CREDENTIALS)
785
+ # builder = BlobBuilder(credentials, info.DeviceId, info.PublicKey)
786
+
787
+ # # set defaults used by this token type:
788
+ # # - clientKey should be the getInfo response PublicKey (base64 encoded).
789
+ # # - include origin device information in the addUser request.
790
+ # # - tokenType should be set to '' (not used by librespot).
791
+ # clientKey:str = ''
792
+ # includeOriginDeviceInfo = True
793
+ # tokenType = 'auth_token'
794
+
795
+ # # formulate the blob.
796
+ # blob = builder.build()
797
+
798
+ # The following Soloist log errors are generated for this auth method if an authorized Spotify App
799
+ # has not yet connected to the Soloist instance.
800
+ # The above code passes pre-configured LIBRESPOT credentials to the Spotify Connect zeroconf process.
801
+ # Note that playback transfer is successful if an authorized Spotify App HAS connected to
802
+ # the Soloist instance, as the device is in the Spotify Web API device list (dynamic device); in
803
+ # this instance, the `_ConnectAddUser` method is not even called!
804
+ # 20:18:17.491 I [f:379] getAuthInfo: success
805
+ # 20:18:17.491 I [f:302] zeroconf: received getInfo
806
+ # 20:18:44.731 I [f:379] getAuthInfo: success
807
+ # 20:18:44.731 I [f:302] zeroconf: received getInfo
808
+ # 20:18:47.458 I [f:186] zeroconf: received addUser
809
+ # 20:18:47.458 I [f:280] loginAuthToken
810
+ # 20:18:47.459 I [f:273] SpeakerAuth: Login state changed: LOGGED_OUT -> LOGGING_IN
811
+ # 20:18:47.459 I [f:53 ] Creating session via Connect
812
+ # 20:18:47.459 E [f:78 ] Session creation via Connect failed, error: session_invalid_connect_auth_token
813
+ # 20:18:47.459 E [f:813] Connect session creation failed: session_invalid_connect_auth_token
814
+ # 20:18:47.459 I [f:273] SpeakerAuth: Login state changed: LOGGING_IN -> LOGGED_OUT
815
+
816
+ # # special processing for Spotify Soloist client:
817
+ # elif (infoModelDisplayName in ["soloist"]):
818
+
819
+ # # trace.
820
+ # _logsi.LogVerbose("Spotify Connect token type is '%s' - using Spotify Desktop Client OAuth2 token to connect to Soloist: '%s' (ip=%s)" % (info.TokenType, info.RemoteName, self._HostIpAddress))
821
+
822
+ # # validations.
823
+ # if (loginId is None) or (not isinstance(loginId,str)):
824
+ # raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_ACTIVATE_CREDENTIAL_REQUIRED % ("SpotifyConnectLoginId"), logsi=_logsi)
825
+ # if (username is None) or (not isinstance(username,str)):
826
+ # raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_ACTIVATE_CREDENTIAL_REQUIRED % ("SpotifyConnectUsername"), logsi=_logsi)
827
+ # if (password is None) or (not isinstance(password,str)):
828
+ # raise SpotifyApiError(SAAppMessages.MSG_SPOTIFY_ACTIVATE_CREDENTIAL_REQUIRED % ("SpotifyConnectPassword"), logsi=_logsi)
829
+
830
+ # # create credentials and builder objects.
831
+ # credentials:Credentials = Credentials(loginId, password, AuthenticationTypes.SPOTIFY_TOKEN)
832
+ # #credentials:Credentials = Credentials(username, password, AuthenticationTypes.SPOTIFY_TOKEN)
833
+ # builder = BlobBuilder(credentials, info.DeviceId, info.PublicKey)
834
+
835
+ # # set defaults used by Soloist client.
836
+ # # - clientKey not required.
837
+ # # - include origin device information in the addUser request.
838
+ # # - use tokenType of "auth_token".
839
+ # clientKey = ''
840
+ # includeOriginDeviceInfo = True
841
+ # tokenType = 'auth_token'
842
+
843
+ # # get access token.
844
+ # blob:str = self._GetSpotifyConnectAccessToken(info, loginId=loginId)
845
+
846
+ # The following Soloist log errors are generated for this auth method if an authorized Spotify App
847
+ # has not yet connected to the Soloist instance.
848
+ # The above code passes pre-configured Spotify Desktop App credentials to the Spotify Connect zeroconf process.
849
+ # Note that playback transfer is successful if an authorized Spotify App HAS connected to
850
+ # the Soloist instance, as the device is in the Spotify Web API device list (dynamic device); in
851
+ # this instance, the `_ConnectAddUser` method is not even called!
852
+ # 20:14:33.640 I [f:379] getAuthInfo: success
853
+ # 20:14:33.640 I [f:302] zeroconf: received getInfo
854
+ # 20:14:36.579 I [f:186] zeroconf: received addUser
855
+ # 20:14:36.579 I [f:280] loginAuthToken
856
+ # 20:14:36.579 I [f:273] SpeakerAuth: Login state changed: LOGGED_OUT -> LOGGING_IN
857
+ # 20:14:36.579 I [f:53 ] Creating session via Connect
858
+ # 20:14:36.579 E [f:78 ] Session creation via Connect failed, error: session_invalid_connect_auth_token
859
+ # 20:14:36.579 E [f:813] Connect session creation failed: session_invalid_connect_auth_token
860
+ # 20:14:36.579 I [f:273] SpeakerAuth: Login state changed: LOGGING_IN -> LOGGED_OUT
861
+ # 20:14:36.579 W [f:552] login failed while API key is configured (action_id=1)
862
+ # 20:14:36.579 W [f:553] login failed: make sure --api-key is valid
863
+
651
864
  # special processing for tokenType "authorization_code":
652
865
  elif info.TokenType == 'authorization_code':
653
866
 
@@ -28,6 +28,7 @@ class ZeroconfGetInfo(ZeroconfResponse):
28
28
  self._AccountReq:str = None
29
29
  self._ActiveUser:str = ""
30
30
  self._Aliases:list[ZeroconfGetInfoAlias] = []
31
+ self._AuthInfo:str = ""
31
32
  self._Availability:str = ""
32
33
  self._BrandDisplayName:str = None
33
34
  self._ClientId:str = None
@@ -55,6 +56,7 @@ class ZeroconfGetInfo(ZeroconfResponse):
55
56
 
56
57
  self._AccountReq = root.get('accountReq', None)
57
58
  self._ActiveUser = root.get('activeUser', "")
59
+ self._AuthInfo = root.get('authInfo', None)
58
60
  self._Availability = root.get('availability', "")
59
61
  self._BrandDisplayName = root.get('brandDisplayName', None)
60
62
  self._ClientId = root.get('clientID', None)
@@ -137,6 +139,27 @@ class ZeroconfGetInfo(ZeroconfResponse):
137
139
  return self._Aliases
138
140
 
139
141
 
142
+ @property
143
+ def AuthInfo(self) -> str:
144
+ """
145
+ This variable is not documented by the Spotify Web API.
146
+
147
+ It appears to be structured authentication information associated with the Soloist
148
+ client/device, in base64-encoded / protobuf format (e.g. "CiQyZjA2M ... BVE9NWmU5RQ==").
149
+
150
+ The maximum length of the auth Info string is unknown.
151
+ """
152
+ return self._AuthInfo
153
+
154
+ @AuthInfo.setter
155
+ def AuthInfo(self, value:str):
156
+ """
157
+ Sets the AuthInfo property value.
158
+ """
159
+ if (isinstance(value, str)) or (value is None):
160
+ self._AuthInfo = value
161
+
162
+
140
163
  @property
141
164
  def Availability(self) -> str:
142
165
  """
@@ -526,6 +549,7 @@ class ZeroconfGetInfo(ZeroconfResponse):
526
549
  'AccountReq': self._AccountReq,
527
550
  'ActiveUser': self._ActiveUser,
528
551
  'Aliases': [ item.ToDictionary() for item in self._Aliases ],
552
+ 'AuthInfo': self._AuthInfo,
529
553
  'Availability': self._Availability,
530
554
  'BrandDisplayName': self._BrandDisplayName,
531
555
  'ClientId': self._ClientId,
@@ -577,6 +601,7 @@ class ZeroconfGetInfo(ZeroconfResponse):
577
601
  if self._AccountReq is not None: msg = '%s\n AccountReq="%s"' % (msg, str(self._AccountReq))
578
602
  if self._ActiveUser is not None: msg = '%s\n ActiveUser="%s"' % (msg, str(self._ActiveUser))
579
603
  if self._Aliases is not None: msg = '%s\n Aliases=%s' % (msg, str(self._Aliases))
604
+ if self._AuthInfo is not None: msg = '%s\n AuthInfo="%s"' % (msg, str(self._AuthInfo))
580
605
  if self._Availability is not None: msg = '%s\n Availability="%s"' % (msg, str(self._Availability))
581
606
  if self._BrandDisplayName is not None: msg = '%s\n BrandDisplayName="%s"' % (msg, str(self._BrandDisplayName))
582
607
  if self._ClientId is not None: msg = '%s\n ClientId="%s"' % (msg, str(self._ClientId))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spotifywebapipython
3
- Version: 1.0.295
3
+ Version: 1.0.297
4
4
  Summary: Spotify Web API Python3 Library
5
5
  Author: Todd Lucas
6
6
  Author-email: <thlucas@yahoo.com>
@@ -1,36 +1,36 @@
1
1
  spotifywebapipython/__init__.py,sha256=ka7F2AsT-UU7KSYKBnfgl5Trojcep5aQspLutg8D-2k,1306
2
- spotifywebapipython/const.py,sha256=awwGnBPDFSGllzyJBb4laq5lTNlvhYMR-RLzqNUgkJs,4100
2
+ spotifywebapipython/const.py,sha256=p_HfjUmxVdFYzMe1ez0TOiY67WHm__72tIwoWKUVai0,4100
3
3
  spotifywebapipython/saappmessages.py,sha256=mVprjpd5CdD8kYeAkLzRvMvIQPmaYtH4UCP5my3QhSk,5065
4
4
  spotifywebapipython/sautils.py,sha256=LZF3UvxaBK35WIg1hO37nbW8j1y-M-oOxRbi1dPR39w,8746
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=hya2_fpOpP9Qyg6_wuWlUmlPwquTT_8-KcDF3Eiwx08,928655
8
+ spotifywebapipython/spotifyclient.py,sha256=gXzeF-32XnGEj2trQezcOfLKZZYdl10GJtBrAzUcqzc,928764
9
9
  spotifywebapipython/spotifydiscovery.py,sha256=cyysxl8PQj9yGHVbaqhSF3SStlrp-NvfGAudM-dDmg0,20290
10
10
  spotifywebapipython/spotifymediatypes.py,sha256=hMjkxhbfTtks0_P8BKmY7qg3EmB2zhH3RT0DbEpb_2s,1628
11
11
  spotifywebapipython/spotifytypeprefixes.py,sha256=3yfpxKF7jF694qBuo-PbKYvm70YwwdBoGj9enOpWsAg,1375
12
12
  spotifywebapipython/spotifywebapiauthenticationerror.py,sha256=5A0MKvYo3Ypv0ZeSSfLHuFLwzoUUu044bBoUgMfNXNw,3940
13
13
  spotifywebapipython/spotifywebapierror.py,sha256=ctYFvkBPlFFEoM_geP6hzwTyC2mPcrYR_zCCNvsmpwc,3870
14
14
  spotifywebapipython/spotifywebplayertoken.py,sha256=axj1j1lM7COiiZfpElkJRdnk4AmE6bAQcjKshUIz1Nk,35813
15
- spotifywebapipython/docs/__init__.html,sha256=JtSr-guXMle9X_Yv7kIPic3UObDEZ0reL41CFY-uGFY,200309
15
+ spotifywebapipython/docs/__init__.html,sha256=q6K1IQH6Nncvxt7rqTxrEfkgEI1nVyDXCuk6pS1YLEA,201076
16
16
  spotifywebapipython/docs/codecopy.js,sha256=ryuoZwLIL03YitjjFzn49UO5ta7-OBos6LNA3qHhFzs,3120
17
- spotifywebapipython/docs/index.html,sha256=xJf0VHpztJSkA6VsSVGzNaw-iv6GnrSBqxmM3uBchIQ,48779
18
- spotifywebapipython/docs/search.js,sha256=RSwQD5rqeW2euLnQBBqZOvma_XUuDLr7rDlfpOyojak,9282696
17
+ spotifywebapipython/docs/index.html,sha256=bSCdukV51abu_Pkcb8_1toNULHZ8MUBKtpccYkSKm7c,48779
18
+ spotifywebapipython/docs/search.js,sha256=cO_kIpoQF1vf5l0_GLuY1B70x8tBKaqfttxIrAlbt0w,9290555
19
19
  spotifywebapipython/docs/spotifywebapipython.ico,sha256=YImj39fqqSPSuB2-sMDlUYDd6YwRfQeJRtq4FjwWglg,16410
20
20
  spotifywebapipython/docs/spotifywebapipython_OLD.ico,sha256=YIv5LjcD4bTIJQSOr8jjwbWaeB3QkElRwkTOePiGbZo,14904
21
- spotifywebapipython/docs/spotifywebapipython/const.html,sha256=Tcjsi9LYXEZFbmWBtiJk4Egtc_lVqH5jiZAR1Zfa1h0,60537
22
- spotifywebapipython/docs/spotifywebapipython/saappmessages.html,sha256=eUZomQzvDBFfzQu6BHHVU4SCFNqQCawM4l3JKMgvKSA,62358
23
- spotifywebapipython/docs/spotifywebapipython/sautils.html,sha256=Vj48R6km9ByQBr1qDt7xMEksJd5q1yq9YBn7LGEsxOM,62031
24
- spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html,sha256=CdmqoIrUTTrEmn2xMQ6C4Oh8Tm-80yttRQGtiF8AgT8,48054
25
- spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html,sha256=wIbRXwpQdYU2oIBRrXaoxUyxLz8sDAjd2knsLZ7b6MM,59210
26
- spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html,sha256=zW9L_cJxE39QeZZwJJIRWuCveFcySx7Hl_Eglc85mow,59256
27
- spotifywebapipython/docs/spotifywebapipython/spotifyclient.html,sha256=Tx848XwTYWY9K2voFP9D1KOYZRU0j0jYQ2_pAzhvbm0,1677607
28
- spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html,sha256=Ea2qpQXcoCxtM_NmB2c8msBEuVFCSXubSwgquIgDvSQ,57662
29
- spotifywebapipython/docs/spotifywebapipython/spotifymediatypes.html,sha256=z3s07Z6db-lyaLNvFAcD6mOu-CGV5yPgF-Ed9JOZn9o,51532
30
- spotifywebapipython/docs/spotifywebapipython/spotifytypeprefixes.html,sha256=Kvr6wXoKKlsGOy3ohIoGwFNzeKBfQrZTzjHzWTKyqhc,52401
31
- spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html,sha256=ywrmX7lWwDOAavLQoszQX55VEr3qrZrlvXQ5JsTYMRA,52174
32
- spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html,sha256=2T6uabOieMRSKs9Bws3cDj2mgK4VncUWgQO_rCR-69o,51484
33
- spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html,sha256=Ww5M-8vude2OKReShl-_qdnFbxZWIxeSRcgoZBzPsaI,62204
21
+ spotifywebapipython/docs/spotifywebapipython/const.html,sha256=9yxwLXIB8lWNUv6hy1DRSC_A7KI4a9lM4r3Q3iGx6m0,60537
22
+ spotifywebapipython/docs/spotifywebapipython/saappmessages.html,sha256=auJ5IsINK_PWLv5mXBnjOWEB3-9-yyuiMwFAFID59M4,62358
23
+ spotifywebapipython/docs/spotifywebapipython/sautils.html,sha256=w957a9lnT-Wc_lruOb_FlpNHSWzrfoP7NJAskEAuh24,62031
24
+ spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html,sha256=ugyMjfDUSU1NHRPYYF4q9zAwgIniNKFBoMnzF70ymvo,48054
25
+ spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html,sha256=9qyfp3ruZpV6Z_Is5kB5wwyfvtJaUc8JV5jDsZjIPRE,59210
26
+ spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html,sha256=qB65HfsUKhBr2PT3misX2lIgobI7BPbvIVVJ3Ogc2JI,59256
27
+ spotifywebapipython/docs/spotifywebapipython/spotifyclient.html,sha256=a2xqAlqSykUYmt164v36Cu3iP6ksY1BpXatl6kjmKew,1677607
28
+ spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html,sha256=j3SVLln2LGhuiKXEfM38t_8IAkIXLwgZuS2UoFUQSMw,57662
29
+ spotifywebapipython/docs/spotifywebapipython/spotifymediatypes.html,sha256=xgn3SGBuJawq-8ix20k48yqjM-fnIxfgpjBfkq9ynnQ,51532
30
+ spotifywebapipython/docs/spotifywebapipython/spotifytypeprefixes.html,sha256=J0qdzL1lTbf3-Ri9ZmTLti1ZnvUUs_5xB83iK7h5iRs,52401
31
+ spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html,sha256=Rlx8A6JUqjS5WzF3wPXeXV3gN1cFOVqlPBnvlrVt2fA,52174
32
+ spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html,sha256=ZjhIQPMxOuJMdvCPbSz9EwGjPdHHhryXq_XRteMQkv0,51484
33
+ spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html,sha256=_1Tbo7T1vUrPKjDCKM3VVMaaarAAyJLA1hLAhDrGno8,62204
34
34
  spotifywebapipython/models/__init__.py,sha256=RwRQhUX-6EUs8XvStVFpR8EPwoqIAz9K6ref-28qHKI,4423
35
35
  spotifywebapipython/models/album.py,sha256=U3Pdw0-EL33LdkeiN31fjZ23rlLk6DNGV8jRmZU7EyQ,5170
36
36
  spotifywebapipython/models/albumpagesaved.py,sha256=SBYMhkh5ZsMrRAXl-cm9zsxMDh8gO190ENq6Py2TyGY,2417
@@ -110,7 +110,7 @@ spotifywebapipython/oauthcli/__init__.py,sha256=K37XTxYAKT0n8otCNzWbjgJ10fAPN4WL
110
110
  spotifywebapipython/oauthcli/authclient.py,sha256=qGKa4FLBHHZQyP5ho1sIM_mNmyshQd720YwKcUFQJAw,56207
111
111
  spotifywebapipython/spotifyconnect/__init__.py,sha256=9Xl5KiJFvWLbsdb4YQ0xmF67i36ybpXCCXrWeNsKEvc,1108
112
112
  spotifywebapipython/spotifyconnect/spotifyconnectdeviceeventargs.py,sha256=35hKa0FAaPgy7W8D6MFXmga667pjwXITo8jSj1TDfE8,1988
113
- spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py,sha256=P_nm-1qRcbu_VMtLatS21WzQEZ4muq3BIo-623mYlE4,169114
113
+ spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py,sha256=RUXj875jstz_zRuZHn0TAn-gN59x4eA8yRRgmwTnK6Y,169688
114
114
  spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastapptask.py,sha256=jArxsjAGntTcQD9L9yVuey1L8pw0KvshlNXIBA7PqiI,23367
115
115
  spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastcontroller.py,sha256=e2wLmFq4393IdVa51w8X5UQl4KfnHRh34DMlxZfl9-g,34218
116
116
  spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastlistener.py,sha256=e7vKob2xim8H3BkxbgPj-eymftKvWgT71tzpskd0sn0,16720
@@ -132,13 +132,13 @@ spotifywebapipython/zeroconfapi/credentials.py,sha256=MIXqZvFNDjoICpZGNXPveHNl9G
132
132
  spotifywebapipython/zeroconfapi/cryptodiffiehellman.py,sha256=k-nMR68GtzODYsQrwCpvFE2XNxv-XUFbMemplldtwp4,3340
133
133
  spotifywebapipython/zeroconfapi/helpers.py,sha256=9lJFOuKYrk-e7SbU94WmFv5oiBq4k5gMS8wE1it4Wbc,1429
134
134
  spotifywebapipython/zeroconfapi/spotifyzeroconfapierror.py,sha256=rTwIrr1qV0UiQS_zBufboyZ3A3yGrdCsTAOiVA5dvzY,3031
135
- spotifywebapipython/zeroconfapi/zeroconfconnect.py,sha256=JzAKVc7XC_HrTH1IwsuXpcgW0rFlRYocHL8likoYYvQ,79023
136
- spotifywebapipython/zeroconfapi/zeroconfgetinfo.py,sha256=gTr3J3iVDR_ueP1tg-WHuCOke3eP864WGiESmOOYFUw,22243
135
+ spotifywebapipython/zeroconfapi/zeroconfconnect.py,sha256=W58nUWgVgq2aX6624fckBsmXIpYDnX8DWyRJukIPoVY,94059
136
+ spotifywebapipython/zeroconfapi/zeroconfgetinfo.py,sha256=J8Oab4JJJ_OuNR5Q4cywTAYHUPUtarTGmmBjAzcUdq4,23135
137
137
  spotifywebapipython/zeroconfapi/zeroconfgetinfoalias.py,sha256=FZJM23HIPJSfhXIC3-EuS1XhawheoG5maSp7__k4yBo,2932
138
138
  spotifywebapipython/zeroconfapi/zeroconfgetinfodrmmediaformat.py,sha256=c5uk8ljsIuBK3w2jahHKQuoWvm245LOjUBitetXx5Mo,2347
139
139
  spotifywebapipython/zeroconfapi/zeroconfresponse.py,sha256=mAPIDj5MG53x8peiScrp7OJblwy_o_Sto4wqE0rGujU,6445
140
- spotifywebapipython-1.0.295.dist-info/LICENSE,sha256=KGcc9g0zwqNLcWnSn_ezv1UtKyhMENFhvtixpxUPNsE,1177
141
- spotifywebapipython-1.0.295.dist-info/METADATA,sha256=QOA7tWLDzhM7r2og8dqoGT9aAPj8ll9gPKj1wD9TAxc,11644
142
- spotifywebapipython-1.0.295.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
143
- spotifywebapipython-1.0.295.dist-info/top_level.txt,sha256=jTBLFlijKTesYh2dteAz4vb17qjaqWKeDjpnnwTcrjs,20
144
- spotifywebapipython-1.0.295.dist-info/RECORD,,
140
+ spotifywebapipython-1.0.297.dist-info/LICENSE,sha256=KGcc9g0zwqNLcWnSn_ezv1UtKyhMENFhvtixpxUPNsE,1177
141
+ spotifywebapipython-1.0.297.dist-info/METADATA,sha256=phuuirL5uX51y56JHPhyq3vKtPJ4QsWBYimH3HxeuEc,11644
142
+ spotifywebapipython-1.0.297.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
143
+ spotifywebapipython-1.0.297.dist-info/top_level.txt,sha256=jTBLFlijKTesYh2dteAz4vb17qjaqWKeDjpnnwTcrjs,20
144
+ spotifywebapipython-1.0.297.dist-info/RECORD,,