INTRODUCCIÓNSupongamos que tenemos un fichero de texto con la siguiente estructura:
Código:
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.
Es un fichero que almacena los subtítulos de películas o grabaciones hechas en otros formatos. Si tenemos una película y el reproductor encuentra un fichero de este tipo con el mismo nombre, intentará colocar los textos en los tiempos indicados, como subtítulos de la película.
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.
ENTRADAAl 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:
subs_desvia.pl EnanoRojo_7x01.srt -12
subs_desvia.pl EnanoRojo_3x05.srt 92
SALIDALa 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 ENTRADAEl 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 SALIDAIgual que el de entrada.
PARTICIPACIÓNEsta 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!