From a5a73a2f4b38a9a5a1fb726d138a5c921d446fc6 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Fri, 15 Jul 2022 00:01:10 +0200 Subject: [PATCH] Small fixes (#417) * no cover image for local HA files * optimize image thumbs * Fix audio preview * contentFeatures DLNA header --- music_assistant/controllers/streams.py | 1 + music_assistant/helpers/audio.py | 16 +++++++++++----- music_assistant/helpers/images.py | 2 +- music_assistant/music_providers/url.py | 2 ++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/music_assistant/controllers/streams.py b/music_assistant/controllers/streams.py index 77fd2583..7f235e13 100644 --- a/music_assistant/controllers/streams.py +++ b/music_assistant/controllers/streams.py @@ -188,6 +188,7 @@ class StreamsController: headers = { "Content-Type": f"audio/{queue_stream.output_format.value}", "transferMode.dlna.org": "Streaming", + "contentFeatures.dlna.org": "DLNA.ORG_OP=00;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=0d500000000000000000000000000000", "Cache-Control": "no-cache", } diff --git a/music_assistant/helpers/audio.py b/music_assistant/helpers/audio.py index 23abd641..b913c461 100644 --- a/music_assistant/helpers/audio.py +++ b/music_assistant/helpers/audio.py @@ -567,11 +567,16 @@ async def get_preview_stream( "-hide_banner", "-loglevel", "quiet", - "-f", - streamdetails.content_type.value, - "-i", - "-", + "-ignore_unknown", ] + if streamdetails.direct: + input_args += ["-ss", "30", "-i", streamdetails.direct] + else: + # the input is received from pipe/stdin + if streamdetails.content_type != ContentType.UNKNOWN: + input_args += ["-f", streamdetails.content_type.value] + input_args += ["-i", "-"] + output_args = ["-to", "30", "-f", "mp3", "-"] args = input_args + output_args async with AsyncProcess(args, True) as ffmpeg_proc: @@ -584,7 +589,8 @@ async def get_preview_stream( # write eof when last packet is received ffmpeg_proc.write_eof() - ffmpeg_proc.attach_task(writer()) + if not streamdetails.direct: + ffmpeg_proc.attach_task(writer()) # yield chunks from stdout async for chunk in ffmpeg_proc.iter_any(): diff --git a/music_assistant/helpers/images.py b/music_assistant/helpers/images.py index 767c2f0b..a9208202 100644 --- a/music_assistant/helpers/images.py +++ b/music_assistant/helpers/images.py @@ -37,7 +37,7 @@ async def create_thumbnail( img = Image.open(data) if size: img.thumbnail((size, size), Image.ANTIALIAS) - img.save(data, format="png") + img.convert("RGB").save(data, "PNG", optimize=True) return data.getvalue() return await mass.loop.run_in_executor(None, _create_image) diff --git a/music_assistant/music_providers/url.py b/music_assistant/music_providers/url.py index 049eadba..90a138ca 100644 --- a/music_assistant/music_providers/url.py +++ b/music_assistant/music_providers/url.py @@ -152,6 +152,8 @@ class URLProvider(MusicProvider): else: # parse info with ffprobe (and store in cache) media_info = await parse_tags(url) + if "authSig" in url: + media_info.has_cover_image = False await self.mass.cache.set(cache_key, media_info.raw) return (item_id, url, media_info) -- 2.34.1