mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Add Tidal play_media support to Bang & Olufsen (#119838)
Add tidal play_media support
This commit is contained in:
parent
041746a50b
commit
3046329f4f
@ -54,6 +54,7 @@ class BangOlufsenMediaType(StrEnum):
|
|||||||
FAVOURITE = "favourite"
|
FAVOURITE = "favourite"
|
||||||
DEEZER = "deezer"
|
DEEZER = "deezer"
|
||||||
RADIO = "radio"
|
RADIO = "radio"
|
||||||
|
TIDAL = "tidal"
|
||||||
TTS = "provider"
|
TTS = "provider"
|
||||||
OVERLAY_TTS = "overlay_tts"
|
OVERLAY_TTS = "overlay_tts"
|
||||||
|
|
||||||
@ -118,6 +119,7 @@ VALID_MEDIA_TYPES: Final[tuple] = (
|
|||||||
BangOlufsenMediaType.DEEZER,
|
BangOlufsenMediaType.DEEZER,
|
||||||
BangOlufsenMediaType.RADIO,
|
BangOlufsenMediaType.RADIO,
|
||||||
BangOlufsenMediaType.TTS,
|
BangOlufsenMediaType.TTS,
|
||||||
|
BangOlufsenMediaType.TIDAL,
|
||||||
BangOlufsenMediaType.OVERLAY_TTS,
|
BangOlufsenMediaType.OVERLAY_TTS,
|
||||||
MediaType.MUSIC,
|
MediaType.MUSIC,
|
||||||
MediaType.URL,
|
MediaType.URL,
|
||||||
|
@ -638,20 +638,20 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
|
|||||||
elif media_type == BangOlufsenMediaType.FAVOURITE:
|
elif media_type == BangOlufsenMediaType.FAVOURITE:
|
||||||
await self._client.activate_preset(id=int(media_id))
|
await self._client.activate_preset(id=int(media_id))
|
||||||
|
|
||||||
elif media_type == BangOlufsenMediaType.DEEZER:
|
elif media_type in (BangOlufsenMediaType.DEEZER, BangOlufsenMediaType.TIDAL):
|
||||||
try:
|
try:
|
||||||
if media_id == "flow":
|
# Play Deezer flow.
|
||||||
|
if media_id == "flow" and media_type == BangOlufsenMediaType.DEEZER:
|
||||||
deezer_id = None
|
deezer_id = None
|
||||||
|
|
||||||
if "id" in kwargs[ATTR_MEDIA_EXTRA]:
|
if "id" in kwargs[ATTR_MEDIA_EXTRA]:
|
||||||
deezer_id = kwargs[ATTR_MEDIA_EXTRA]["id"]
|
deezer_id = kwargs[ATTR_MEDIA_EXTRA]["id"]
|
||||||
|
|
||||||
# Play Deezer flow.
|
|
||||||
await self._client.start_deezer_flow(
|
await self._client.start_deezer_flow(
|
||||||
user_flow=UserFlow(user_id=deezer_id)
|
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")):
|
elif any(match in media_id for match in ("playlist", "album")):
|
||||||
start_from = 0
|
start_from = 0
|
||||||
if "start_from" in kwargs[ATTR_MEDIA_EXTRA]:
|
if "start_from" in kwargs[ATTR_MEDIA_EXTRA]:
|
||||||
@ -659,18 +659,18 @@ class BangOlufsenMediaPlayer(BangOlufsenEntity, MediaPlayerEntity):
|
|||||||
|
|
||||||
await self._client.add_to_queue(
|
await self._client.add_to_queue(
|
||||||
play_queue_item=PlayQueueItem(
|
play_queue_item=PlayQueueItem(
|
||||||
provider=PlayQueueItemType(value="deezer"),
|
provider=PlayQueueItemType(value=media_type),
|
||||||
start_now_from_position=start_from,
|
start_now_from_position=start_from,
|
||||||
type="playlist",
|
type="playlist",
|
||||||
uri=media_id,
|
uri=media_id,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Play a Deezer track.
|
# Play a track.
|
||||||
else:
|
else:
|
||||||
await self._client.add_to_queue(
|
await self._client.add_to_queue(
|
||||||
play_queue_item=PlayQueueItem(
|
play_queue_item=PlayQueueItem(
|
||||||
provider=PlayQueueItemType(value="deezer"),
|
provider=PlayQueueItemType(value=media_type),
|
||||||
start_now_from_position=0,
|
start_now_from_position=0,
|
||||||
type="track",
|
type="track",
|
||||||
uri=media_id,
|
uri=media_id,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user