Commits

dani...@fastmail.fm  committed 8c76287

parse legendas

  • Participants

Comments (0)

Files changed (1)

File parse_subtitles.py

+
+import re
+import sys
+
+re_separador = re.compile("\r?\n\r?\n")
+re_tempo = re.compile('(\d+):(\d+):(\d+),(\d+)')
+
+def erro(mensagem):
+    print mensagem
+    sys.exit(1)
+
+def parse_tempo(str):
+    match = re_tempo.search(str.strip()) or erro("tempo errado "+str)
+    (h,m,s,ms) = match.groups()
+    return 3600 * int(h) + 60 * int(m) + int(s) + float(ms) / 1000
+
+f = open(sys.argv[1], "r")
+tudo = f.read()
+
+partes = re_separador.split(tudo.strip())
+
+last_id = -1
+    
+for parte in partes:
+
+    linhas = parte.split("\n")
+    len(linhas) < 3 and erro("erro na parte "+parte)
+
+    id = int(linhas[0])
+
+    if last_id != -1 and id != last_id + 1:
+        erro("erro na sequencia de ids "+str(id))
+
+    last_id = id
+
+    linha = linhas[1]
+    separador = "-->"
+    p = linha.find(separador)
+    if p == -1: 
+        erro("erro na linha do tempo "+linha[1])
+    
+    inicio = parse_tempo(linha[0:p])
+    fim = parse_tempo(linha[p+ len(separador) : ])
+
+    texto = "\n".join(linhas[2 :])
+
+    print id,inicio, fim, texto
+