Take 2 on has_subtitle_language_in_file
This commit is contained in:
22
subgen.py
22
subgen.py
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user