#!/usr/bin/env python import re class SubtitleEntry: def __init__(self, entryNumber, text, startTime, endTime): # dd:dd:dd,ddd --> dd:dd:dd,ddd self.entryNumber = entryNumber self.text = text self.startTime = startTime self.endTime = endTime def printEntry(self): print("{}".format(self.entryNumber)) print("{} --> {}".format(self.startTime, self.endTime)) print("{}".format(self.text)) def shift(self, seconds): print("shifting entry by {} seconds".format(seconds)) self.startTime += 1 def main(): print("opening subtitle") Subtitles = [] with open("test.srt", "r+") as file: entryNumber = 0 text = "" timestamp = "" for line in file: m1 = re.match(r"^([0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}) --> ([0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})", line) if line == "\n": #print("blank line") if (entryNumber > 0) and (timestamp is not None): #print("new entry") s = SubtitleEntry(entryNumber, text, timestamp.groups()[0], timestamp.groups()[1]) Subtitles.append(s) #print(s.entryNumber, s.startTime, s.endTime, s.text) text = "" timestamp = "" entryNumber = 0 elif re.match(r"^[0-9]+$", line): #print("Added entryNumber") entryNumber = int(line.rstrip()) #print(entryNumber) elif m1: #print("Added timestamp") timestamp = m1 #print(m1.groups()[0]) #print(m1.groups()[1]) else: #print("Added text") text += line print("processing subtitles") for entry in Subtitles: entry.printEntry() if __name__ == "__main__": main()