From: Marcel van der Veldt Date: Fri, 21 Jun 2019 10:46:06 +0000 (+0200) Subject: Update chromecast.py X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=7251a3bf45155427b17c1ec3011dd72877f8e4a5;p=music-assistant-server.git Update chromecast.py --- diff --git a/music_assistant/modules/playerproviders/chromecast.py b/music_assistant/modules/playerproviders/chromecast.py index e80ef3c1..9e5ffc1c 100644 --- a/music_assistant/modules/playerproviders/chromecast.py +++ b/music_assistant/modules/playerproviders/chromecast.py @@ -391,19 +391,25 @@ class ChromecastProvider(PlayerProvider): ''' background non-blocking chromecast discovery and handler ''' stop_discovery = pychromecast.get_chromecasts(blocking=False, callback=self.__chromecast_discovered) while True: - for cast in list(self._chromecasts.values()): + for player_id in list(self._chromecasts.keys()): + cast = self._chromecasts[player_id] polltime = 0.1 can_read, _, _ = select.select([cast.socket_client.get_socket()], [], [], polltime) if can_read: - #received something on the socket, handle it with run_once() cast.socket_client.run_once() - time.sleep(0.1) + time.sleep(0.2) def __chromecast_discovered(self, chromecast): ''' callback when a new chromecast device is discovered ''' LOGGER.info("discovered chromecast: %s" % chromecast.name) - chromecast.connect() player_id = str(chromecast.uuid) + if player_id in self._chromecasts: + # cleanup old object + LOGGER.info("IP of %s changed" % chromecast.name) + self._chromecasts[player_id].socket_client.stop.set() + time.sleep(0.5) + self._chromecasts.pop(player_id, None) + chromecast.connect() player = MusicPlayer() player.player_id = player_id player.name = chromecast.name