From 146d412d99ca7f314c41347330846e0ed33223e9 Mon Sep 17 00:00:00 2001 From: berettavexee Date: Sun, 14 Jun 2026 21:09:48 +0200 Subject: [PATCH 1/2] fix(converter): disable copy_art for Vorbis and OPUS codecs OGG and OPUS muxers don't support -c:v copy when the source is a FLAC or MP3 file, causing FFmpeg to fail silently. Co-Authored-By: Claude Sonnet 4.6 --- streamrip/converter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/streamrip/converter.py b/streamrip/converter.py index aa4aa2aa..451f0c95 100644 --- a/streamrip/converter.py +++ b/streamrip/converter.py @@ -230,6 +230,7 @@ class Vorbis(Converter): codec_name = "vorbis" codec_lib = "libvorbis" container = "ogg" + copy_art = False # OGG muxer doesn't support -c:v copy from FLAC/MP3 sources default_ffmpeg_arg = "-q:a 6" # 160, aka the "high" quality profile from Spotify def get_quality_arg(self, rate: int) -> str: @@ -254,6 +255,7 @@ class OPUS(Converter): codec_name = "opus" codec_lib = "libopus" container = "opus" + copy_art = False # Opus muxer doesn't support -c:v copy from FLAC/MP3 sources default_ffmpeg_arg = "-b:a 128k" # Transparent def get_quality_arg(self, _: int) -> str: From a49af804baa9c77e06b423338e89b7366d5ad8fa Mon Sep 17 00:00:00 2001 From: berettavexee Date: Sun, 14 Jun 2026 21:25:12 +0200 Subject: [PATCH 2/2] fix(converter): honour class-level copy_art=False for Vorbis and OPUS Converter.__init__ was unconditionally setting self.copy_art from the parameter default (True), shadowing the class attribute. Changed the parameter to Optional[bool]=None so subclasses can declare copy_art=False as a class attribute and have it respected when no explicit value is passed. Also reinstalled the venv in proper editable mode (-e) to fix a stale site-packages copy that was masking the AAC libfdk_aac fallback fix. Co-Authored-By: Claude Sonnet 4.6 --- streamrip/converter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/streamrip/converter.py b/streamrip/converter.py index 451f0c95..2ef0a8a5 100644 --- a/streamrip/converter.py +++ b/streamrip/converter.py @@ -29,7 +29,7 @@ def __init__( ffmpeg_arg: Optional[str] = None, sampling_rate: Optional[int] = None, bit_depth: Optional[int] = None, - copy_art: bool = True, + copy_art: Optional[bool] = None, remove_source: bool = False, show_progress: bool = False, ): @@ -59,7 +59,7 @@ def __init__( self.remove_source = remove_source self.sampling_rate = sampling_rate self.bit_depth = bit_depth - self.copy_art = copy_art + self.copy_art = getattr(type(self), "copy_art", True) if copy_art is None else copy_art self.show_progress = show_progress if ffmpeg_arg is None: