diff --git a/homeassistant/components/sonos/media_player.py b/homeassistant/components/sonos/media_player.py
index 0c66484202f..a774de0ae5b 100644
--- a/homeassistant/components/sonos/media_player.py
+++ b/homeassistant/components/sonos/media_player.py
@@ -462,11 +462,20 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity):
"""Play a favorite."""
uri = favorite.reference.get_uri()
soco = self.coordinator.soco
- if soco.music_source_from_uri(uri) in [
- MUSIC_SRC_RADIO,
- MUSIC_SRC_LINE_IN,
- ]:
- soco.play_uri(uri, title=favorite.title, timeout=LONG_SERVICE_TIMEOUT)
+ if (
+ soco.music_source_from_uri(uri)
+ in [
+ MUSIC_SRC_RADIO,
+ MUSIC_SRC_LINE_IN,
+ ]
+ or favorite.reference.item_class == "object.item.audioItem.audioBook"
+ ):
+ soco.play_uri(
+ uri,
+ title=favorite.title,
+ meta=favorite.resource_meta_data,
+ timeout=LONG_SERVICE_TIMEOUT,
+ )
else:
soco.clear_queue()
soco.add_to_queue(favorite.reference, timeout=LONG_SERVICE_TIMEOUT)
diff --git a/tests/components/sonos/test_media_player.py b/tests/components/sonos/test_media_player.py
index cec40c997a7..78d88a1ea98 100644
--- a/tests/components/sonos/test_media_player.py
+++ b/tests/components/sonos/test_media_player.py
@@ -692,6 +692,7 @@ async def test_select_source_line_in_tv(
"play_uri": 1,
"play_uri_uri": "x-sonosapi-radio:ST%3aetc",
"play_uri_title": "James Taylor Radio",
+ "play_uri_meta": '- James Taylor Radioobject.item.audioItem.audioBroadcast.#stationSA_RINCON60423_X_#Svc60423-99999999-Token
',
},
),
(
@@ -700,6 +701,16 @@ async def test_select_source_line_in_tv(
"play_uri": 1,
"play_uri_uri": "x-sonosapi-hls:Api%3atune%3aliveAudio%3ajazzcafe%3aetc",
"play_uri_title": "66 - Watercolors",
+ "play_uri_meta": '- 66 - Watercolorsobject.item.audioItem.audioBroadcastSA_RINCON9479_X_#Svc9479-99999999-Token
',
+ },
+ ),
+ (
+ "American Tall Tales",
+ {
+ "play_uri": 1,
+ "play_uri_uri": "x-rincon-cpcontainer:101340c8reftitle%C9F27_com?sid=239&flags=16584&sn=5",
+ "play_uri_title": "American Tall Tales",
+ "play_uri_meta": '- American Tall Talesobject.item.audioItem.audioBookSA_RINCON61191_X_#Svc6-0-Token
',
},
),
],
@@ -726,6 +737,7 @@ async def test_select_source_play_uri(
soco_mock.play_uri.assert_called_with(
result.get("play_uri_uri"),
title=result.get("play_uri_title"),
+ meta=result.get("play_uri_meta"),
timeout=LONG_SERVICE_TIMEOUT,
)