"""Handle enqueuing of the next item on the player."""
next_item_id = None
status = self.cc.media_controller.status
+ media.uri = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
# lookup position of current track in cast queue
cast_current_item_id = getattr(status, "current_item_id", 0)
cast_queue_items = getattr(status, "items", [])
assert self.device is not None # for type checking
didl_metadata = create_didl_metadata(media)
title = media.title or media.uri
+ url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
try:
- await self.device.async_set_next_transport_uri(media.uri, title, didl_metadata)
+ await self.device.async_set_next_transport_uri(url, title, didl_metadata)
except UpnpError:
self.logger.error(
"Enqueuing the next track failed for player %s - "
async def enqueue_next_media(self, media: PlayerMedia) -> None:
"""Enqueue next command."""
+ media.uri = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
await avt_set_url(
self.mass.http_session,
self.physical_device,
async def enqueue_next_media(self, media: PlayerMedia) -> None:
"""Handle enqueuing of the next (queue) item on the player."""
+ stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
try:
device_info = await self.roku.update()
if app_running:
await self.roku_input(
{
- "u": media.uri,
+ "u": stream_url,
"t": "a",
"albumName": media.album,
"songName": media.title,
)
raise PlayerCommandFailed(msg)
+ stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
if not media.duration:
# Sonos really does not like FLAC streams without duration
- media.uri = media.uri.replace(".flac", ".mp3")
+ stream_url = stream_url.replace(".flac", ".mp3")
didl_metadata = create_didl_metadata(media)
is_announcement = media.media_type == MediaType.ANNOUNCEMENT
force_radio = False if is_announcement else not media.duration
- stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
await asyncio.to_thread(
self.soco.play_uri, stream_url, meta=didl_metadata, force_radio=force_radio
)
raise PlayerCommandFailed(msg)
didl_metadata = create_didl_metadata(media)
+ stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
def add_to_queue() -> None:
self.soco.avTransport.SetNextAVTransportURI(
[
("InstanceID", 0),
- ("NextURI", media.uri),
+ ("NextURI", stream_url),
("NextURIMetaData", didl_metadata),
]
)
async def enqueue_next_media(self, media: PlayerMedia) -> None:
"""Handle enqueuing next media item."""
+ stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media)
await self._handle_play_url_for_slimplayer(
self.client,
- url=media.uri,
+ url=stream_url,
media=media,
enqueue=True,
send_flush=False,