From 32f2b1270818b58a6acace7602e7033ce100c8cf Mon Sep 17 00:00:00 2001 From: mani Date: Tue, 6 Jan 2026 00:34:19 +0100 Subject: [PATCH] Change subtitle preferences to prefer forced-only and PGS - Change prefer_srt_over_pgs default from true to false PGS has better quality when burned in during transcoding - Add only_forced_subtitles setting (default: true) When enabled, only forced subtitles are selected Regular subtitles are skipped even if they match the language - Skip non-forced subtitles in auto-selection when only_forced is enabled Prevents selecting regular German subs when watching German content Only shows forced subs for foreign language parts This is useful for native language content where only foreign language parts need subtitles (forced), not the entire movie. --- resources/language/resource.language.de/strings.po | 4 ++++ resources/language/resource.language.en_gb/strings.po | 4 ++++ resources/lib/play_utils.py | 11 +++++++++-- resources/settings.xml | 3 ++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/resources/language/resource.language.de/strings.po b/resources/language/resource.language.de/strings.po index 4543f78..49e1786 100644 --- a/resources/language/resource.language.de/strings.po +++ b/resources/language/resource.language.de/strings.po @@ -1325,3 +1325,7 @@ msgstr "Bei keinem Treffer automatisch 'Keine Untertitel' wählen" msgctxt "#30701" msgid "Abspielen mit Track-Auswahl" msgstr "Abspielen mit Track-Auswahl" + +msgctxt "#30702" +msgid "Nur Forced-Untertitel auswählen (keine normalen)" +msgstr "Nur Forced-Untertitel auswählen (keine normalen)" diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 9f4a57b..64abb6b 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -1316,3 +1316,7 @@ msgstr "Auto-select 'No subtitles' if no match found" msgctxt "#30701" msgid "Play with track selection" msgstr "Play with track selection" + +msgctxt "#30702" +msgid "Only select forced subtitles (no regular subs)" +msgstr "Only select forced subtitles (no regular subs)" diff --git a/resources/lib/play_utils.py b/resources/lib/play_utils.py index 37cb6a9..0d9cb72 100644 --- a/resources/lib/play_utils.py +++ b/resources/lib/play_utils.py @@ -810,6 +810,7 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s preferred_sub_lang = sub_lang_index_map[sub_lang_index] if sub_lang_index < len(sub_lang_index_map) else '' prefer_forced = settings.getSetting("prefer_forced_subtitles") == "true" + only_forced = settings.getSetting("only_forced_subtitles") == "true" prefer_srt = settings.getSetting("prefer_srt_over_pgs") == "true" auto_no_subs = settings.getSetting("auto_no_subtitles_if_no_match") == "true" @@ -965,8 +966,8 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s auto_selected = None best_score = -1 - log.debug("Auto-selecting subtitle: preferred_lang={0}, prefer_forced={1}, prefer_srt={2}".format( - preferred_sub_lang, prefer_forced, prefer_srt)) + log.debug("Auto-selecting subtitle: preferred_lang={0}, prefer_forced={1}, only_forced={2}, prefer_srt={3}".format( + preferred_sub_lang, prefer_forced, only_forced, prefer_srt)) for stream in subtitle_streams_data: score = 0 @@ -975,6 +976,12 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s is_forced = stream.get('IsForced', False) is_default = stream.get('IsDefault', False) + # Skip non-forced subtitles if only_forced is enabled + if only_forced and not is_forced: + log.debug("Skipping non-forced subtitle {0} ({1}) - only_forced is enabled".format( + stream_lang, stream['Index'])) + continue + # Score based on language match if preferred_sub_lang and language_matches(stream_lang, preferred_sub_lang): score += 100 diff --git a/resources/settings.xml b/resources/settings.xml index 85958c2..1abe36f 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -54,7 +54,8 @@ - + +