diff --git a/bazarr/subtitles/indexer/utils.py b/bazarr/subtitles/indexer/utils.py index 4e7c339a6..aa375ca68 100644 --- a/bazarr/subtitles/indexer/utils.py +++ b/bazarr/subtitles/indexer/utils.py @@ -11,6 +11,7 @@ from charset_normalizer import detect from constants import MAXIMUM_SUBTITLE_SIZE from app.config import settings from utilities.path_mappings import path_mappings +from languages.custom_lang import CustomLanguage def get_external_subtitles_path(file, subtitle): @@ -54,8 +55,7 @@ def guess_external_subtitles(dest_folder, subtitles, media_type, previously_inde break if x_found_lang: if not language: - x_hi = ':hi' in x_found_lang - subtitles[subtitle] = Language.rebuild(Language.fromietf(x_found_lang), hi=x_hi) + subtitles[subtitle] = _get_lang_from_str(x_found_lang) continue if not language: @@ -141,3 +141,23 @@ def guess_external_subtitles(dest_folder, subtitles, media_type, previously_inde None): subtitles[subtitle] = Language.rebuild(subtitles[subtitle], forced=False, hi=True) return subtitles + + +def _get_lang_from_str(x_found_lang): + x_found_lang_split = x_found_lang.split(':')[0] + x_hi = ':hi' in x_found_lang.lower() + x_forced = ':forced' in x_found_lang.lower() + + if len(x_found_lang_split) == 2: + x_custom_lang_attr = "alpha2" + elif len(x_found_lang_split) == 3: + x_custom_lang_attr = "alpha3" + else: + x_custom_lang_attr = "language" + + x_custom_lang = CustomLanguage.from_value(x_found_lang_split, attr=x_custom_lang_attr) + + if x_custom_lang is not None: + return Language.rebuild(x_custom_lang.subzero_language(), hi=x_hi, forced=x_forced) + else: + return Language.rebuild(Language.fromietf(x_found_lang), hi=x_hi, forced=x_forced)