Fix snapcast provider in the dynamic generation of tcp streams (#955)
authorSantiago Soto <81064015+SantiagoSotoC@users.noreply.github.com>
Fri, 8 Dec 2023 11:25:46 +0000 (08:25 -0300)
committerGitHub <noreply@github.com>
Fri, 8 Dec 2023 11:25:46 +0000 (12:25 +0100)
music_assistant/server/providers/snapcast/__init__.py

index a21ff0c12aeebb6269f080c5cd1bdac4417d8516..72c20db54463c2a0596ac3cb2d42b0455a843d9d 100644 (file)
@@ -192,9 +192,12 @@ class SnapCastProvider(PlayerProvider):
         player = self.mass.players.get(player_id)
         stream = self._get_snapstream(player_id)
         if stream.path != "":
-            await self._get_snapgroup(player_id).set_stream(await self._get_empty_stream())
+            new_stream_id = await self._get_empty_stream()
+            await self._get_snapgroup(player_id).set_stream(new_stream_id)
+            stream = self._snapserver.stream(new_stream_id)
 
         stream_host = stream._stream.get("uri").get("host")
+        stream_host = stream_host.replace("0.0.0.0", self.snapcast_server_host)
         ffmpeg = (
             FFmpeg()
             .option("y")
@@ -208,6 +211,7 @@ class SnapCastProvider(PlayerProvider):
                 ar=48000,
             )
         )
+
         await self.cmd_stop(player_id)
 
         ffmpeg_task = self.mass.create_task(ffmpeg.execute())
@@ -295,9 +299,9 @@ class SnapCastProvider(PlayerProvider):
         port = 4953
         name = str(uuid.uuid4())
         while True:
-            port += 1
             new_stream = await self._snapserver.stream_add_stream(
-                f"tcp://{self.snapcast_server_host}:{port}?name={name}"
+                f"tcp://0.0.0.0:{port}?name={name}"
             )
-            if new_stream["id"] not in used_streams:
+            if "id" in new_stream and new_stream["id"] not in used_streams:
                 return new_stream["id"]
+            port += 1