Add Tidal play_media support to Bang & Olufsen (#119838)

Add tidal play_media support
This commit is contained in:
Markus Jacobsen 2024-06-18 14:00:27 +02:00 committed by GitHub
parent 041746a50b
commit 3046329f4f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 7 deletions

View file

@ -54,6 +54,7 @@ class BangOlufsenMediaType(StrEnum):
FAVOURITE = "favourite"
DEEZER = "deezer"
RADIO = "radio"
TIDAL = "tidal"
TTS = "provider"
OVERLAY_TTS = "overlay_tts"
@ -118,6 +119,7 @@ VALID_MEDIA_TYPES: Final[tuple] = (
BangOlufsenMediaType.DEEZER,
BangOlufsenMediaType.RADIO,
BangOlufsenMediaType.TTS,
BangOlufsenMediaType.TIDAL,
BangOlufsenMediaType.OVERLAY_TTS,
MediaType.MUSIC,
MediaType.URL,

View file

@ -638,20 +638,20 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
elif media_type == BangOlufsenMediaType.FAVOURITE:
await self._client.activate_preset(id=int(media_id))
elif media_type == BangOlufsenMediaType.DEEZER:
elif media_type in (BangOlufsenMediaType.DEEZER, BangOlufsenMediaType.TIDAL):
try:
if media_id == "flow":
# Play Deezer flow.
if media_id == "flow" and media_type == BangOlufsenMediaType.DEEZER:
deezer_id = None
if "id" in kwargs[ATTR_MEDIA_EXTRA]:
deezer_id = kwargs[ATTR_MEDIA_EXTRA]["id"]
# Play Deezer flow.
await self._client.start_deezer_flow(
user_flow=UserFlow(user_id=deezer_id)
)
# Play a Deezer playlist or album.
# Play a playlist or album.
elif any(match in media_id for match in ("playlist", "album")):
start_from = 0
if "start_from" in kwargs[ATTR_MEDIA_EXTRA]:
@ -659,18 +659,18 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
await self._client.add_to_queue(
play_queue_item=PlayQueueItem(
provider=PlayQueueItemType(value="deezer"),
provider=PlayQueueItemType(value=media_type),
start_now_from_position=start_from,
type="playlist",
uri=media_id,
)
)
# Play a Deezer track.
# Play a track.
else:
await self._client.add_to_queue(
play_queue_item=PlayQueueItem(
provider=PlayQueueItemType(value="deezer"),
provider=PlayQueueItemType(value=media_type),
start_now_from_position=0,
type="track",
uri=media_id,