diff --git a/bazarr/config.py b/bazarr/config.py index 9703c2367..b7c708b17 100644 --- a/bazarr/config.py +++ b/bazarr/config.py @@ -20,6 +20,10 @@ defaults = { 'use_scenename': 'True', 'use_postprocessing': 'False', 'postprocessing_cmd': '', + 'postprocessing_threshold': '90', + 'use_postprocessing_threshold': 'False', + 'postprocessing_threshold_movie': '70', + 'use_postprocessing_threshold_movie': 'False', 'use_sonarr': 'False', 'use_radarr': 'False', 'path_mappings_movie': '[]', diff --git a/bazarr/get_subtitle.py b/bazarr/get_subtitle.py index e7055f9cf..4b845bfc9 100644 --- a/bazarr/get_subtitle.py +++ b/bazarr/get_subtitle.py @@ -225,7 +225,20 @@ 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) - postprocessing(command, path) + percent_score = round(subtitle.score * 100 / max_score, 2) + + if media_type == 'series': + use_pp_threshold = settings.general.getboolean('use_postprocessing_threshold') + pp_threshold = settings.general.postprocessing_threshold + else: + use_pp_threshold = settings.general.getboolean('use_postprocessing_threshold_movie') + pp_threshold = settings.general.postprocessing_threshold_movie + + if not use_pp_threshold or (use_pp_threshold and percent_score < pp_threshold): + postprocessing(command, path) + else: + logging.debug("BAZARR post-processing skipped because subtitles score isn't below this " + "threshold value: " + str(pp_threshold) + "%") # fixme: support multiple languages at once if media_type == 'series': @@ -436,7 +449,20 @@ 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) - postprocessing(command, path) + percent_score = round(subtitle.score * 100 / max_score, 2) + + if media_type == 'series': + use_pp_threshold = settings.general.getboolean('use_postprocessing_threshold') + pp_threshold = settings.general.postprocessing_threshold + else: + use_pp_threshold = settings.general.getboolean('use_postprocessing_threshold_movie') + pp_threshold = settings.general.postprocessing_threshold_movie + + if not use_pp_threshold or (use_pp_threshold and percent_score < float(pp_threshold)): + postprocessing(command, path) + else: + logging.debug("BAZARR post-processing skipped because subtitles score isn't below this " + "threshold value: " + pp_threshold + "%") if media_type == 'series': reversed_path = path_replace_reverse(path) @@ -537,7 +563,7 @@ def manual_upload_subtitle(path, language, forced, title, scene_name, media_type if use_postprocessing is True: command = pp_replace(postprocessing_cmd, path, subtitle_path, uploaded_language, - uploaded_language_code2, uploaded_language_code3, audio_language, + uploaded_language_code2, uploaded_language_code3, audio_language, audio_language_code2, audio_language_code3, forced) postprocessing(command, path) diff --git a/views/settingssubtitles.html b/views/settingssubtitles.html index 33b0980a9..4e768e011 100644 --- a/views/settingssubtitles.html +++ b/views/settingssubtitles.html @@ -262,6 +262,48 @@
+
+
+ Post-processing score threshold for series +
+
+ +
+
+
+
+
+ Only for score below +
+
+ +
+
+
+
+
+ Post-processing score threshold for movies +
+
+ +
+
+
+
+
+ Only for score below +
+
+ +
+
+
Post-processing command @@ -387,6 +429,8 @@ $('#settings-general-utf8_encode').prop('checked', {{'true' if settings.general.getboolean('utf8_encode') else 'false'}}).trigger('change'); $('#settings-general-chmod_enabled').prop('checked', {{'true' if settings.general.getboolean('chmod_enabled') else 'false'}}).trigger('change'); $('#settings-general-use_postprocessing').prop('checked', {{'true' if settings.general.getboolean('use_postprocessing') else 'false'}}).trigger('change'); + $('#settings-general-use_postprocessing_threshold').prop('checked', {{'true' if settings.general.getboolean('use_postprocessing_threshold') else 'false'}}).trigger('change'); + $('#settings-general-use_postprocessing_threshold_movie').prop('checked', {{'true' if settings.general.getboolean('use_postprocessing_threshold_movie') else 'false'}}).trigger('change'); $('#save_button').on('click', function() { var formdata = new FormData(document.getElementById("settings_form"));