From 8832ff23fc1b16b0fe43d6451a290ee16c08a756 Mon Sep 17 00:00:00 2001 From: tesnos6921 <7860497+tesnos6921@users.noreply.github.com> Date: Mon, 18 Mar 2024 18:57:44 -0400 Subject: [PATCH 1/4] Jellyfin transcoding fix --- music_assistant/server/providers/jellyfin/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/music_assistant/server/providers/jellyfin/__init__.py b/music_assistant/server/providers/jellyfin/__init__.py index d6997a187..c4157ae12 100644 --- a/music_assistant/server/providers/jellyfin/__init__.py +++ b/music_assistant/server/providers/jellyfin/__init__.py @@ -812,7 +812,7 @@ async def get_audio_stream( self, streamdetails: StreamDetails, seek_position: int = 0 ) -> AsyncGenerator[bytes, None]: """Return the audio stream for the provider item.""" - url = API.audio_url(self._jellyfin_server.jellyfin, streamdetails.item_id) + url = API.audio_url(self._jellyfin_server.jellyfin, streamdetails.item_id, "", streamdetails.audio_format.content_type) async for chunk in get_http_stream(self.mass, url, streamdetails, seek_position): yield chunk From 436c687d231c361d2d005aba8ff8d258aabf33c2 Mon Sep 17 00:00:00 2001 From: tesnos6921 <7860497+tesnos6921@users.noreply.github.com> Date: Mon, 18 Mar 2024 22:53:39 -0400 Subject: [PATCH 2/4] Include all supported containers --- music_assistant/server/providers/jellyfin/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/music_assistant/server/providers/jellyfin/__init__.py b/music_assistant/server/providers/jellyfin/__init__.py index c4157ae12..2527acced 100644 --- a/music_assistant/server/providers/jellyfin/__init__.py +++ b/music_assistant/server/providers/jellyfin/__init__.py @@ -812,7 +812,7 @@ async def get_audio_stream( self, streamdetails: StreamDetails, seek_position: int = 0 ) -> AsyncGenerator[bytes, None]: """Return the audio stream for the provider item.""" - url = API.audio_url(self._jellyfin_server.jellyfin, streamdetails.item_id, "", streamdetails.audio_format.content_type) + url = API.audio_url(self._jellyfin_server.jellyfin, streamdetails.item_id, "ogg,flac,mp3,aac,mpeg,alac,wav,aiff,wma,m4a,m4b,dsf,opus,wv") async for chunk in get_http_stream(self.mass, url, streamdetails, seek_position): yield chunk From d47068205178f3ae9a37c4e41db979dd1547ce3b Mon Sep 17 00:00:00 2001 From: tesnos6921 <7860497+tesnos6921@users.noreply.github.com> Date: Tue, 19 Mar 2024 11:55:30 -0400 Subject: [PATCH 3/4] Move supported format listing into constants file --- music_assistant/server/providers/jellyfin/__init__.py | 2 +- music_assistant/server/providers/jellyfin/const.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/music_assistant/server/providers/jellyfin/__init__.py b/music_assistant/server/providers/jellyfin/__init__.py index 2527acced..66ffd9fa5 100644 --- a/music_assistant/server/providers/jellyfin/__init__.py +++ b/music_assistant/server/providers/jellyfin/__init__.py @@ -812,7 +812,7 @@ async def get_audio_stream( self, streamdetails: StreamDetails, seek_position: int = 0 ) -> AsyncGenerator[bytes, None]: """Return the audio stream for the provider item.""" - url = API.audio_url(self._jellyfin_server.jellyfin, streamdetails.item_id, "ogg,flac,mp3,aac,mpeg,alac,wav,aiff,wma,m4a,m4b,dsf,opus,wv") + url = API.audio_url(self._jellyfin_server.jellyfin, streamdetails.item_id, SUPPORTED_CONTAINER_FORMATS) async for chunk in get_http_stream(self.mass, url, streamdetails, seek_position): yield chunk diff --git a/music_assistant/server/providers/jellyfin/const.py b/music_assistant/server/providers/jellyfin/const.py index 220539496..677af9694 100644 --- a/music_assistant/server/providers/jellyfin/const.py +++ b/music_assistant/server/providers/jellyfin/const.py @@ -54,6 +54,8 @@ SUPPORTED_COLLECTION_TYPES: Final = [COLLECTION_TYPE_MUSIC] +SUPPORTED_CONTAINER_FORMATS: Final = "ogg,flac,mp3,aac,mpeg,alac,wav,aiff,wma,m4a,m4b,dsf,opus,wv" + PLAYABLE_ITEM_TYPES: Final = [ITEM_TYPE_AUDIO] From c74f5b5310b46bc37bbe801f80585f22cd521bf3 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 21 Mar 2024 01:51:06 +0100 Subject: [PATCH 4/4] fix and lint --- music_assistant/server/providers/jellyfin/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/music_assistant/server/providers/jellyfin/__init__.py b/music_assistant/server/providers/jellyfin/__init__.py index 66ffd9fa5..dccc2cd41 100644 --- a/music_assistant/server/providers/jellyfin/__init__.py +++ b/music_assistant/server/providers/jellyfin/__init__.py @@ -95,6 +95,7 @@ ITEM_TYPE_ARTIST, ITEM_TYPE_AUDIO, MAX_IMAGE_WIDTH, + SUPPORTED_CONTAINER_FORMATS, USER_APP_NAME, ) @@ -812,7 +813,9 @@ async def get_audio_stream( self, streamdetails: StreamDetails, seek_position: int = 0 ) -> AsyncGenerator[bytes, None]: """Return the audio stream for the provider item.""" - url = API.audio_url(self._jellyfin_server.jellyfin, streamdetails.item_id, SUPPORTED_CONTAINER_FORMATS) + url = API.audio_url( + self._jellyfin_server.jellyfin, streamdetails.item_id, SUPPORTED_CONTAINER_FORMATS + ) async for chunk in get_http_stream(self.mass, url, streamdetails, seek_position): yield chunk