From 3af2e487b91b06a6d22eeecc9947c6376ce23fa8 Mon Sep 17 00:00:00 2001 From: York Date: Sun, 2 Nov 2025 14:01:40 +0800 Subject: [PATCH] add option to skip converting lossy sources to lossless --- config.yaml | 3 +++ main.go | 13 +++++++++---- utils/structs/structs.go | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/config.yaml b/config.yaml index f748af7..a685da0 100644 --- a/config.yaml +++ b/config.yaml @@ -57,3 +57,6 @@ convert-keep-original: false # Keep original file after successful convers convert-skip-if-source-matches: true # If already in target format, skip ffmpeg-path: "ffmpeg" # Override if ffmpeg is not in PATH convert-extra-args: "" # Additional raw args appended (advanced) +# Conversion warnings and behavior +convert-warn-lossy-to-lossless: true # If true, print a warning when converting a detected lossy source to a lossless container +convert-skip-lossy-to-lossless: true # If true, skip converting detected lossy sources to lossless target formats (flac/wav) diff --git a/main.go b/main.go index 1f36f5c..34db15f 100644 --- a/main.go +++ b/main.go @@ -707,10 +707,15 @@ func convertIfNeeded(track *task.Track) { outBase := strings.TrimSuffix(srcPath, ext) outPath := outBase + "." + targetFmt - // Warn about lossy -> lossless - if Config.ConvertWarnLossyToLossless && (targetFmt == "flac" || targetFmt == "wav") && - isLossySource(ext, track.Codec) { - fmt.Println("Warning: Converting lossy source to lossless container will not improve quality.") + // Handle lossy -> lossless cases: optionally skip or warn + if (targetFmt == "flac" || targetFmt == "wav") && isLossySource(ext, track.Codec) { + if Config.ConvertSkipLossyToLossless { + fmt.Println("Skipping conversion: source appears lossy and target is lossless; configured to skip.") + return + } + if Config.ConvertWarnLossyToLossless { + fmt.Println("Warning: Converting lossy source to lossless container will not improve quality.") + } } if _, err := exec.LookPath(Config.FFmpegPath); err != nil { diff --git a/utils/structs/structs.go b/utils/structs/structs.go index 168f391..fe1bdb9 100644 --- a/utils/structs/structs.go +++ b/utils/structs/structs.go @@ -45,6 +45,7 @@ type ConfigSet struct { FFmpegPath string `yaml:"ffmpeg-path"` ConvertExtraArgs string `yaml:"convert-extra-args"` ConvertWarnLossyToLossless bool `yaml:"convert-warn-lossy-to-lossless"` + ConvertSkipLossyToLossless bool `yaml:"convert-skip-lossy-to-lossless"` } type Counter struct {