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.
46 lines
1.3 KiB
46 lines
1.3 KiB
6 years ago
|
# coding=utf-8
|
||
|
|
||
|
from __future__ import print_function, division, unicode_literals
|
||
|
import re
|
||
|
from numbers import Number
|
||
|
|
||
|
from pysubs2.time import times_to_ms
|
||
|
from .formatbase import FormatBase
|
||
|
from .ssaevent import SSAEvent
|
||
|
from .ssastyle import SSAStyle
|
||
|
|
||
|
|
||
|
# thanks to http://otsaloma.io/gaupol/doc/api/aeidon.files.mpl2_source.html
|
||
|
MPL2_FORMAT = re.compile(r"^(?um)\[(-?\d+)\]\[(-?\d+)\](.*?)$")
|
||
|
|
||
|
|
||
|
class TXTGenericFormat(FormatBase):
|
||
|
@classmethod
|
||
|
def guess_format(cls, text):
|
||
|
if MPL2_FORMAT.match(text):
|
||
|
return "mpl2"
|
||
|
|
||
|
|
||
|
class MPL2Format(FormatBase):
|
||
|
@classmethod
|
||
|
def guess_format(cls, text):
|
||
|
return TXTGenericFormat.guess_format(text)
|
||
|
|
||
|
@classmethod
|
||
|
def from_file(cls, subs, fp, format_, **kwargs):
|
||
|
def prepare_text(lines):
|
||
|
out = []
|
||
|
for s in lines.split("|"):
|
||
|
if s.startswith("/"):
|
||
|
out.append(r"{\i1}%s{\i0}" % s[1:])
|
||
|
continue
|
||
|
out.append(s)
|
||
|
return "\n".join(out)
|
||
|
|
||
|
subs.events = [SSAEvent(start=times_to_ms(s=float(start) / 10), end=times_to_ms(s=float(end) / 10),
|
||
|
text=prepare_text(text)) for start, end, text in MPL2_FORMAT.findall(fp.getvalue())]
|
||
|
|
||
|
@classmethod
|
||
|
def to_file(cls, subs, fp, format_, **kwargs):
|
||
|
raise NotImplemented
|