@ -18,6 +18,7 @@ from subliminal import region, score as subliminal_scores, \
from subliminal_patch . core import SZAsyncProviderPool , download_best_subtitles , save_subtitles , download_subtitles , \
list_all_subtitles , get_subtitle_path
from subliminal_patch . score import compute_score
from subliminal_patch . subtitle import Subtitle
from get_languages import language_from_alpha3 , alpha2_from_alpha3 , alpha3_from_alpha2 , language_from_alpha2 , \
alpha2_from_language , alpha3_from_language
from config import settings
@ -556,12 +557,6 @@ def manual_upload_subtitle(path, language, forced, title, scene_name, media_type
chmod = int ( settings . general . chmod , 8 ) if not sys . platform . startswith (
' win ' ) and settings . general . getboolean ( ' chmod_enabled ' ) else None
dest_directory = get_target_folder ( path )
fake_video_path = None
if dest_directory :
fake_video_path = os . path . join ( dest_directory , os . path . split ( path ) [ 1 ] )
_ , ext = os . path . splitext ( subtitle . filename )
language = alpha3_from_alpha2 ( language )
if language == ' pob ' :
@ -572,48 +567,37 @@ def manual_upload_subtitle(path, language, forced, title, scene_name, media_type
if forced :
lang_obj = Language . rebuild ( lang_obj , forced = True )
subtitle_path = get_subtitle_path ( video_path = force_unicode ( fake_video_path if fake_video_path else path ) ,
language = None if single else lang_obj ,
extension = ext ,
forced_tag = forced )
subtitle_path = force_unicode ( subtitle_path )
sub = Subtitle (
lang_obj ,
mods = settings . general . subzero_mods . strip ( ) . split ( ' , ' ) if settings . general . subzero_mods . strip ( ) else None
)
if os . path . exists ( subtitle_path ) :
os . remove ( subtitle_path )
if settings . general . utf8_encode :
try :
os . remove ( subtitle_path + " .tmp " )
except :
pass
sub . content = subtitle . read ( )
if not sub . is_valid ( ) :
logging . exception ( ' BAZARR Invalid subtitle file: ' + subtitle . filename )
sub . mods = None
subtitle . save ( subtitle_path + " .tmp " )
with open ( subtitle_path + " .tmp " , ' rb ' ) as fr :
text = fr . read ( )
try :
guess = chardet . detect ( text )
text = text . decode ( guess [ " encoding " ] )
text = text . encode ( ' utf-8 ' )
except UnicodeError :
logging . exception ( " BAZARR subtitles file doesn ' t seems to be text based. Skipping this file: " +
subtitle_path )
else :
with open ( subtitle_path , ' wb ' ) as fw :
fw . write ( text )
finally :
try :
os . remove ( subtitle_path + " .tmp " )
except :
pass
else :
subtitle . save ( subtitle_path )
if settings . general . getboolean ( ' utf8_encode ' ) :
sub . set_encoding ( " utf-8 " )
if chmod :
os . chmod ( subtitle_path , chmod )
saved_subtitles = [ ]
try :
saved_subtitles = save_subtitles ( path ,
[ sub ] ,
single = single ,
tags = None , # fixme
directory = get_target_folder ( path ) ,
chmod = chmod ,
# formats=("srt", "vtt")
path_decoder = force_unicode )
except :
pass
if len ( saved_subtitles ) < 1 :
logging . exception ( ' BAZARR Error saving Subtitles file to disk for this file: ' + path )
return
subtitle_path = saved_subtitles [ 0 ] . storage_path
message = language_from_alpha3 ( language ) + ( " forced " if forced else " " ) + " Subtitles manually uploaded. "
uploaded_language_code3 = language