fix for CC and qobuz again
authormarcelveldt <marcelvanderveldt@MacBook-Silvia.local>
Thu, 17 Oct 2019 22:18:30 +0000 (00:18 +0200)
committermarcelveldt <marcelvanderveldt@MacBook-Silvia.local>
Thu, 17 Oct 2019 22:18:30 +0000 (00:18 +0200)
music_assistant/musicproviders/qobuz.py
music_assistant/playerproviders/chromecast.py

index 7d98cd6700a75f47aa2d6b28ea71f4640b6e4960..af06c70b0386547fb4c9d4ab6d52adb5f35dcfc9 100644 (file)
@@ -277,6 +277,8 @@ class QobuzProvider(MusicProvider):
 
     async def mass_event(self, msg, msg_details):
         ''' received event from mass '''
+        if not self.__user_auth_info:
+            return
         # TODO: need to figure out if the streamed track is purchased
         if msg == EVENT_PLAYBACK_STARTED and msg_details.provider == self.prov_id:
             # report streaming started to qobuz
@@ -549,10 +551,11 @@ class QobuzProvider(MusicProvider):
         params["app_id"] = get_app_var(0)
         params["user_auth_token"] = await self.__auth_token()
         async with self.http_session.post(url, params=params, json=data) as response:
-            result = await response.json()
-            if not result or 'error' in result:
-                LOGGER.error(url)
+            try:
+                result = await response.json()
+                return result
+            except Exception as exc:
+                LOGGER.error(exc)
+                LOGGER.debug(url)
                 LOGGER.debug(params)
                 LOGGER.debug(result)
-                result = None
-            return result
\ No newline at end of file
index a0e57463019ce3a2fa4bd27e83da76d94193f8e6..44c4bc771db1e57cc462e0059191838e6b4d4365 100644 (file)
@@ -178,23 +178,12 @@ class ChromecastPlayer(Player):
         else:
             send_queue()
 
-    def __update_group_members(self):
-        ''' update group members '''
-        if not self.mz:
-            return
-        try:
-            self.mz.update_members()
-        except Exception as exc:
-            LOGGER.exception(exc)
-
     async def handle_player_state(self, caststatus=None, 
             mediastatus=None, connection_status=None):
         ''' handle a player state message from the socket '''
         # handle connection status
         if connection_status:
-            if self.mz and connection_status.status == CONNECTION_STATUS_CONNECTED:
-                self.mass.event_loop.call_soon_threadsafe(self.__update_group_members)
-            elif connection_status.status == CONNECTION_STATUS_DISCONNECTED:
+            if connection_status.status == CONNECTION_STATUS_DISCONNECTED:
                 # schedule a new scan which will handle group parent changes
                 self.mass.event_loop.create_task(
                     self.mass.players.providers[self.player_provider].start_chromecast_discovery())
@@ -325,7 +314,8 @@ class ChromecastProvider(PlayerProvider):
         if chromecast.cast_type == 'group':
             player.is_group = True
             mz = MultizoneController(chromecast.uuid)
-            mz.register_listener(MZListener(mz, self.__handle_group_members_update, self.mass.event_loop))
+            mz.register_listener(MZListener(mz, 
+                    self.__handle_group_members_update, self.mass.event_loop))
             chromecast.register_handler(mz)
             player.mz = mz
         chromecast.register_connection_listener(status_listener)
@@ -333,6 +323,8 @@ class ChromecastProvider(PlayerProvider):
         chromecast.media_controller.register_status_listener(status_listener)
         player.cc.wait()
         await self.add_player(player)
+        if player.is_group:
+            player.mz.update_members()
 
 
 def chunks(l, n):