spotifywebapiPython 1.0.259__py3-none-any.whl → 1.0.260__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 +9 -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 +2 -2
- 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/models/zeroconfdiscoveryresult.py +1 -1
- spotifywebapipython/spotifyclient.py +16 -3
- spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py +64 -7
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastapptask.py +6 -0
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastcontroller.py +42 -13
- spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastlistener.py +12 -0
- {spotifywebapipython-1.0.259.dist-info → spotifywebapipython-1.0.260.dist-info}/METADATA +1 -1
- {spotifywebapipython-1.0.259.dist-info → spotifywebapipython-1.0.260.dist-info}/RECORD +26 -26
- {spotifywebapipython-1.0.259.dist-info → spotifywebapipython-1.0.260.dist-info}/LICENSE +0 -0
- {spotifywebapipython-1.0.259.dist-info → spotifywebapipython-1.0.260.dist-info}/WHEEL +0 -0
- {spotifywebapipython-1.0.259.dist-info → spotifywebapipython-1.0.260.dist-info}/top_level.txt +0 -0
|
@@ -32,9 +32,14 @@ if (_logsi == None):
|
|
|
32
32
|
_logsi = SIAuto.Si.AddSession(__name__, True)
|
|
33
33
|
_logsi.SystemLogger = logging.getLogger(__name__)
|
|
34
34
|
|
|
35
|
+
# constants - cast app identifiers.
|
|
36
|
+
APP_GOOGLE_INTERNAL_RECEIVER = "705D30C6" # Google Internal Receiver
|
|
37
|
+
APP_SPOTIFY_CONNECT = "531A4F84" # Spotify Connect
|
|
38
|
+
APP_SPOTIFY = "CC32E753" # Spotify (legacy / classic cast)
|
|
39
|
+
APP_SPOTIFY_NAMESPACE = "urn:x-cast:com.spotify.chromecast.secure.v1"
|
|
40
|
+
APP_SPOTIFY_LAUNCH_TIMEOUT = 20.0 # Amount of time to wait for Spotify App launch.
|
|
41
|
+
|
|
35
42
|
# constants.
|
|
36
|
-
APP_SPOTIFY = "CC32E753"
|
|
37
|
-
APP_NAMESPACE = "urn:x-cast:com.spotify.chromecast.secure.v1"
|
|
38
43
|
TYPE_GET_INFO = "getInfo"
|
|
39
44
|
TYPE_GET_INFO_ERROR = "getInfoError"
|
|
40
45
|
TYPE_GET_INFO_RESPONSE = "getInfoResponse"
|
|
@@ -78,7 +83,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
78
83
|
"""
|
|
79
84
|
|
|
80
85
|
# invoke base class method.
|
|
81
|
-
super().__init__(
|
|
86
|
+
super().__init__(APP_SPOTIFY_NAMESPACE, APP_SPOTIFY)
|
|
82
87
|
|
|
83
88
|
# initialize storage.
|
|
84
89
|
self.accessToken:str = accessToken
|
|
@@ -88,6 +93,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
88
93
|
self.deviceId:str = None
|
|
89
94
|
self.isAddUserError:bool = False
|
|
90
95
|
self.isGetInfoError:bool = False
|
|
96
|
+
self.isLaunchError:bool = False
|
|
91
97
|
self.isLaunched:bool = False
|
|
92
98
|
self.isPlaybackTransferError:bool = False
|
|
93
99
|
self.isMessageException:bool = False
|
|
@@ -141,6 +147,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
141
147
|
self.isLaunched = False
|
|
142
148
|
self.isAddUserError = False
|
|
143
149
|
self.isGetInfoError = False
|
|
150
|
+
self.isLaunchError = False
|
|
144
151
|
self.isPlaybackTransferError = False
|
|
145
152
|
self.isMessageException = False
|
|
146
153
|
self.waitAddUser.clear()
|
|
@@ -186,6 +193,8 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
186
193
|
raise SpotifyZeroconfApiError(self.zeroconfResponse.Status, "AddUser request failed", "launch_app", self.zeroconfResponse.StatusString)
|
|
187
194
|
if (self.isGetInfoError):
|
|
188
195
|
raise SpotifyZeroconfApiError(self.zeroconfResponse.Status, "GetInformation request failed", "launch_app", self.zeroconfResponse.StatusString)
|
|
196
|
+
if (self.isLaunchError):
|
|
197
|
+
raise SpotifyZeroconfApiError(self.zeroconfResponse.Status, "Launch request failed", "launch_app", self.zeroconfResponse.StatusString)
|
|
189
198
|
if (not self.isLaunched):
|
|
190
199
|
raise SpotifyConnectZeroconfLaunchError("Spotify Cast App could not be launched")
|
|
191
200
|
|
|
@@ -244,7 +253,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
244
253
|
try:
|
|
245
254
|
|
|
246
255
|
# trace.
|
|
247
|
-
_logsi.LogDictionary(SILevel.Verbose, "Chromecast Message payload received: %s" % message, data, prettyPrint=True)
|
|
256
|
+
_logsi.LogDictionary(SILevel.Verbose, "Chromecast Message payload received: %s" % message, data, prettyPrint=True, colorValue=SIColors.Tan)
|
|
248
257
|
|
|
249
258
|
# message argument example: "getInfoResponse"
|
|
250
259
|
# protocol_version: CASTV2_1_0
|
|
@@ -317,7 +326,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
317
326
|
self.zeroconfGetInfo.ResponseSource = payloadDataType
|
|
318
327
|
|
|
319
328
|
# trace.
|
|
320
|
-
_logsi.LogObject(SILevel.Verbose, "GetInformation result (ZeroconfGetInfo) - \"%s\" (%s)" % (self.zeroconfGetInfo.RemoteName, self.zeroconfGetInfo.DeviceId), self.zeroconfGetInfo, excludeNonPublic=True)
|
|
329
|
+
_logsi.LogObject(SILevel.Verbose, "GetInformation result (ZeroconfGetInfo) - \"%s\" (%s)" % (self.zeroconfGetInfo.RemoteName, self.zeroconfGetInfo.DeviceId), self.zeroconfGetInfo, excludeNonPublic=True, colorValue=SIColors.Tan)
|
|
321
330
|
|
|
322
331
|
# getInfo response received from the initial launch.
|
|
323
332
|
self.deviceId = self.zeroconfGetInfo.DeviceId
|
|
@@ -448,7 +457,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
448
457
|
return True
|
|
449
458
|
|
|
450
459
|
# trace.
|
|
451
|
-
_logsi.LogDictionary(SILevel.Verbose, "Chromecast Message ignored - payload type value not recognized: \"%s\"" % (payloadDataType), message, prettyPrint=True)
|
|
460
|
+
_logsi.LogDictionary(SILevel.Verbose, "Chromecast Message ignored - payload type value not recognized: \"%s\"" % (payloadDataType), message, prettyPrint=True, colorValue=SIColors.Tan)
|
|
452
461
|
|
|
453
462
|
return True
|
|
454
463
|
|
|
@@ -463,7 +472,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
463
472
|
self.zeroconfResponse = response
|
|
464
473
|
|
|
465
474
|
# trace.
|
|
466
|
-
_logsi.LogException(SAAppMessages.UNHANDLED_EXCEPTION.format("receive_message", str(ex)), ex, logToSystemLogger=False)
|
|
475
|
+
_logsi.LogException(SAAppMessages.UNHANDLED_EXCEPTION.format("receive_message", str(ex)), ex, logToSystemLogger=False, colorValue=SIColors.Tan)
|
|
467
476
|
|
|
468
477
|
# ignore exceptions, as there is nothing we can do at this point.
|
|
469
478
|
|
|
@@ -571,7 +580,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
571
580
|
"blob": json_resp["accessToken"],
|
|
572
581
|
},
|
|
573
582
|
}
|
|
574
|
-
_logsi.LogDictionary(SILevel.Debug, "Sending Spotify Connect Zeroconf AddUser Chromecast Message payload to Chromecast device (ip=%s:%s)" % (self.castDevice.socket_client.host, self.castDevice.socket_client.port), castMsg, prettyPrint=True)
|
|
583
|
+
_logsi.LogDictionary(SILevel.Debug, "Sending Spotify Connect Zeroconf AddUser Chromecast Message payload to Chromecast device (ip=%s:%s)" % (self.castDevice.socket_client.host, self.castDevice.socket_client.port), castMsg, prettyPrint=True, colorValue=SIColors.Tan)
|
|
575
584
|
self.send_message(castMsg)
|
|
576
585
|
|
|
577
586
|
# if we are in the process of launching, then we will wait for a response in the
|
|
@@ -589,7 +598,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
589
598
|
if (counter >= timeout):
|
|
590
599
|
raise SpotifyZeroconfApiError(0, "Timed out while waiting for a response", "AddUser", "timeout")
|
|
591
600
|
counter += WAIT_INTERVAL
|
|
592
|
-
_logsi.LogVerbose("Waiting for addUserResponse Chromecast Message payload (%f seconds from initial request)" % (counter))
|
|
601
|
+
_logsi.LogVerbose("Waiting for addUserResponse Chromecast Message payload (%f seconds from initial request)" % (counter), colorValue=SIColors.Tan)
|
|
593
602
|
|
|
594
603
|
# if we make it here, then addUser request was processed successfully.
|
|
595
604
|
return
|
|
@@ -665,7 +674,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
665
674
|
"interactionIDs": [self.interactionID],
|
|
666
675
|
},
|
|
667
676
|
}
|
|
668
|
-
_logsi.LogDictionary(SILevel.Debug, "Sending Spotify Connect Zeroconf Getinformation Chromecast Message payload to Chromecast device (ip=%s:%s)" % (self.castDevice.socket_client.host, self.castDevice.socket_client.port), castMsg, prettyPrint=True)
|
|
677
|
+
_logsi.LogDictionary(SILevel.Debug, "Sending Spotify Connect Zeroconf Getinformation Chromecast Message payload to Chromecast device (ip=%s:%s)" % (self.castDevice.socket_client.host, self.castDevice.socket_client.port), castMsg, prettyPrint=True, colorValue=SIColors.Tan)
|
|
669
678
|
self.send_message(castMsg)
|
|
670
679
|
|
|
671
680
|
# if we are in the process of launching, then we will wait for a response in the
|
|
@@ -683,7 +692,7 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
683
692
|
if (counter >= timeout):
|
|
684
693
|
raise SpotifyZeroconfApiError(0, "Timed out while waiting for a response", "GetInformation", "timeout")
|
|
685
694
|
counter += WAIT_INTERVAL
|
|
686
|
-
_logsi.LogVerbose("Waiting for getInfoResponse Chromecast Message payload (%f seconds from initial request)" % (counter))
|
|
695
|
+
_logsi.LogVerbose("Waiting for getInfoResponse Chromecast Message payload (%f seconds from initial request)" % (counter), colorValue=SIColors.Tan)
|
|
687
696
|
|
|
688
697
|
# if we make it here, then getInfo request was processed successfully.
|
|
689
698
|
# return response to the caller.
|
|
@@ -691,9 +700,29 @@ class SpotifyConnectZeroconfCastController(BaseController):
|
|
|
691
700
|
|
|
692
701
|
except SpotifyZeroconfApiError: raise # pass handled exceptions on thru
|
|
693
702
|
except Exception as ex:
|
|
703
|
+
|
|
704
|
+
# pychromecast ControllerNotRegistered can occur when launching to cast group devices
|
|
705
|
+
# that contain a Google Mini (legacy) device.
|
|
706
|
+
|
|
707
|
+
# indicate launch error.
|
|
708
|
+
self.isLaunchError = True
|
|
694
709
|
|
|
695
|
-
#
|
|
696
|
-
|
|
710
|
+
# load zeroconfResponse instance with exception information.
|
|
711
|
+
response: ZeroconfResponse = ZeroconfResponse()
|
|
712
|
+
response.SpotifyError = 0
|
|
713
|
+
response.Status = 1001
|
|
714
|
+
response.StatusString = "ERROR-PYCHROMECAST-%s" % (type(ex).__name__.upper())
|
|
715
|
+
response.ResponseSource = "SpotifyConnectZeroconfCastController"
|
|
716
|
+
self.zeroconfResponse = response
|
|
717
|
+
|
|
718
|
+
# trace.
|
|
719
|
+
_logsi.LogException(SAAppMessages.UNHANDLED_EXCEPTION.format("GetInformation", str(ex)), ex, logToSystemLogger=False, colorValue=SIColors.Tan)
|
|
720
|
+
|
|
721
|
+
# if app is not launched, then init is waiting on the `waitAddUser` event!
|
|
722
|
+
if (not self.isLaunched):
|
|
723
|
+
self.waitAddUser.set()
|
|
724
|
+
|
|
725
|
+
# ignore exceptions, as there is nothing we can do at this point.
|
|
697
726
|
|
|
698
727
|
finally:
|
|
699
728
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# external package imports.
|
|
2
2
|
from pychromecast import CastInfo, HostServiceInfo
|
|
3
3
|
from pychromecast.discovery import AbstractCastListener
|
|
4
|
+
import ipaddress
|
|
4
5
|
import threading
|
|
5
6
|
from uuid import UUID
|
|
6
7
|
|
|
@@ -145,6 +146,17 @@ class SpotifyConnectZeroconfCastListener(AbstractCastListener):
|
|
|
145
146
|
if (not (castType in [CAST_TYPE_AUDIO, CAST_TYPE_GROUP, CAST_TYPE_CHROMECAST, CAST_TYPE_NONE])):
|
|
146
147
|
_logsi.LogDebug("Chromecast device cast_type of \"%s\" is not supported; ignoring: \"%s\" (%s)" % (castType, castInfo.friendly_name, serviceName), colorValue=SIColors.Coral)
|
|
147
148
|
return None
|
|
149
|
+
|
|
150
|
+
# ensure IPV4 connection - ignore if IPV6.
|
|
151
|
+
# Windows OS does not support dual-stack socket handling IPv4 (224.0.0.251) and IPv6 (ff02::fb).
|
|
152
|
+
ip = ipaddress.ip_address(castInfo.host)
|
|
153
|
+
if (ip.version == 6):
|
|
154
|
+
_logsi.LogDebug("Chromecast IPV6 device addresses are not supported; device could cause problems: \"%s\" (%s)" % (castInfo.friendly_name, serviceName), colorValue=SIColors.Red)
|
|
155
|
+
|
|
156
|
+
# will still allow this for now, but we might want to ignore IPV6 devices
|
|
157
|
+
# in the future! To do so, just uncomment the following, which will
|
|
158
|
+
# ignore the device.
|
|
159
|
+
#return None
|
|
148
160
|
|
|
149
161
|
# create new discovery result instance.
|
|
150
162
|
result:ZeroconfDiscoveryResult = ZeroconfDiscoveryResult()
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
spotifywebapipython/__init__.py,sha256=SnB5BsUGChYgcZHjhZenqYZkb_v3c8aiAUQLkp4lYSY,1205
|
|
2
|
-
spotifywebapipython/const.py,sha256=
|
|
2
|
+
spotifywebapipython/const.py,sha256=dPlADutAwzwr1W48eve-rJYssT_k9QW3-SDgFCD7yQI,3923
|
|
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=nXBDydPqrL_rthC-fMltJSkhmRZtEP6ZjlEKiFE76Sc,855392
|
|
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=V9LJRIEPKyCDGD6yrtqualGwdb6oBUrCOwBoNsacjwU,182786
|
|
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=bJ9plZVboNCcTxQti-pm9KELqcE1irptD6BdNrgWrSs,48523
|
|
17
|
+
spotifywebapipython/docs/search.js,sha256=3flBLbX5Qh_33jzLO1_74QhiuWA_cFEy5FUa-aH9BJA,8968623
|
|
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=0zD6doIloAVHiXCiH1tNrrvmH6_5l1rG7jqEfeLVH5A,59805
|
|
21
|
+
spotifywebapipython/docs/spotifywebapipython/saappmessages.html,sha256=hRgIlY-dQlbh03CRPt7d2bKFy2cizeH1TT2tJcBVKm8,60895
|
|
22
|
+
spotifywebapipython/docs/spotifywebapipython/sautils.html,sha256=LFTzn2nMh23d2imZMU4_kKg9G268Ue908oWqKi0C-Uk,61063
|
|
23
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyapierror.html,sha256=SsbfaW3myrDY1QTL_bp6VC17Qnonor1RzXHjqquT8iM,48054
|
|
24
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyapimessage.html,sha256=X94qxMzwmUEGLlVvQnDQI_RgZDQLSjNOImCalXR1YUg,59210
|
|
25
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyauthtoken.html,sha256=RPvaLZeH1xvOsw2w5VNd1k2Pz-HNT5Dj3rQLiJ-mvo0,59256
|
|
26
|
+
spotifywebapipython/docs/spotifywebapipython/spotifyclient.html,sha256=FD81Ab9URK9J_J-5MquUqSkLKpDM3KUNYJZk5p-mDLk,1635516
|
|
27
|
+
spotifywebapipython/docs/spotifywebapipython/spotifydiscovery.html,sha256=it_UvMCdNYyZnHYBXlW8WiZLmjXLnX7zLW3lU2fTI8c,57662
|
|
28
|
+
spotifywebapipython/docs/spotifywebapipython/spotifywebapiauthenticationerror.html,sha256=RPUGFLn_sz2VplJJ4_dPXOvtotcIg4Thz3ZaPdhZ_BE,52174
|
|
29
|
+
spotifywebapipython/docs/spotifywebapipython/spotifywebapierror.html,sha256=OT-IR5e6d3AmXaoY9qO5WZ0pBcRRV5cFpO4SXPhU-gE,50592
|
|
30
|
+
spotifywebapipython/docs/spotifywebapipython/spotifywebplayertoken.html,sha256=3PR0j23h_cxa3jxyEU6P3O5WcQE4ztOOhFD6RSZoo78,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
|
|
@@ -101,16 +101,16 @@ spotifywebapipython/models/tracksaved.py,sha256=uwnTpawf7ymXlF_b4p1RyjonUwUFRp0q
|
|
|
101
101
|
spotifywebapipython/models/tracksimplified.py,sha256=fqIH45BsTRPbwq0ytss3r9YTCn1TtJSwBLAelJ2dWJY,13199
|
|
102
102
|
spotifywebapipython/models/userprofile.py,sha256=VXHP-wSWGSIiDebGDuT4fFNBCmx_ME6Hn1NO5QyyBQY,6482
|
|
103
103
|
spotifywebapipython/models/userprofilesimplified.py,sha256=YCEVED8PMeqWkORMHwj0JF_tVNqoTc1k_nce63D6kFY,6919
|
|
104
|
-
spotifywebapipython/models/zeroconfdiscoveryresult.py,sha256=
|
|
104
|
+
spotifywebapipython/models/zeroconfdiscoveryresult.py,sha256=XID2qmaK2WTGJoLTQ54aQjfutLJMLgJ7A1ATwAp06kY,20250
|
|
105
105
|
spotifywebapipython/models/zeroconfproperty.py,sha256=sXGUqbHhFMutCNKFJwJKbNbbQAnBnR7Ob5wNDSePxZk,2141
|
|
106
106
|
spotifywebapipython/oauthcli/__init__.py,sha256=K37XTxYAKT0n8otCNzWbjgJ10fAPN4WL6seEpwvWyo4,168
|
|
107
107
|
spotifywebapipython/oauthcli/authclient.py,sha256=-B_av5cxVHGHOaf8F_Xeo5u-HbOI1ytN86nOBzfW4Sw,56026
|
|
108
108
|
spotifywebapipython/spotifyconnect/__init__.py,sha256=9Xl5KiJFvWLbsdb4YQ0xmF67i36ybpXCCXrWeNsKEvc,1108
|
|
109
109
|
spotifywebapipython/spotifyconnect/spotifyconnectdeviceeventargs.py,sha256=35hKa0FAaPgy7W8D6MFXmga667pjwXITo8jSj1TDfE8,1988
|
|
110
|
-
spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py,sha256=
|
|
111
|
-
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastapptask.py,sha256=
|
|
112
|
-
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastcontroller.py,sha256=
|
|
113
|
-
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastlistener.py,sha256=
|
|
110
|
+
spotifywebapipython/spotifyconnect/spotifyconnectdirectorytask.py,sha256=QXNpJSqUGuOYxCzvDH63Ka9L9Yo7Bb5iVBRtDhc4ILE,153923
|
|
111
|
+
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastapptask.py,sha256=tCjqU7ubtfzBENdvqwVB0pMDGHRY_0u6N5OYlI5hbj8,23368
|
|
112
|
+
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastcontroller.py,sha256=e2wLmFq4393IdVa51w8X5UQl4KfnHRh34DMlxZfl9-g,34218
|
|
113
|
+
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastlistener.py,sha256=zo0z0edxBwFZxN53su2yRI97krFilIlODPlz4VRyL6s,16645
|
|
114
114
|
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastmultizonecontrollerlistener.py,sha256=AA-XxS6AptJWzyO2zsM9DA5ioCncJBKDTpJkr_aN9IM,12352
|
|
115
115
|
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfcastmultizonemanagerlistener.py,sha256=k3wMC80Z7jBXYwiw9jq-oixRsum7E_vdHzwEgvcGbiw,18918
|
|
116
116
|
spotifywebapipython/spotifyconnect/spotifyconnectzeroconfexceptions.py,sha256=aesGauxMoKupdTPR5rL2-rXBC3SEvH_9bQQx2Vh-abs,524
|
|
@@ -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.260.dist-info/LICENSE,sha256=KGcc9g0zwqNLcWnSn_ezv1UtKyhMENFhvtixpxUPNsE,1177
|
|
138
|
+
spotifywebapipython-1.0.260.dist-info/METADATA,sha256=9GnaRQaJXe9zHzEhRFL88XXiFzkWmPSOC6qrDrNRIec,11644
|
|
139
|
+
spotifywebapipython-1.0.260.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
140
|
+
spotifywebapipython-1.0.260.dist-info/top_level.txt,sha256=jTBLFlijKTesYh2dteAz4vb17qjaqWKeDjpnnwTcrjs,20
|
|
141
|
+
spotifywebapipython-1.0.260.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{spotifywebapipython-1.0.259.dist-info → spotifywebapipython-1.0.260.dist-info}/top_level.txt
RENAMED
|
File without changes
|