Replace subtitle codec boolean with dropdown preference
Some checks failed
Build JellyCon / build (py2) (push) Has been cancelled
Build JellyCon / build (py3) (push) Has been cancelled
CodeQL Analysis / analyze (python, 3.9) (push) Has been cancelled
Release Drafter / Update release draft (push) Has been cancelled
Test JellyCon / test (3.9) (push) Has been cancelled

- Replace prefer_srt_over_pgs boolean with subtitle_codec_preference dropdown
  Options: 0=Prefer PGS (default), 1=Prefer SRT, 2=No preference

- More intuitive UI with descriptive labels:
  - PGS bevorzugt (bessere Qualität beim Brennen)
  - SRT bevorzugt (flexibel, kann gestreamt werden)
  - Keine Präferenz

- Update scoring logic to handle three states instead of two
- Clarify that only_forced filter applies only during auto-selection
  Manual selection via dialog still shows all subtitles
This commit is contained in:
mani
2026-01-06 00:36:25 +01:00
parent 32f2b12708
commit 3184fa6f89
4 changed files with 45 additions and 7 deletions

View File

@@ -1329,3 +1329,19 @@ msgstr "Abspielen mit Track-Auswahl"
msgctxt "#30702"
msgid "Nur Forced-Untertitel auswählen (keine normalen)"
msgstr "Nur Forced-Untertitel auswählen (keine normalen)"
msgctxt "#30703"
msgid "Untertitel-Codec-Präferenz"
msgstr "Untertitel-Codec-Präferenz"
msgctxt "#30704"
msgid "PGS bevorzugt (bessere Qualität beim Brennen)"
msgstr "PGS bevorzugt (bessere Qualität beim Brennen)"
msgctxt "#30705"
msgid "SRT bevorzugt (flexibel, kann gestreamt werden)"
msgstr "SRT bevorzugt (flexibel, kann gestreamt werden)"
msgctxt "#30706"
msgid "Keine Präferenz"
msgstr "Keine Präferenz"

View File

@@ -1320,3 +1320,19 @@ msgstr "Play with track selection"
msgctxt "#30702"
msgid "Only select forced subtitles (no regular subs)"
msgstr "Only select forced subtitles (no regular subs)"
msgctxt "#30703"
msgid "Subtitle codec preference"
msgstr "Subtitle codec preference"
msgctxt "#30704"
msgid "Prefer PGS (better quality when burned)"
msgstr "Prefer PGS (better quality when burned)"
msgctxt "#30705"
msgid "Prefer SRT (flexible, can be streamed)"
msgstr "Prefer SRT (flexible, can be streamed)"
msgctxt "#30706"
msgid "No preference"
msgstr "No preference"

View File

@@ -811,7 +811,13 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s
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"
# Subtitle codec preference: 0=PGS, 1=SRT, 2=No preference
codec_pref_index = int(settings.getSetting("subtitle_codec_preference") or "0")
prefer_pgs = codec_pref_index == 0
prefer_srt = codec_pref_index == 1
# codec_pref_index == 2 means no preference (both prefer_pgs and prefer_srt are False)
auto_no_subs = settings.getSetting("auto_no_subtitles_if_no_match") == "true"
# Language code mapping for better matching
@@ -966,8 +972,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}, only_forced={2}, prefer_srt={3}".format(
preferred_sub_lang, prefer_forced, only_forced, prefer_srt))
log.debug("Auto-selecting subtitle: preferred_lang={0}, prefer_forced={1}, only_forced={2}, prefer_pgs={3}, prefer_srt={4}".format(
preferred_sub_lang, prefer_forced, only_forced, prefer_pgs, prefer_srt))
for stream in subtitle_streams_data:
score = 0
@@ -990,10 +996,10 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s
if prefer_forced and is_forced:
score += 50
# Bonus for SRT if preferred
if prefer_srt and codec in ['subrip', 'srt']:
# Bonus for codec preference
if prefer_pgs and codec in ['hdmv_pgs_subtitle', 'pgs']:
score += 30
elif not prefer_srt and codec in ['hdmv_pgs_subtitle', 'pgs']:
elif prefer_srt and codec in ['subrip', 'srt']:
score += 30
# Small bonus for default

View File

@@ -55,7 +55,7 @@
<setting id="preferred_subtitle_language" type="select" label="30688" lvalues="30699|30691|30692|30693|30694|30695|30696|30697|30698" default="1" visible="true"/>
<setting id="prefer_forced_subtitles" type="bool" label="30689" default="true" visible="true"/>
<setting id="only_forced_subtitles" type="bool" label="30702" default="true" visible="true"/>
<setting id="prefer_srt_over_pgs" type="bool" label="30690" default="false" visible="true"/>
<setting id="subtitle_codec_preference" type="select" label="30703" lvalues="30704|30705|30706" default="0" visible="true"/>
<setting id="auto_no_subtitles_if_no_match" type="bool" label="30700" default="true" visible="true"/>
<setting id="max_play_queue" type="slider" label="30447" default="200" range="20, 10, 1000" option="int" visible="true"/>