From 6efdfb839634951718c215ac18da29fdb9affbfd Mon Sep 17 00:00:00 2001 From: Fabian Munkes <105975993+fmunkes@users.noreply.github.com> Date: Wed, 7 May 2025 19:18:36 +0200 Subject: [PATCH] chore: sonos - use upnp helpers (#2179) * sonos - use helpers * revert accidental change --------- Co-authored-by: Marcel van der Veldt --- music_assistant/providers/sonos/provider.py | 34 +++++---------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/music_assistant/providers/sonos/provider.py b/music_assistant/providers/sonos/provider.py index 8bbb233c..c2f5c888 100644 --- a/music_assistant/providers/sonos/provider.py +++ b/music_assistant/providers/sonos/provider.py @@ -31,7 +31,10 @@ from music_assistant.constants import ( create_sample_rates_config_entry, ) from music_assistant.helpers.tags import async_parse_tags -from music_assistant.helpers.upnp import create_didl_metadata_str +from music_assistant.helpers.upnp import ( + get_xml_soap_set_next_url, + get_xml_soap_set_url, +) from music_assistant.models.player_provider import PlayerProvider from .const import CONF_AIRPLAY_MODE @@ -599,23 +602,12 @@ class SonosPlayerProvider(PlayerProvider): media: PlayerMedia, ) -> None: """Handle PLAY MEDIA using the legacy upnp api.""" - xml_data = f""" - - - - 0 - {media.uri} - {create_didl_metadata_str(media)} - - - - """ + xml_data, soap_action = get_xml_soap_set_url(media) player_ip = sonos_player.mass_player.device_info.ip_address async with self.mass.http_session.post( f"http://{player_ip}:1400/MediaRenderer/AVTransport/Control", headers={ - "SOAPACTION": "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI", + "SOAPACTION": soap_action, "Content-Type": "text/xml; charset=utf-8", "Connection": "close", }, @@ -632,22 +624,12 @@ class SonosPlayerProvider(PlayerProvider): self, sonos_player: SonosPlayer, media: PlayerMedia ) -> None: """Handle enqueuing of the next queue item using the legacy unpnp api.""" - xml_data = f""" - - - - 0 - {media.uri} - {create_didl_metadata_str(media)} - - - - """ + xml_data, soap_action = get_xml_soap_set_next_url(media) player_ip = sonos_player.mass_player.device_info.ip_address async with self.mass.http_session.post( f"http://{player_ip}:1400/MediaRenderer/AVTransport/Control", headers={ - "SOAPACTION": "urn:schemas-upnp-org:service:AVTransport:1#SetNextAVTransportURI", + "SOAPACTION": soap_action, "Content-Type": "text/xml; charset=utf-8", "Connection": "close", }, -- 2.34.1