parse contenttype
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Wed, 6 Jul 2022 16:10:20 +0000 (18:10 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Wed, 6 Jul 2022 16:10:20 +0000 (18:10 +0200)
music_assistant/models/enums.py
music_assistant/music_providers/ytmusic.py

index 64dd52151e0b845e6e92d78533121e84ae581223..a8fb7a0c93a0319987f5c230bcb4e78e2abf1e9c 100644 (file)
@@ -97,17 +97,20 @@ class ContentType(Enum):
     def try_parse(cls: "ContentType", string: str) -> "ContentType":
         """Try to parse ContentType from (url)string/extension."""
         tempstr = string.lower()
-        if "." in tempstr:
-            tempstr = tempstr.split(".")[-1]
-        if "," in tempstr:
-            for val in tempstr.split(","):
-                try:
-                    return cls(val.strip())
-                except ValueError:
-                    pass
+        if "audio/" in tempstr:
+            tempstr = tempstr.split("/")[1]
+        for splitter in (".", ","):
+            if splitter in tempstr:
+                for val in tempstr.split(splitter):
+                    try:
+                        return cls(val.strip())
+                    except ValueError:
+                        pass
 
         tempstr = tempstr.split("?")[0]
         tempstr = tempstr.split("&")[0]
+        tempstr = tempstr.split(";")[0]
+        tempstr = tempstr.replace("mp4", "m4a")
         try:
             return cls(tempstr)
         except ValueError:
index 89f196130c06ead6ff9203f0b84ad252c1bccd20..63160dddabb55da714e2578129887929a039ea3e 100644 (file)
@@ -418,7 +418,10 @@ class YoutubeMusicProvider(MusicProvider):
         stream_format = await self._parse_stream_format(track_obj)
         url = await self._parse_stream_url(stream_format=stream_format, item_id=item_id)
         return StreamDetails(
-            provider=self.type, item_id=item_id, data=url, content_type=ContentType.M4A
+            provider=self.type,
+            item_id=item_id,
+            data=url,
+            content_type=ContentType.try_parse(stream_format["mimeType"]),
         )
 
     async def get_audio_stream(