jueves, 25 de mayo de 2017

Programando: Validador de subtitulos .srt en Java

Ayer os comentaba que se ha detectado una vulnerabilidad en diversos reproductores de video que permite que, usando un archivo .srt modificado, se pudiera llegar incluso a tomar el control del equipo. Para reducir esos problemas (y para practicar un poquillo de Java) he desarrollado el siguiente programa: el programa que hay en este enlace (es el codigo, no un ejecutable): https://app.box.com/s/a6ncomly5jgbww38t4n0adn3a4e7g6wl

Este programa evalua si el formato usado para los subtitulos es el correcto.

Para ejecutarlo y tras compilarlo, se utiliza la siguiente linea:

java Compruebasubs nombre_1_de archivo nombre_2 nombre_3 ...

Este programa tiene un bug: solo funciona con archivos con codificacion ANSI. Otras codificaciones no están soportadas (UTF-8, Unicode...).

Un saludo.

EDIT: Puesto que lo actualizaré mas adelante he preferido dejar un enlace a la ultima version. seguramente mas adelante habrá mas versiones.

EDIT (30/05/2017): Nueva version: Ahora detecta mejor los saltos de linea. Ignora las lineas vacias.

6 comentarios:

  1. Hola acer, tengo una duda.
    He compilado el programa, pero me da error al escribir el nombre de los archivos, se que la razon es que no escribo bien el comando...

    yo lo hago asi:

    java Compruebasubs Hotel King Ep09_1_Hotel King Ep10_2

    El error está en como se escribe despúes de Compruebasubs, no se como colocar los capitulos. ¿donde coloco el nombre del capitulo, en donde pone nombre...o en donde?

    ResponderEliminar
  2. Cuando el archivo tiene espacios pon el nombre entre comillas o arrastralo al simbolo de sistema:

    java Compruebasubs "Hotel King Ep_09"

    java Compruebasubs "C:\ruta\Hotel King Ep_09"

    ResponderEliminar
  3. Oh, olvidaba comentarlo. ¡No le quites la extension .srt al nombre del archivo!

    ResponderEliminar
  4. Ya lo he probado y me salen 2 líneas:

    Opening file c:\............nombre del archivo.srt...
    Completed: c:\............nombre del archivo.srt is valid.

    Esto quiere decir que mi archivo esta limpio, ¿no?

    ResponderEliminar
    Respuestas
    1. Eso es.

      El programa finaliza con varios posibles mensajes:
      - You need to specify a file name: No has puesto un nombre de archivo.
      - File reading error in xxxxxx: el archivo xxxxxx no existe o no se puede leer.
      - Error found in line x: Probably missing a line, or non ANSI file: Ha encontrado un error en el archivo. Si la linea es la primera posiblemente es que el archivo no tenga una codificacion valida. Si no, puede ser que falte una linea o haya algun salto de linea incorrecto.
      - Error found in line " +numLinea + ": Time mark incorrect. Subtitles may have been modified. Check the file before using it: El archivo tiene fallo en una marca de tiempo. Puede que sea un archivo manipulado.
      - Completed: xxxxxx is valid: El fichero está perfecto. No debería dar problemas.

      Eliminar
    2. Ok, muchas gracias y gran trabajo, es una herramienta muy buena. Viene bien saber los posibles mensajes por si ocurre algo en el futuro :D

      Un saludo ;D

      Eliminar