Take 2 on has_subtitle_language_in_file

This commit is contained in:
McCloudS
2024-12-16 21:52:43 -07:00
committed by GitHub
parent 57183f14a8
commit c7bc5814de

View File

@@ -1,4 +1,4 @@
subgen_version = '2024.12.8' subgen_version = '2024.12.9'
from language_code import LanguageCode from language_code import LanguageCode
from datetime import datetime 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) 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. Checks if a video file contains subtitles with a specific language.
Args: Args:
video_file (str): The path to the video file. 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: Returns:
bool: True if a subtitle file with the target language is found, False otherwise. bool: True if a subtitle file with the target language is found, False otherwise.
@@ -1124,20 +1124,20 @@ def has_subtitle_language_in_file(video_file: str, target_language: Union[str, N
if stream.type == 'subtitle' and 'language' in stream.metadata 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 target_language is None:
if skip_if_language_is_not_set_but_subtitles_exist: if skip_if_language_is_not_set_but_subtitles_exist and subtitle_streams:
if subtitle_streams: # Any subtitles exist but language is not set
logging.debug("Language is not set, but internal subtitles exist.") logging.debug("Language is not set, but internal subtitles exist.")
return True return True
else:
return False
if only_skip_if_subgen_subtitle: 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 return False # Skip if only looking for external subgen subtitles
# Check if any subtitle stream matches the target language # Check if any subtitle stream matches the target language
for stream in subtitle_streams: 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.") logging.debug(f"Subtitles in '{target_language}' language found in the video.")
return True return True