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
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:
@@ -1329,3 +1329,19 @@ msgstr "Abspielen mit Track-Auswahl"
|
|||||||
msgctxt "#30702"
|
msgctxt "#30702"
|
||||||
msgid "Nur Forced-Untertitel auswählen (keine normalen)"
|
msgid "Nur Forced-Untertitel auswählen (keine normalen)"
|
||||||
msgstr "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"
|
||||||
|
|||||||
@@ -1320,3 +1320,19 @@ msgstr "Play with track selection"
|
|||||||
msgctxt "#30702"
|
msgctxt "#30702"
|
||||||
msgid "Only select forced subtitles (no regular subs)"
|
msgid "Only select forced subtitles (no regular subs)"
|
||||||
msgstr "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"
|
||||||
|
|||||||
@@ -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"
|
prefer_forced = settings.getSetting("prefer_forced_subtitles") == "true"
|
||||||
only_forced = settings.getSetting("only_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"
|
auto_no_subs = settings.getSetting("auto_no_subtitles_if_no_match") == "true"
|
||||||
|
|
||||||
# Language code mapping for better matching
|
# 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
|
auto_selected = None
|
||||||
best_score = -1
|
best_score = -1
|
||||||
|
|
||||||
log.debug("Auto-selecting subtitle: preferred_lang={0}, prefer_forced={1}, only_forced={2}, prefer_srt={3}".format(
|
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_srt))
|
preferred_sub_lang, prefer_forced, only_forced, prefer_pgs, prefer_srt))
|
||||||
|
|
||||||
for stream in subtitle_streams_data:
|
for stream in subtitle_streams_data:
|
||||||
score = 0
|
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:
|
if prefer_forced and is_forced:
|
||||||
score += 50
|
score += 50
|
||||||
|
|
||||||
# Bonus for SRT if preferred
|
# Bonus for codec preference
|
||||||
if prefer_srt and codec in ['subrip', 'srt']:
|
if prefer_pgs and codec in ['hdmv_pgs_subtitle', 'pgs']:
|
||||||
score += 30
|
score += 30
|
||||||
elif not prefer_srt and codec in ['hdmv_pgs_subtitle', 'pgs']:
|
elif prefer_srt and codec in ['subrip', 'srt']:
|
||||||
score += 30
|
score += 30
|
||||||
|
|
||||||
# Small bonus for default
|
# Small bonus for default
|
||||||
|
|||||||
@@ -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="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="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="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="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"/>
|
<setting id="max_play_queue" type="slider" label="30447" default="200" range="20, 10, 1000" option="int" visible="true"/>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user