Сливаем два SRT в один ASS используя Python
Tuesday, October 25, 2011 11:17:01 AM
Дописал вчерашний скрипт.
Пример использования:
Осталось сделать графический интерфейс и выдергивалку субтитров из контейнеров.
import os, sys, codecs
from pysrt import SubRipFile
ENG_SRT = sys.argv[1]
RUS_SRT = sys.argv[2]
OUT_ASS = sys.argv[3]
FILE_ENCODE = 'cp1251'
HEAD = '''[Script Info]
ScriptType: v4.00+
Collisions: Normal
Timer: 100.0000
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: EngText,Arial,18,&H00FFFFFF,&H0000FFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,3,0,2,20,20,20,204
Style: RusText,Arial,18,&H00FFFFFF,&H0000FFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,3,0,8,20,20,20,204
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text'''
def srt2ass(file_name, lang_style, encode_type):
'''
file_name - path to *.srt file
lang_style - EngText or RusText
encode_type - *.str file encoding
'''
subs = SubRipFile.open(file_name, encoding=encode_type)
for sub in subs:
start_time = sub.start.to_time().strftime('%H:%M:%S.%f')[1:-4]
end_time = sub.end.to_time().strftime('%H:%M:%S.%f')[1:-4]
string = sub.text.replace('\n', '\\N')[:-2]
OutSub.write('Dialogue: 0,%s,%s,%s,,0000,0000,0000,,%s\n' % (start_time, end_time, lang_style, string))
OutSub = codecs.open(OUT_ASS, encoding=FILE_ENCODE, mode='w+')
OutSub.write(HEAD)
srt2ass(ENG_SRT, 'EngText', FILE_ENCODE)
srt2ass(RUS_SRT, 'RusText', FILE_ENCODE)
OutSub.close()
Пример использования:
srt2ass.py eng.srt rus.srt out.ass
Осталось сделать графический интерфейс и выдергивалку субтитров из контейнеров.
