From 8d12b735ffc050f01dc51e0fdfa86dd1ec8132c6 Mon Sep 17 00:00:00 2001 From: Andy Date: Sun, 3 Aug 2025 22:00:21 +0000 Subject: [PATCH] feat(dl): Add option to include forced subtitle tracks --- unshackle/commands/dl.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/unshackle/commands/dl.py b/unshackle/commands/dl.py index baf5ba1..2b0a4f0 100644 --- a/unshackle/commands/dl.py +++ b/unshackle/commands/dl.py @@ -148,6 +148,7 @@ class dl: help="Language wanted for Video, you would use this if the video language doesn't match the audio.", ) @click.option("-sl", "--s-lang", type=LANGUAGE_RANGE, default=["all"], help="Language wanted for Subtitles.") + @click.option("-fs", "--forced-subs", is_flag=True, default=False, help="Include forced subtitle tracks.") @click.option( "--proxy", type=str, @@ -405,6 +406,7 @@ class dl: lang: list[str], v_lang: list[str], s_lang: list[str], + forced_subs: bool, sub_format: Optional[Subtitle.Codec], video_only: bool, audio_only: bool, @@ -672,7 +674,8 @@ class dl: self.log.error(f"There's no {s_lang} Subtitle Track...") sys.exit(1) - title.tracks.select_subtitles(lambda x: not x.forced or is_close_match(x.language, lang)) + if not forced_subs: + title.tracks.select_subtitles(lambda x: not x.forced or is_close_match(x.language, lang)) # filter audio tracks # might have no audio tracks if part of the video, e.g. transport stream hls