def load(data, encoding=None): """ Load subtitle """ result = [] lines = data.splitlines() pattern = r"(?P<start>\d+:\d+:\d+,\d*) --> (?P<stop>\d+:\d+:\d+,\d*)" pattern = re.compile(pattern) state, text = 0, [] for line in lines: line = to_unicode(line, encoding) if state == 0: state = 1 elif state == 1: m = pattern.match(line) #if m is None: # raise SubtitlesFormatError d = m.groupdict() start = Time.parse(d['start']) stop = Time.parse(d['stop']) state = 2 elif state == 2: if line.strip() == "": result.append(Verse(start, stop, '\n'.join(text))) text = [] state = 0 else: text.append(line.strip()) return result, False
def load(data, encoding=None): """ Load subtitle """ pattern = re.compile(r"\{(?P<start>\d*)\}\{(?P<stop>\d*)\}(?P<text>.*)") result = [] lines = data.splitlines() for line in lines: line = line.strip() if line == '' or line.startswith('#'): continue m = pattern.match(to_unicode(line, encoding)) if m is None: raise SubtitlesFormatError #print 'invalid line %r', line #continue d = m.groupdict() start = Time.from_seconds(int(d['start'])) try: stop = Time.from_seconds(int(d['stop'])) except: stop = None text = d['text'].replace('|', '\n') result.append(Verse(start, stop, text)) return result, True
def load(data, encoding=None): """ Load subtitle """ pattern = re.compile(r"\[(?P<start>\d+)\]\[(?P<stop>\d*)\](?P<text>.*)") result = [] lines = data.splitlines() for line in lines: m = pattern.match(to_unicode(line, encoding)) #if m is None: # raise SubtitlesFormatError g = m.groupdict() start = Time.from_seconds(int(g['start']), 1) try: stop = Time.from_seconds(int(g['stop']), 1) except ValueError: stop = None text = g['text'].replace('|', '\n') result.append(Verse(start, stop, text)) return result, False
def goto_dlg(self): time = self.gui.do_input_dlg('Run command', 'Enter command', str(self.player.position)) try: self.player.position = Time.parse(time) except ValueError: pass
def testParse(self): self.assertEquals(Time(h=1, m=2, s=3, ms=456), Time.parse('1:2:3.456')) self.assertEquals(Time(h=0, m=2, s=3, ms=456), Time.parse(':2:3.456')) self.assertEquals(Time(h=0, m=2, s=3, ms=456), Time.parse('2:3.456')) self.assertEquals(Time(h=1, m=0, s=3, ms=456), Time.parse('1::3.456')) self.assertEquals(Time(h=0, m=0, s=3, ms=456), Time.parse(':3.456')) self.assertEquals(Time(h=0, m=0, s=3, ms=456), Time.parse('3.456')) self.assertEquals(Time(h=1, m=2, s=0, ms=456), Time.parse('1:2:.456')) self.assertEquals(Time(h=1, m=0, s=0, ms=456), Time.parse('1::.456')) self.assertEquals(Time(h=0, m=0, s=0, ms=456), Time.parse('0:0:.456')) self.assertEquals(Time(h=0, m=0, s=0, ms=456), Time.parse(':0:.456')) self.assertEquals(Time(h=0, m=0, s=0, ms=456), Time.parse('0::.456')) self.assertEquals(Time(h=0, m=0, s=0, ms=456), Time.parse('.456')) self.assertEquals(Time(h=0, m=0, s=0, ms=456), Time.parse(',456')) self.assertEquals(Time(h=0, m=0, s=1234, ms=456), Time.parse('1234,456')) self.assertEquals(Time(h=0, m=0, s=0, ms=0), Time.parse('')) self.assertEquals(Time(h=1, m=2, s=3), Time.parse('1:2:3,')) self.assertEquals(Time(h=1, m=2, s=3), Time.parse('1:2:3')) self.assertEquals(Time(h=1, m=2, s=3), Time.parse('3723')) self.assertEquals(Time(h=0, m=2, s=3), Time.parse('2:3')) self.assertEquals(Time(h=1, m=0, s=3), Time.parse('1::3')) self.assertEquals(Time(h=0, m=0, s=3), Time.parse('::3')) self.assertEquals(Time(h=0, m=0, s=3), Time.parse(':3')) self.assertEquals(Time(h=0, m=0, s=3), Time.parse('3')) self.assertRaises(ValueError, Time.parse, 'ala has a cat') self.assertRaises(ValueError, Time.parse, '1.3:2') self.assertRaises(ValueError, Time.parse, None)
def testFormat(self): # ToDo: more asserts time0 = Time() time1 = Time(h=1, m=2, s=3, ms=456) self.assertEquals(time1.format("foobar"), "foobar") self.assertEquals(time1.format("foo%%bar"), "foo%bar") self.assertEquals(time1.format("%%"), "%") self.assertEquals(time1.format("%h"), "1") self.assertEquals(time1.format("%0h"), "1") self.assertEquals(time1.format("%1h"), "1") self.assertEquals(time1.format("%2h"), "01") self.assertEquals(time1.format("%3h"), "001") self.assertEquals(time0.format("%0h"), "") self.assertEquals(time0.format("%1h"), "0") self.assertEquals(time0.format("%2h"), "00") self.assertEquals(time0.format("%3h"), "000") self.assertEquals(time1.format("%m"), "2") self.assertEquals(time1.format("%2m"), "02") self.assertEquals(time1.format("%s"), "3") self.assertEquals(time1.format("%2s"), "03")