You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.6 KiB
51 lines
1.6 KiB
# coding=utf-8
|
|
|
|
import os
|
|
import logging
|
|
|
|
from subliminal_patch.subtitle import Subtitle
|
|
from subliminal_patch.core import get_subtitle_path
|
|
from subzero.language import Language
|
|
|
|
from app.config import settings
|
|
from languages.custom_lang import CustomLanguage
|
|
from languages.get_languages import alpha3_from_alpha2
|
|
|
|
|
|
def subtitles_apply_mods(language, subtitle_path, mods, use_original_format, video_path):
|
|
language = alpha3_from_alpha2(language)
|
|
custom = CustomLanguage.from_value(language, "alpha3")
|
|
if custom is None:
|
|
lang_obj = Language(language)
|
|
else:
|
|
lang_obj = custom.subzero_language()
|
|
single = settings.general.getboolean('single_language')
|
|
|
|
sub = Subtitle(lang_obj, mods=mods, original_format=use_original_format)
|
|
with open(subtitle_path, 'rb') as f:
|
|
sub.content = f.read()
|
|
|
|
if not sub.is_valid():
|
|
logging.exception('BAZARR Invalid subtitle file: ' + subtitle_path)
|
|
return
|
|
|
|
if use_original_format:
|
|
return
|
|
|
|
content = sub.get_modified_content()
|
|
if content:
|
|
if hasattr(sub, 'mods') and isinstance(sub.mods, list) and 'remove_HI' in sub.mods:
|
|
modded_subtitles_path = get_subtitle_path(video_path, None if single else sub.language,
|
|
forced_tag=sub.language.forced, hi_tag=False, tags=[])
|
|
else:
|
|
modded_subtitles_path = subtitle_path
|
|
|
|
if os.path.exists(subtitle_path):
|
|
os.remove(subtitle_path)
|
|
|
|
if os.path.exists(modded_subtitles_path):
|
|
os.remove(modded_subtitles_path)
|
|
|
|
with open(modded_subtitles_path, 'wb') as f:
|
|
f.write(content)
|