blog-blog-blog

Сливаем два SRT в один ASS используя Python

Дописал вчерашний скрипт.
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

Осталось сделать графический интерфейс и выдергивалку субтитров из контейнеров.

Перекодируем субтитры из SRT в ASS на Python.Извлечение данных из MKV посредством Python и MKVtoolnix

Write a comment

New comments have been disabled for this post.