From: Marcel van der Veldt Date: Sun, 5 Jul 2020 10:41:51 +0000 (+0200) Subject: several fixes X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=fde1fb7766bc8bcbf55734d58e00c450b0aff431;p=music-assistant-server.git several fixes fix search fix chromecast fix radio --- diff --git a/music_assistant/database.py b/music_assistant/database.py index e408e079..587ca9a1 100755 --- a/music_assistant/database.py +++ b/music_assistant/database.py @@ -181,7 +181,7 @@ class Database: if MediaType.Playlist in media_types: sql_query = ' WHERE name LIKE "%s"' % searchquery result["playlists"] = [ - item async for item in self.library_playlists(sql_query) + item async for item in self.playlists(sql_query) ] return result diff --git a/music_assistant/http_streamer.py b/music_assistant/http_streamer.py index 11892e97..4b0ddbb9 100755 --- a/music_assistant/http_streamer.py +++ b/music_assistant/http_streamer.py @@ -333,15 +333,18 @@ class HTTPStreamer: """ get audio stream from provider and apply additional effects/processing where/if needed""" streamdetails = None # always request the full db track as there might be other qualities available - full_track = self.mass.run_task( - self.mass.music.track( - queue_item.item_id, - queue_item.provider, - lazy=True, - track_details=queue_item, - ), - wait_for_result=True, - ) + if queue_item.media_type == MediaType.Radio: + full_track = queue_item + else: + full_track = self.mass.run_task( + self.mass.music.track( + queue_item.item_id, + queue_item.provider, + lazy=True, + track_details=queue_item, + ), + wait_for_result=True, + ) # sort by quality and check track availability for prov_media in sorted( full_track.provider_ids, key=operator.itemgetter("quality"), reverse=True diff --git a/music_assistant/playerproviders/chromecast.py b/music_assistant/playerproviders/chromecast.py index 729f8de4..4b5f2433 100644 --- a/music_assistant/playerproviders/chromecast.py +++ b/music_assistant/playerproviders/chromecast.py @@ -287,22 +287,19 @@ class ChromecastProvider(PlayerProvider): for uuid, service in listener.services.items(): LOGGER.debug(" {} {}".format(uuid, service)) - def add_callback(name): + def add_callback(uuid, name): """Called when zeroconf has discovered a (new) chromecast.""" - discovery_info = listener.services[name] - ip_address, port, uuid, model_name, friendly_name = discovery_info + services = listener.services[uuid] player_id = str(uuid) if not player_id in self.mass.players._players: - self.__chromecast_discovered(player_id, discovery_info) + self.__chromecast_discovered(player_id, services, zconf) self.__update_group_players() def remove_callback(uuid, name, service): LOGGER.debug("Lost mDNS service for cast device {} {}".format(uuid, service)) - list_devices() def update_callback(uuid, name): LOGGER.debug("Updated mDNS service for cast device {}".format(uuid)) - list_devices() listener = pychromecast.CastListener(add_callback, remove_callback, update_callback) zconf = zeroconf.Zeroconf() @@ -313,15 +310,14 @@ class ChromecastProvider(PlayerProvider): LOGGER.debug("Chromecast discovery completed...") self._discovery_running = False - def __chromecast_discovered(self, player_id, discovery_info): + def __chromecast_discovered(self, player_id, services, zconf): """ callback when a (new) chromecast device is discovered """ - from pychromecast import _get_chromecast_from_host, ChromecastConnectionError try: - chromecast = _get_chromecast_from_host( - discovery_info, tries=2, timeout=5, retry_wait=5 + chromecast = pychromecast.get_chromecast_from_service( + services, zconf, tries=2, retry_wait=5, timeout=5 ) - except ChromecastConnectionError: + except pychromecast.ChromecastConnectionError: LOGGER.warning("Could not connect to device %s" % player_id) return player = ChromecastPlayer(self.mass, player_id, self.prov_id)