Supongamos que tenemos un fichero de texto con la siguiente estructura:
- Código: Seleccionar todo
1
00:00:37,243 --> 00:00:40,244
¿Hola? Probando, 1-2-3. ¿Hola?
2
00:00:41,645 --> 00:00:44,944
¡Siii! Bien, allá vamos.
3
00:00:45,306 --> 00:00:47,618
Diario de abordo... erm... uno.
4
00:00:48,319 --> 00:00:51,921
He decidido llevar un diario
de mi vida a bordo, y después
lanzarlo en una vaina.
Pero suele ocurrir un problema...
En algunas ocasiones, no coinciden los tiempos que marcan los subtítulos con la línea de tiempos de la película. Quiero decir que a veces los subtítulos salen con algunos segundos de adelanto y en otras ocasiones, de retraso.
El objetivo es hacer un programa en Perl que nos permita reescribir el fichero de subtítulos, cambiando los tiempos por otros, al que le sumaremos o restaremos una cantidad de segundos.
ENTRADA
Al programa en Perl se le pasará como argumento el nombre del fichero con los subtítulos y la cantidad (positiva o negativa) de segundos que hay que modificar los tiempos.
Ejemplos:
- Código: Seleccionar todo
subs_desvia.pl EnanoRojo_7x01.srt -12
subs_desvia.pl EnanoRojo_3x05.srt 92
SALIDA
La salida será hacia la salida estándar, un fichero con el mismo formato que el de entrada, pero con los tiempos cambiados.
FORMATO DEL FICHERO DE ENTRADA
El fichero es un conjunto de párrafos (conjunto de líneas separadas por una línea en blanco). Los finales de línea son del tipo msdos (\r\n).
Cada párrafo comienza por un número.
Le sigue una línea en que aparece los dos items de tiempo en que el subtítulo debe aparecer en pantalla. El formato de estos items es HH:MM:SS,ddd, siendo
HH : Hora, rellenado con ceros a la izquierda.
MM : Minutos, rellenado con ceros a la izquierda.
SS : Segundos, rellenado con ceros a la izquierda.
ddd: milesimas de segundo. Es necesario conservar esta cantidad en el fichero de salida.
Le sigue una o más líneas con el subtítulo.
FORMATO DEL FICHERO DE SALIDA
Igual que el de entrada.
PARTICIPACIÓN
Esta competición se realiza con el ánimo de que todo el mundo participe, en especial los principiantes, desarrollando un programa en nuestro lenguaje favorito.
Habrá menciones para el programa más claro, el más elegante, el más corto, el que realice su labor con más y menos módulos, la solución obvia, la más rápida y para los que empiezan a programar.
Como única excepción, no se podrá utilizar el módulo Subtitles (obviamente).
Los programas se deberán publicar a continuación de este. ¡Adelante!