From e65d643fae345c18cf4ffd2422dafe9500b88f93 Mon Sep 17 00:00:00 2001 From: Vitiko Date: Tue, 28 Dec 2021 15:38:06 -0400 Subject: [PATCH] Embedded Subtitles provider: fix language error (fix #1653) --- libs/fese/__init__.py | 22 ++++++++++++++++------ libs/version.txt | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/libs/fese/__init__.py b/libs/fese/__init__.py index b1024b8ff..f9a6de0a4 100755 --- a/libs/fese/__init__.py +++ b/libs/fese/__init__.py @@ -148,6 +148,7 @@ class FFprobeSubtitleStream: def _language(self) -> Language: og_lang = self.tags.get("language") + last_exc = None if og_lang is not None: if og_lang in _extra_languages: @@ -158,19 +159,23 @@ class FFprobeSubtitleStream: return Language(*extra["language_args"]) try: - return Language.fromalpha3b(og_lang) + lang = Language.fromalpha3b(og_lang) + # Test for suffix + assert lang.alpha2 + + return lang except LanguageError as error: + last_exc = error logger.debug("Error with '%s' language: %s", og_lang, error) - raise LanguageNotFound(f"Couldn't detect language for stream: {self.tags}") + raise LanguageNotFound( + f"Couldn't detect language for stream: {self.tags}" + ) from last_exc def __repr__(self) -> str: return f"<{self.codec_name.upper()}: {self.language}@{self.disposition}>" -# Helpers - - class FFprobeVideoContainer: def __init__(self, path: str): self.path = path @@ -361,7 +366,12 @@ def to_srt( return output -_subtitle_extensions = {"subrip": "srt", "ass": "ass"} +_subtitle_extensions = { + "subrip": "srt", + "ass": "ass", + "hdmv_pgs_subtitle": "sup", + "pgs": "sup", +} _content_types = { diff --git a/libs/version.txt b/libs/version.txt index ce79c009b..08adaa8f9 100644 --- a/libs/version.txt +++ b/libs/version.txt @@ -12,7 +12,7 @@ deep-translator=1.5.4 dogpile.cache=0.6.5 engineio=4.3.0 enzyme=0.4.1 -fese=0.1.0 +fese=0.1.1 ffsubsync=0.4.11 Flask=1.1.1 flask-restful=0.3.8