Fix preview stream (#752)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 8 Jul 2023 11:27:29 +0000 (13:27 +0200)
committerGitHub <noreply@github.com>
Sat, 8 Jul 2023 11:27:29 +0000 (13:27 +0200)
music_assistant/server/controllers/media/tracks.py
music_assistant/server/controllers/streams.py
music_assistant/server/controllers/webserver.py

index e7ddf1c886effa8f06bcdd912e5233d0c20f0d7a..267d3afb562eb3d3f24f09adadf0fb58d7e4bcb2 100644 (file)
@@ -2,6 +2,7 @@
 from __future__ import annotations
 
 import asyncio
+import urllib.parse
 from contextlib import suppress
 
 from music_assistant.common.helpers.datetime import utc_timestamp
@@ -196,7 +197,11 @@ class TracksController(MediaControllerBase[Track]):
         if preview := track.metadata.preview:
             return preview
         # fallback to a preview/sample hosted by our own webserver
-        return self.mass.streams.get_preview_url(provider_instance_id_or_domain, item_id)
+        enc_track_id = urllib.parse.quote(item_id)
+        return (
+            f"{self.mass.webserver.base_url}/preview?"
+            f"provider={provider_instance_id_or_domain}&item_id={enc_track_id}"
+        )
 
     async def _match(self, db_track: Track) -> None:
         """Try to find matching track on all providers for the provided (database) track_id.
index 7f576e67ed52189d483d7e60d6a2806db095eac6..91442b217853414f015395571687f8b4b0ba02e8 100644 (file)
@@ -401,14 +401,6 @@ class StreamsController(CoreController):
             url += "?" + urllib.parse.urlencode(query_params)
         return url
 
-    def resolve_preview_url(self, provider_instance_id_or_domain: str, track_id: str) -> str:
-        """Return url to short preview sample."""
-        enc_track_id = urllib.parse.quote(track_id)
-        return (
-            f"{self._server.base_url}/preview?"
-            f"provider={provider_instance_id_or_domain}&item_id={enc_track_id}"
-        )
-
     async def create_multi_client_stream_job(
         self,
         queue_id: str,
index 24f3ba83eb24d5ec4fcb23aea7383153ccd3376e..b9d08dc661c5f48d3dadb8da0efc2bb024a67e75 100644 (file)
@@ -173,6 +173,8 @@ class WebserverController(CoreController):
         routes.append(("GET", "/ws", self._handle_ws_client))
         # also host the image proxy on the webserver
         routes.append(("GET", "/imageproxy", self.mass.metadata.handle_imageproxy))
+        # also host the audio preview service
+        routes.append(("GET", "/preview", self.mass.streams.serve_preview_stream))
         # start the webserver
         await self._server.setup(
             bind_ip=config.get_value(CONF_BIND_IP),