From c7bc5814deb9edb59d002dcb0dcd822585ed0589 Mon Sep 17 00:00:00 2001 From: McCloudS <64094529+McCloudS@users.noreply.github.com> Date: Mon, 16 Dec 2024 21:52:43 -0700 Subject: [PATCH] Take 2 on has_subtitle_language_in_file --- subgen.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/subgen.py b/subgen.py index 5497168..53a2230 100644 --- a/subgen.py +++ b/subgen.py @@ -1,4 +1,4 @@ -subgen_version = '2024.12.8' +subgen_version = '2024.12.9' from language_code import LanguageCode from datetime import datetime @@ -1105,13 +1105,13 @@ def has_subtitle_language(video_file, target_language: LanguageCode): """ return has_subtitle_language_in_file(video_file, target_language) or has_subtitle_of_language_in_folder(video_file, target_language) -def has_subtitle_language_in_file(video_file: str, target_language: Union[str, None]): +def has_subtitle_language_in_file(video_file: str, target_language: Union[LanguageCode, None]): """ Checks if a video file contains subtitles with a specific language. Args: video_file (str): The path to the video file. - target_language (str | None): The language of the subtitle file to search for. + target_language (LanguageCode | None): The language of the subtitle file to search for. Returns: bool: True if a subtitle file with the target language is found, False otherwise. @@ -1124,23 +1124,23 @@ def has_subtitle_language_in_file(video_file: str, target_language: Union[str, N if stream.type == 'subtitle' and 'language' in stream.metadata ] - # Skip logic: target_language == NONE and specific conditions + # Skip logic if target_language is None if target_language is None: - if skip_if_language_is_not_set_but_subtitles_exist: - if subtitle_streams: # Any subtitles exist but language is not set - logging.debug("Language is not set, but internal subtitles exist.") - return True - else: - return False + if skip_if_language_is_not_set_but_subtitles_exist and subtitle_streams: + logging.debug("Language is not set, but internal subtitles exist.") + return True if only_skip_if_subgen_subtitle: + logging.debug("Skipping since only external subgen subtitles are considered.") return False # Skip if only looking for external subgen subtitles - + # Check if any subtitle stream matches the target language for stream in subtitle_streams: - if stream.metadata.get('language') == target_language: + # Convert the subtitle stream's language to a LanguageCode instance and compare + stream_language = LanguageCode.from_string(stream.metadata.get('language', '').lower()) + if stream_language == target_language: logging.debug(f"Subtitles in '{target_language}' language found in the video.") return True - + logging.debug(f"No subtitles in '{target_language}' language found in the video.") return False