From 32ec8cbc43239078acbcaf0e3f4b8a97eaa93479 Mon Sep 17 00:00:00 2001 From: Jason Lawrence Date: Sat, 18 Mar 2023 22:03:27 -0500 Subject: [PATCH] Detect Bluetooth sources --- bluetooth.png | Bin 0 -> 40898 bytes go_sonos_highres.py | 6 +++++- sonos_settings.py.example | 3 +++ sonos_user_data.py | 7 +++++-- 4 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 bluetooth.png diff --git a/bluetooth.png b/bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..8db6666e79838b0aca35b20563b9f9d61d4b1118 GIT binary patch literal 40898 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 C7t_%I literal 0 HcmV?d00001 diff --git a/go_sonos_highres.py b/go_sonos_highres.py index c498731..912211f 100644 --- a/go_sonos_highres.py +++ b/go_sonos_highres.py @@ -89,6 +89,8 @@ def should_sleep(): return getattr(sonos_settings, "sleep_on_linein", False) if sonos_data.type == "TV": return getattr(sonos_settings, "sleep_on_tv", False) + if sonos_data.type == "Bluetooth": + return getattr(sonos_settings, "sleep_on_bluetooth", False) if should_sleep(): if display.is_showing: @@ -109,7 +111,7 @@ def should_sleep(): display.show_album() # slim down the album and track names - if sonos_settings.demaster and sonos_data.type not in ["line_in", "TV"]: + if sonos_settings.demaster and sonos_data.type not in ("line_in", "TV", "Bluetooth"): offline = not getattr( sonos_settings, "demaster_query_cloud", False) sonos_data.trackname = await async_demaster.strip_name(sonos_data.trackname, session, offline) @@ -197,6 +199,8 @@ def should_sleep(): pil_image = Image.open(sys.path[0] + "/line_in.png") elif sonos_data.type == "TV": pil_image = Image.open(sys.path[0] + "/tv.png") + elif sonos_data.type == "Bluetooth": + pil_image = Image.open(sys.path[0] + "/bluetooth.png") if pil_image is None: if show_spotify_code or show_spotify_albumart: diff --git a/sonos_settings.py.example b/sonos_settings.py.example index 28c61f8..8371880 100644 --- a/sonos_settings.py.example +++ b/sonos_settings.py.example @@ -58,6 +58,9 @@ sleep_on_tv = False # Turn off display (and backlight) when Sonos is playing from a Line-In source sleep_on_linein = False +# Turn off display (and backlight) when Sonos is playing from a Bluetooth source +sleep_on_bluetooth = False + ## e-ink only settings diff --git a/sonos_user_data.py b/sonos_user_data.py index b438206..2a865df 100644 --- a/sonos_user_data.py +++ b/sonos_user_data.py @@ -200,11 +200,14 @@ async def refresh(self, payload=None): self.type = obj['currentTrack']['type'] self.duration = obj['currentTrack']['duration'] - if self.type == "line_in": + if "bluetooth:" in obj["currentTrack"]["uri"]: + self.type = track_id = "Bluetooth" + + if self.type in ("line_in", "Bluetooth"): uri = obj['currentTrack']['uri'] if uri.startswith('x-sonos-htastream:'): self.type = track_id = "TV" - else: + elif self.type != "Bluetooth": track_id = "Line-In" self.image_uri = None self.trackname = track_id