diff --git a/src/CCVTAC.Console/Downloading/Downloader.cs b/src/CCVTAC.Console/Downloading/Downloader.cs index b00ee84..f37b47e 100644 --- a/src/CCVTAC.Console/Downloading/Downloader.cs +++ b/src/CCVTAC.Console/Downloading/Downloader.cs @@ -108,7 +108,7 @@ private static string GenerateDownloadArgs( _ => [ "--extract-audio", settings.AudioFormat == "default" ? string.Empty : $"-f {settings.AudioFormat}", - "--audio-quality 0", // Highest quality + $"--audio-quality {settings.AudioQuality}", "--write-thumbnail --convert-thumbnails jpg", // For album art writeJson, // Contains metadata trimFileNames, diff --git a/src/CCVTAC.FSharp/Settings.fs b/src/CCVTAC.FSharp/Settings.fs index d5d80a0..99584fd 100644 --- a/src/CCVTAC.FSharp/Settings.fs +++ b/src/CCVTAC.FSharp/Settings.fs @@ -33,6 +33,7 @@ module Settings = [<JsonPropertyName("historyFile")>] HistoryFile: string [<JsonPropertyName("historyDisplayCount")>] HistoryDisplayCount: byte [<JsonPropertyName("audioFormat")>] AudioFormat: string + [<JsonPropertyName("audioQuality")>] AudioQuality: byte [<JsonPropertyName("splitChapters")>] SplitChapters: bool [<JsonPropertyName("sleepSecondsBetweenDownloads")>] SleepSecondsBetweenDownloads: uint16 [<JsonPropertyName("sleepSecondsBetweenBatches")>] SleepSecondsBetweenBatches: uint16 @@ -81,6 +82,8 @@ module Settings = onOrOff settings.QuietMode) ("Audio format", summarizeAudioFormat settings.AudioFormat) + ("Audio quality (10 up to 0)", + settings.AudioQuality |> sprintf "%B") ("Sleep between batches (URLs)", settings.SleepSecondsBetweenBatches |> int |> pluralize "second") ("Sleep between downloads", @@ -156,9 +159,11 @@ module Settings = Error $"No move-to directory was specified." | { MoveToDirectory = m } when dirMissing m -> Error $"Move-to directory \"{m}\" is missing." + | { AudioQuality = q } when q > 10uy -> + Error $"Audio quality must be between 10 (lowest) and 0 (highest)." | { AudioFormat = af } when not (validAudioFormat af) -> let approved = supportedAudioFormats |> String.concat ", " - Error $"{af} is not a valid audio format. Use \"default\" or one of the following: {approved}." + Error $"\"{af}\" is not a valid audio format. Use \"default\" or one of the following: {approved}." | _ -> Ok settings @@ -204,6 +209,7 @@ module Settings = SleepSecondsBetweenDownloads = 10us SleepSecondsBetweenBatches = 20us AudioFormat = String.Empty + AudioQuality = 0uy QuietMode = false EmbedImages = true DoNotEmbedImageUploaders = [||]