diff --git a/crunchy-cli-core/src/archive/command.rs b/crunchy-cli-core/src/archive/command.rs index 065b3da..ea1aff3 100644 --- a/crunchy-cli-core/src/archive/command.rs +++ b/crunchy-cli-core/src/archive/command.rs @@ -114,6 +114,10 @@ pub struct Archive { #[arg(long)] pub(crate) include_fonts: bool, + #[arg(help = "Omit closed caption subtitles in the downloaded file")] + #[arg(long, default_value_t = false)] + pub(crate) no_closed_caption: bool, + #[arg(help = "Skip files which are already existing")] #[arg(long, default_value_t = false)] pub(crate) skip_existing: bool, @@ -213,6 +217,7 @@ impl Execute for Archive { .output_format(Some("matroska".to_string())) .audio_sort(Some(self.audio.clone())) .subtitle_sort(Some(self.subtitle.clone())) + .no_closed_caption(self.no_closed_caption) .threads(self.threads); for single_formats in single_format_collection.into_iter() { diff --git a/crunchy-cli-core/src/utils/download.rs b/crunchy-cli-core/src/utils/download.rs index df32ad7..317a709 100644 --- a/crunchy-cli-core/src/utils/download.rs +++ b/crunchy-cli-core/src/utils/download.rs @@ -58,6 +58,7 @@ pub struct DownloadBuilder { subtitle_sort: Option>, force_hardsub: bool, download_fonts: bool, + no_closed_caption: bool, threads: usize, ffmpeg_threads: Option, } @@ -74,6 +75,7 @@ impl DownloadBuilder { subtitle_sort: None, force_hardsub: false, download_fonts: false, + no_closed_caption: false, threads: num_cpus::get(), ffmpeg_threads: None, } @@ -91,6 +93,7 @@ impl DownloadBuilder { force_hardsub: self.force_hardsub, download_fonts: self.download_fonts, + no_closed_caption: self.no_closed_caption, download_threads: self.threads, ffmpeg_threads: self.ffmpeg_threads, @@ -124,6 +127,7 @@ pub struct Downloader { force_hardsub: bool, download_fonts: bool, + no_closed_caption: bool, download_threads: usize, ffmpeg_threads: Option, @@ -266,6 +270,10 @@ impl Downloader { }; for (subtitle, not_cc) in format.subtitles.iter() { + if !not_cc && self.no_closed_caption { + continue; + } + if let Some(pb) = &progress_spinner { let mut progress_message = pb.message(); if !progress_message.is_empty() {