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!.")
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",
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"])
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()
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,
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()