Author Topic: Convertir subtítulos  (Read 3303 times)

her

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
    • View Profile
Convertir subtítulos
« on: Marzo 15, 2013, 12:44:26 am »
Hola. Yo no sé programar en Python, pero me parece que lo que quiero hacer debe ser sencillo en este lenguaje.
Tengo un archivo de subtítulos (.txt) con este formato:

Quote
1 00:00:08:06 00:00:11:18 03:12
LA UFA

2 00:00:54:00 00:00:55:07 01:07
1917

3 00:00:56:04 00:00:58:21 02:17
El Ejército Alemán
estaba por perder la guerra.

y necesito convertirlo en un .srt, es decir que debería quedar de esta forma:

Quote
1
00:00:08,060 --> 00:00:11,180
LA UFA

2
00:00:54,000 ---> 00:00:55,070
1917

3
00:00:56,040 --> 00:00:58,210
El Ejército Alemán
estaba por perder la guerra.

¿Alguién me podría dar una mano?
Les agradesco desde ya.
Saludos.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Convertir subtítulos
« Reply #1 on: Marzo 15, 2013, 01:35:16 am »
Hola:

Aquí tienes cómo leer un fichero de texto en python, línea por línea http://chuwiki.chuidiang.org/index.php?title=Leer_y_escribir_ficheros_en_python

Con una expresión regular puedes ver si la línea es del tipo de las que tienes que partir y el método split() usando el espacio como separador te dará los tres trozos (el número, el hora y la otra hora) http://docs.python.org/2/library/re.html

Finalmente, sólo te queda ir escribiendo.

Se bueno.

ryuz

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
    • View Profile
Re: Convertir subtítulos
« Reply #2 on: Junio 11, 2013, 05:35:52 pm »
Aunque generalmente no suelo dar el trabajo hecho, me parece más una necesidad que un deber o algo por el estilo asi que voy a colaborar.

En mi tiempo libre lei este post y me puse a resolverlo, quizas no esta muy profesional el código pero es efectivo y realiza la "conversión".

Code: (Python) [Select]
#!/usr/bin/env python
# -*- coding: utf8 -*-
import re
import sys
if len(sys.argv) != 2: sys.exit(0)
txtfile = sys.argv[1]
with open(txtfile) as f: data = f.readlines()
fp = open(txtfile+".srt","wb")
for d in data:
        pattern0 = re.compile("^\d+ \d\d:\d\d:\d\d:\d\d \d\d:\d\d:\d\d:\d\d \d\d:\d\d")
        step0 = pattern0.findall(d)
        if step0:
                data0 = step0[0].split(" ")
                datax0 = "\n%s,%s0 --> %s,%s0\n" % (data0[1][:8],data0[1][9:],data0[2][:8],data0[2][9:])
                fp.write(data0[0])
                fp.write(datax0)
        else: fp.write(d)
fp.close()

En caso de no comprender algo, pregunta sin duda alguna.

Aqui una imagen de como queda:


 

ey