diff --git a/libs/subliminal_patch/converters/subscene.py b/libs/subliminal_patch/converters/subscene.py index 3a8c8ead6..66b28de2d 100644 --- a/libs/subliminal_patch/converters/subscene.py +++ b/libs/subliminal_patch/converters/subscene.py @@ -12,6 +12,13 @@ from_subscene = { 'Malay': 'msa', 'Pashto': 'pus', 'Punjabi': 'pan', 'Swahili': 'swa' } +from_subscene_with_country = { + 'Brazillian Portuguese': ('por', 'BR') +} + +to_subscene_with_country = {val: key for key, val in from_subscene_with_country.items()} + + to_subscene = {v: k for k, v in from_subscene.items()} exact_languages_alpha3 = [ @@ -34,12 +41,12 @@ language_ids = { 'mkd': 48, 'mal': 64, 'mni': 65, 'mon': 72, 'pus': 67, 'pol': 31, 'por': 32, 'pan': 66, 'rus': 34, 'srp': 35, 'sin': 58, 'slk': 36, 'slv': 37, 'som': 70, 'tgl': 53, 'tam': 59, 'tel': 63, 'tha': 40, - 'tur': 41, 'ukr': 56, 'urd': 42, 'yor': 71 + 'tur': 41, 'ukr': 56, 'urd': 42, 'yor': 71, 'pt-BR': 4 } # TODO: specify codes for unspecified_languages unspecified_languages = [ - 'Big 5 code', 'Brazillian Portuguese', 'Bulgarian/ English', + 'Big 5 code', 'Bulgarian/ English', 'Chinese BG code', 'Dutch/ English', 'English/ German', 'Hungarian/ English', 'Rohingya' ] @@ -50,6 +57,8 @@ alpha3_of_code = {l.name: l.alpha3 for l in supported_languages} supported_languages.update({Language(l) for l in to_subscene}) +supported_languages.update({Language(lang, cr) for lang, cr in to_subscene_with_country}) + class SubsceneConverter(LanguageReverseConverter): codes = {l.name for l in supported_languages} @@ -61,9 +70,15 @@ class SubsceneConverter(LanguageReverseConverter): if alpha3 in to_subscene: return to_subscene[alpha3] + if (alpha3, country) in to_subscene_with_country: + return to_subscene_with_country[(alpha3, country)] + raise ConfigurationError('Unsupported language for subscene: %s, %s, %s' % (alpha3, country, script)) def reverse(self, code): + if code in from_subscene_with_country: + return from_subscene_with_country[code] + if code in from_subscene: return (from_subscene[code],) diff --git a/libs/subliminal_patch/providers/subscene.py b/libs/subliminal_patch/providers/subscene.py index 3315ed18a..7f6e3911b 100644 --- a/libs/subliminal_patch/providers/subscene.py +++ b/libs/subliminal_patch/providers/subscene.py @@ -208,7 +208,13 @@ class SubsceneProvider(Provider, ProviderSubtitleArchiveMixin): acc_filters["ForeignOnly"] = self.filters["ForeignOnly"].lower() logger.info("Only searching for foreign/forced subtitles") - acc_filters["SelectedIds"] = [str(language_ids[l.alpha3]) for l in languages if l.alpha3 in language_ids] + selected_ids = [] + for l in languages: + lid = language_ids.get(l.basename, language_ids.get(l.alpha3, None)) + if lid: + selected_ids.append(str(lid)) + + acc_filters["SelectedIds"] = selected_ids self.filters["LanguageFilter"] = ",".join(acc_filters["SelectedIds"]) last_filters = region.get("subscene_filters") diff --git a/libs/subscene_api/subscene.py b/libs/subscene_api/subscene.py index 07d1eda3e..827110369 100644 --- a/libs/subscene_api/subscene.py +++ b/libs/subscene_api/subscene.py @@ -125,7 +125,7 @@ class Subtitle(object): subtitles = [] for row in rows: - if row.td.a is not None: + if row.td.a is not None and row.td.get("class", ["lazy"])[0] != "empty": subtitles.append(cls.from_row(row)) return subtitles