From 5c5d14c045e7c152806a75c6ee0088e92c09c32b Mon Sep 17 00:00:00 2001 From: morpheus65535 Date: Wed, 25 Aug 2021 09:22:52 -0400 Subject: [PATCH] Improved how custom post-processing deal with subtitles language modifier (HI and forced). #1516 --- bazarr/api.py | 4 +++ bazarr/get_subtitle.py | 32 +++++++++++++++++------ bazarr/helper.py | 29 +++++++++++++++----- frontend/src/Settings/Subtitles/index.tsx | 15 +++++++++-- 4 files changed, 64 insertions(+), 16 deletions(-) diff --git a/bazarr/api.py b/bazarr/api.py index 29a4c8486..d7ffab4f5 100644 --- a/bazarr/api.py +++ b/bazarr/api.py @@ -857,6 +857,7 @@ class EpisodesSubtitles(Resource): language = request.form.get('language') forced = True if request.form.get('forced') == 'on' else False + hi = True if request.form.get('hi') == 'on' else False subFile = request.files.get('file') _, ext = os.path.splitext(subFile.filename) @@ -868,6 +869,7 @@ class EpisodesSubtitles(Resource): result = manual_upload_subtitle(path=episodePath, language=language, forced=forced, + hi=hi, title=title, scene_name=sceneName, media_type='series', @@ -1086,6 +1088,7 @@ class MoviesSubtitles(Resource): language = request.form.get('language') forced = True if request.form.get('forced') == 'true' else False + hi = True if request.form.get('hi') == 'true' else False subFile = request.files.get('file') _, ext = os.path.splitext(subFile.filename) @@ -1097,6 +1100,7 @@ class MoviesSubtitles(Resource): result = manual_upload_subtitle(path=moviePath, language=language, forced=forced, + hi=hi, title=title, scene_name=sceneName, media_type='movie', diff --git a/bazarr/get_subtitle.py b/bazarr/get_subtitle.py index 06c520757..9f9f6212b 100644 --- a/bazarr/get_subtitle.py +++ b/bazarr/get_subtitle.py @@ -249,7 +249,8 @@ def download_subtitle(path, language, audio_language, hi, forced, providers, pro command = pp_replace(postprocessing_cmd, path, downloaded_path, downloaded_language, downloaded_language_code2, downloaded_language_code3, audio_language, audio_language_code2, audio_language_code3, subtitle.language.forced, - percent_score, subtitle_id, downloaded_provider, series_id, episode_id) + percent_score, subtitle_id, downloaded_provider, series_id, episode_id, + subtitle.language.hi) if media_type == 'series': use_pp_threshold = settings.general.getboolean('use_postprocessing_threshold') @@ -569,7 +570,8 @@ def manual_download_subtitle(path, language, audio_language, hi, forced, subtitl command = pp_replace(postprocessing_cmd, path, downloaded_path, downloaded_language, downloaded_language_code2, downloaded_language_code3, audio_language, audio_language_code2, audio_language_code3, subtitle.language.forced, - percent_score, subtitle_id, downloaded_provider, series_id, episode_id) + percent_score, subtitle_id, downloaded_provider, series_id, episode_id, + subtitle.language.hi) if media_type == 'series': use_pp_threshold = settings.general.getboolean('use_postprocessing_threshold') @@ -610,7 +612,7 @@ def manual_download_subtitle(path, language, audio_language, hi, forced, subtitl logging.debug('BAZARR Ended manually downloading Subtitles for file: ' + path) -def manual_upload_subtitle(path, language, forced, title, scene_name, media_type, subtitle, audio_language): +def manual_upload_subtitle(path, language, forced, hi, title, scene_name, media_type, subtitle, audio_language): logging.debug('BAZARR Manually uploading subtitles for this file: ' + path) single = settings.general.getboolean('single_language') @@ -663,11 +665,24 @@ def manual_upload_subtitle(path, language, forced, title, scene_name, media_type return subtitle_path = saved_subtitles[0].storage_path - message = language_from_alpha3(language) + (" forced" if forced else "") + " Subtitles manually uploaded." - uploaded_language_code3 = language - uploaded_language = language_from_alpha3(uploaded_language_code3) - uploaded_language_code2 = alpha2_from_alpha3(uploaded_language_code3) + if hi: + modifier_string = " HI" + elif forced: + modifier_string = " forced" + else: + modifier_string = "" + message = language_from_alpha3(language) + modifier_string + " Subtitles manually uploaded." + + if hi: + modifier_code = ":hi" + elif forced: + modifier_code = ":forced" + else: + modifier_code = "" + uploaded_language_code3 = language + modifier_code + uploaded_language = language_from_alpha3(language) + modifier_string + uploaded_language_code2 = alpha2_from_alpha3(language) + modifier_code audio_language_code2 = alpha2_from_language(audio_language) audio_language_code3 = alpha3_from_language(audio_language) @@ -694,7 +709,8 @@ def manual_upload_subtitle(path, language, forced, title, scene_name, media_type if use_postprocessing : command = pp_replace(postprocessing_cmd, path, subtitle_path, uploaded_language, uploaded_language_code2, uploaded_language_code3, audio_language, - audio_language_code2, audio_language_code3, forced, 100, "1", "manual", series_id, episode_id) + audio_language_code2, audio_language_code3, forced, 100, "1", "manual", series_id, + episode_id, hi=hi) postprocessing(command, path) if media_type == 'series': diff --git a/bazarr/helper.py b/bazarr/helper.py index 5b5fd798a..551a10fc8 100644 --- a/bazarr/helper.py +++ b/bazarr/helper.py @@ -96,16 +96,33 @@ class PathMappings: path_mappings = PathMappings() -def pp_replace(pp_command, episode, subtitles, language, language_code2, language_code3, episode_language, episode_language_code2, episode_language_code3, forced, score, subtitle_id, provider, series_id, episode_id): - is_forced = ":forced" if forced else "" - is_forced_string = " forced" if forced else "" +def pp_replace(pp_command, episode, subtitles, language, language_code2, language_code3, episode_language, episode_language_code2, episode_language_code3, forced, score, subtitle_id, provider, series_id, episode_id, hi): + if hi: + modifier_string = " HI" + elif forced: + modifier_string = " forced" + else: + modifier_string = "" + + if hi: + modifier_code = ":hi" + modifier_code_dot = ".hi" + elif forced: + modifier_code = ":forced" + modifier_code_dot = ".forced" + else: + modifier_code = "" + modifier_code_dot = "" + pp_command = pp_command.replace('{{directory}}', os.path.dirname(episode)) pp_command = pp_command.replace('{{episode}}', episode) pp_command = pp_command.replace('{{episode_name}}', os.path.splitext(os.path.basename(episode))[0]) pp_command = pp_command.replace('{{subtitles}}', str(subtitles)) - pp_command = pp_command.replace('{{subtitles_language}}', str(language) + is_forced_string) - pp_command = pp_command.replace('{{subtitles_language_code2}}', str(language_code2) + is_forced) - pp_command = pp_command.replace('{{subtitles_language_code3}}', str(language_code3) + is_forced) + pp_command = pp_command.replace('{{subtitles_language}}', str(language) + modifier_string) + pp_command = pp_command.replace('{{subtitles_language_code2}}', str(language_code2) + modifier_code) + pp_command = pp_command.replace('{{subtitles_language_code3}}', str(language_code3) + modifier_code) + pp_command = pp_command.replace('{{subtitles_language_code2_dot}}', str(language_code2) + modifier_code_dot) + pp_command = pp_command.replace('{{subtitles_language_code3_dot}}', str(language_code3) + modifier_code_dot) pp_command = pp_command.replace('{{episode_language}}', str(episode_language)) pp_command = pp_command.replace('{{episode_language_code2}}', str(episode_language_code2)) pp_command = pp_command.replace('{{episode_language_code3}}', str(episode_language_code3)) diff --git a/frontend/src/Settings/Subtitles/index.tsx b/frontend/src/Settings/Subtitles/index.tsx index 66ddbd2e3..4f5f05db9 100644 --- a/frontend/src/Settings/Subtitles/index.tsx +++ b/frontend/src/Settings/Subtitles/index.tsx @@ -423,14 +423,25 @@ const SettingsSubtitlesView: FunctionComponent = () => { {"{{subtitles_language}}"} Language of the subtitles file + (may include HI or forced) {"{{subtitles_language_code2}}"} 2-letter ISO-639 language - code of the subtitles language + code of the subtitles language (may include :hi or :forced) + + + {"{{subtitles_language_code2_dot}}"} 2-letter ISO-639 + language code of the subtitles language (same as previous but with + dot separator instead of colon) {"{{subtitles_language_code3}}"} 3-letter ISO-639 language - code of the subtitles language + code of the subtitles language (may include :hi or :forced) + + + {"{{subtitles_language_code3_dot}}"} 3-letter ISO-639 + language code of the subtitles language (same as previous but with + dot separator instead of colon) {"{{episode_language}}"} Audio language of the episode file