offset-fixer.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/env python
  2. import re
  3. class SubtitleEntry:
  4. def __init__(self, entryNumber, text, startTime, endTime):
  5. # dd:dd:dd,ddd --> dd:dd:dd,ddd
  6. self.entryNumber = entryNumber
  7. self.text = text
  8. self.startTime = startTime
  9. self.endTime = endTime
  10. def printEntry(self):
  11. print("{}".format(self.entryNumber))
  12. print("{} --> {}".format(self.startTime, self.endTime))
  13. print("{}".format(self.text))
  14. def shift(self, seconds):
  15. print("shifting entry by {} seconds".format(seconds))
  16. self.startTime += 1
  17. def main():
  18. print("opening subtitle")
  19. Subtitles = []
  20. with open("test.srt", "r+") as file:
  21. entryNumber = 0
  22. text = ""
  23. timestamp = ""
  24. for line in file:
  25. 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)
  26. if line == "\n":
  27. #print("blank line")
  28. if (entryNumber > 0) and (timestamp is not None):
  29. #print("new entry")
  30. s = SubtitleEntry(entryNumber, text, timestamp.groups()[0], timestamp.groups()[1])
  31. Subtitles.append(s)
  32. #print(s.entryNumber, s.startTime, s.endTime, s.text)
  33. text = ""
  34. timestamp = ""
  35. entryNumber = 0
  36. elif re.match(r"^[0-9]+$", line):
  37. #print("Added entryNumber")
  38. entryNumber = int(line.rstrip())
  39. #print(entryNumber)
  40. elif m1:
  41. #print("Added timestamp")
  42. timestamp = m1
  43. #print(m1.groups()[0])
  44. #print(m1.groups()[1])
  45. else:
  46. #print("Added text")
  47. text += line
  48. print("processing subtitles")
  49. for entry in Subtitles:
  50. entry.printEntry()
  51. if __name__ == "__main__":
  52. main()