From: Marcel van der Veldt Date: Mon, 29 Jan 2024 21:35:55 +0000 (+0100) Subject: suppress some exceptions X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=63faed319b2dc394ff9bd075ae116fd5211e6cb6;p=music-assistant-server.git suppress some exceptions --- diff --git a/music_assistant/server/providers/sonos/__init__.py b/music_assistant/server/providers/sonos/__init__.py index ce2e0984..341d4847 100644 --- a/music_assistant/server/providers/sonos/__init__.py +++ b/music_assistant/server/providers/sonos/__init__.py @@ -11,7 +11,6 @@ import asyncio import logging import time from collections import OrderedDict -from contextlib import suppress from dataclasses import dataclass, field from typing import TYPE_CHECKING @@ -20,7 +19,6 @@ from requests.exceptions import RequestException from soco import events_asyncio, zonegroupstate from soco.core import SoCo from soco.discovery import discover -from soco.exceptions import SoCoUPnPException from music_assistant.common.models.config_entries import ( CONF_ENTRY_CROSSFADE, @@ -407,11 +405,15 @@ class SonosPlayerProvider(PlayerProvider): if sonos_player.crossfade != crossfade: def set_crossfade(): - sonos_player.soco.cross_fade = crossfade - sonos_player.crossfade = crossfade + try: + sonos_player.soco.cross_fade = crossfade + sonos_player.crossfade = crossfade + except Exception as err: + self.logger.warning( + "Unable to set crossfade for player %s: %s", sonos_player.zone_name, err + ) - with suppress(SoCoUPnPException): - await asyncio.to_thread(set_crossfade) + await asyncio.to_thread(set_crossfade) await self._enqueue_item(sonos_player, url=url, queue_item=queue_item) @@ -535,13 +537,19 @@ class SonosPlayerProvider(PlayerProvider): ) -> None: """Enqueue a queue item to the Sonos player Queue.""" metadata = create_didl_metadata(self.mass, url, queue_item) - await asyncio.to_thread( - sonos_player.soco.avTransport.SetNextAVTransportURI, - [("InstanceID", 0), ("NextURI", url), ("NextURIMetaData", metadata)], - timeout=60, - ) - self.logger.debug( - "Enqued next track (%s) to player %s", - queue_item.name if queue_item else url, - sonos_player.soco.player_name, - ) + try: + await asyncio.to_thread( + sonos_player.soco.avTransport.SetNextAVTransportURI, + [("InstanceID", 0), ("NextURI", url), ("NextURIMetaData", metadata)], + timeout=60, + ) + except Exception as err: + self.logger.warning( + "Unable to enqueue next track on player: %s: %s", sonos_player.zone_name, err + ) + else: + self.logger.debug( + "Enqued next track (%s) to player %s", + queue_item.name if queue_item else url, + sonos_player.soco.player_name, + ) diff --git a/music_assistant/server/providers/sonos/player.py b/music_assistant/server/providers/sonos/player.py index b1f3b057..fb9aea0e 100644 --- a/music_assistant/server/providers/sonos/player.py +++ b/music_assistant/server/providers/sonos/player.py @@ -746,7 +746,11 @@ class SonosPlayer: self.title = None self.uri = None - track_info = self.poll_track_info() + try: + track_info = self.poll_track_info() + except SonosUpdateError as err: + self.logger.warning("Fetching track info failed: %s", err) + return if not track_info["uri"]: return self.uri = track_info["uri"]