fix streams
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 23 Mar 2023 23:14:08 +0000 (00:14 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 23 Mar 2023 23:14:08 +0000 (00:14 +0100)
music_assistant/server/controllers/streams.py
music_assistant/server/controllers/webserver.py
music_assistant/server/server.py

index 445b0c4e112c1768fc6a4123fa8fab1b819bc2e5..fe77b8ac4b6d0dba62eec313037b7351356652b1 100644 (file)
@@ -185,12 +185,6 @@ class StreamsController:
 
     async def setup(self) -> None:
         """Async initialize of module."""
-        self.mass.webserver.register_route("/stream/preview", self._serve_preview)
-        self.mass.webserver.register_route(
-            "/stream/{player_id}/{queue_item_id}/{stream_id}.{fmt}",
-            self._serve_queue_stream,
-        )
-
         ffmpeg_present, libsoxr_support, version = await check_audio_support()
         if not ffmpeg_present:
             LOGGER.error("FFmpeg binary not found on your system, playback will NOT work!.")
@@ -293,7 +287,7 @@ class StreamsController:
             f"provider={provider_domain_or_instance_id}&item_id={enc_track_id}"
         )
 
-    async def _serve_queue_stream(self, request: web.Request) -> web.Response:
+    async def serve_queue_stream(self, request: web.Request) -> web.Response:
         """Serve Queue Stream audio to player(s)."""
         LOGGER.debug(
             "Got %s request to %s from %s\nheaders: %s\n",
@@ -602,7 +596,7 @@ class StreamsController:
 
         LOGGER.info("Finished Queue Flow stream for Queue %s", queue.display_name)
 
-    async def _serve_preview(self, request: web.Request):
+    async def serve_preview(self, request: web.Request):
         """Serve short preview sample."""
         provider_domain_or_instance_id = request.query["provider"]
         item_id = urllib.parse.unquote(request.query["item_id"])
index a9412d7b0a522766ee70b3e10d91e47ec3436e88..7b5bcc19945b8f98ce87dcd2944c847a725a9775 100644 (file)
@@ -44,6 +44,12 @@ class WebserverController:
         self.port = await select_free_port(8095, 9200)
         LOGGER.info("Starting webserver on port %s", self.port)
         self._apprunner = web.AppRunner(self.webapp, access_log=None)
+        # setup stream paths
+        self.webapp.router.add_get("/stream/preview", self.mass.streams.serve_preview)
+        self.webapp.router.add_get(
+            "/stream/{player_id}/{queue_item_id}/{stream_id}.{fmt}",
+            self.mass.streams.serve_queue_stream,
+        )
 
         # setup frontend
         frontend_dir = locate_frontend()
@@ -107,7 +113,7 @@ class WebserverController:
                 return await handler(request)
         # deny all other requests
         LOGGER.debug(
-            "Received %s request to %s from %s\nheaders: %s\n",
+            "Received unhandled %s request to %s from %s\nheaders: %s\n",
             request.method,
             request.path,
             request.remote,
index 9310a4e5c0e817237ed6a931d167e385761dd5bf..8e2c0c0562b83d85e1215fad547fd8778496f454 100644 (file)
@@ -113,10 +113,10 @@ class MusicAssistant:
             await self.unload_provider(prov_id)
         # stop core controllers
         await self.streams.close()
+        await self.webserver.close()
         await self.metadata.close()
         await self.music.close()
         await self.players.close()
-        await self.webserver.close()
         # cleanup cache and config
         await self.config.close()
         await self.cache.close()