Cambiar permisos en Solaris desde java


Como es sabido , hay 3 atributos básicos en Unix  para archivos simples: lectura, escritura y ejecutar.

  •  R  , es decir permiso de lectura (read):Si tiene permiso de lectura de un archivo, puede ver su contenido.
  • W , es decir  permiso de escritura (write):Si tiene permiso de escritura de un archivo, puede modificar el archivo. Puede agregar, sobrescribir o borrar su contenido.
  • X, es decir permiso de ejecución (execute):Si el archivo tiene permiso de ejecución, entonces puedes decirle al sistema operativo que lo ejecute como si fuera un programa. Si es un programa llamado “foo” lo podremos ejecutar como cualquier comando.

En este punto es muy interesante saber que un script en Cshell  (interprete) necesitara permisos de lectura y ejecución para poderlo lanzar, pero sin embargo un programa compilado  en java( por ejemplo en un jar) solo necesitara permisos de lectura  .

Para  cambiar los permisos tanto en directorios como en ficheros en todas las versiones de unix y variantes   usamos el comando  chmod (change mode)  pudiéndose agregar o remover permisos a uno o mas archivos con + (mas) o – (menos)

La representación octal de chmod es muy sencilla:

  • Lectura tiene el valor de 4
  • Escritura tiene el valor de 2
  • Ejecución tiene el valor de 1

Entonces:

 rwx | 7 | Lectura, escritura y ejecución |
rw- | 6 | Lectura, escritura |
r-x | 5 | Lectura y ejecución |
r– | 4 | Lectura |
-wx | 3 | Escritura y ejecución |
-w- | 2 | Escritura |
–x | 1 | Ejecución |
— | 0 | Sin permisos |

Por lo tanto:

chmod u=rwx,g=rwx,o=rwx | chmod 777 |
chmod u=rwx,g=rx,o= | chmod 760 |
chmod u=rw,g=r,o=r | chmod 644 |
chmod u=rw,g=r,o= | chmod 640 |
chmod u=rw,go= | chmod 600 |
chmod u=rwx,go= | chmod 700 |

Es decir para asignar a  un fichero o directorio permisos totales usaremos  el comando

chmod 777  fichero

Es una tarea habitual  que  nuestras aplicaciones java necesiten cambiar permisos  en el sistema de ficheros no solo windows sino tambien en la maquina donde se ejecutaran ( Solaris, Unix,etc)

La forma tradicional de hacerlo a partir de Jr6   es mediante las primitivas  setReadable, setExecutable  o setWritable  del   objeto fichero (file)

Por ejemplo para dar permisos totales (777) sobre un objeto file,   esta es  la sintaxis a usar:

     file.setReadable(true, false);

     file.setExecutable(true, false);

     file.setWritable(true, false);

Por  desgracia   aunque podamos compilar código java mediante las primitivas  setReadable, setExecutable  o setWritable ,por ejemplo para dar permisos totales (777) sobre un objeto file ,   puede que en la maquina donde se ejecute  nos falle  porque tenga otra versión de java inferior

 

Una solución bastante potente que  resuelve el problema es usar  el metodo untime.getRuntime().exec     que nos permite invocar  a otro programa java o incluso comandos del sistema operativo ( en nuestro  caso chmod 77)

 

Como ejemplo ,  os  muestro una clase que cambia los permisos a 777 un fichero o directorio que se le pase como parámetro:

public static void permisos777 (final String pathname)
{

Process theProcess = null;

//intentamos cambiar los permisos del fichero recien creado
System.out.println(«Cambiamos permisos 777 a «+pathname);
try
{
theProcess = Runtime.getRuntime().exec(«chmod 777 «+ pathname);
}
catch(IOException e)
{
System.out.println(«Error en el método exec()»);
}
//fin de cambio de permisos

}

Como descargar trascripciones de videos de youtube


En YouTube puede encontrar todo tipo de vídeos como películas, series, tutoriales, vídeos musicales, etc donde algunos  tienen subtítulos incrustados que forman parte del mismo vídeo, mientras que otros tienen subtítulos están separados del mismo.

Los subtítulos incrustados no pueden ser descargados de forma directa , pero puede utilizar un servicio en línea, como, para descargar los subtítulos que no están incrustados.

 

En realidad  descargar los subtítulos no incrustados de un vídeo de YouTube con servicos web es muy sencillo

  1. Copie la url del enlace del vídeo de YouTube,
  2. Entre en  http://www.lilsubs.com/                                                                                      
  3. Pegue la URL en el campo correspondiente.
  4. Haga clic en Download y seleccione el idioma en que quiera descargar los subtítulos
  5. Elija la carpeta donde desee almacenar el archivo SRT y haga clic en Guardar.

 

Los archivos srt son ficheros de texto que contienen los subtítulos asociados a un video. Utilizan el formato subrip, en el que se almacena esta información:

  •  Intervalo de tiempo en el que aparece
  • Texto del subtítulo

Al tratarse de archivos de texto hay que tener en cuenta su codificación, que en muchos casos el reproductor no escoge la correcta. Seleccionando la que se ajuste a nuestro idioma se pueden evitar problemas con acentos y símbolos.

• 00:01:02,383 –> 00:01:05,133
• «Campos de Opio, Tíbet»
• 2
• 00:02:21,960 –> 00:02:25,735
• Tú y tus hermanos habéis asesinado a 3 de nuestros hombres.
• 3
• 00:02:25,800 –> 00:02:27,327

 

Es obvio que al ser ficheros de texto podemos manipularlos  eliminando  por ejemplo  todas las cifras   y luego  juntando los textos, pero esto conlleva mucho tiempo  de trabajo que en realidad como vamos a ver  podemos automatizar

A continuación vamos a ver tres herramientas para  gestionar  estos archivos de una forma mas sencillas:

 

 

Usar  una app para convertir un archivo .srt en texto limpio 

Subtitle Edit es una de  las mejores opciones pues vale para todos los archivos y respeta los números.

 

Los  pasos para su uso son muy sencillos

  • Descargue Subtitle Edit
  • Abra un archivo .srt.
  • Pinche en la pestaña ‘Source view’,
  • Vaya al desplegable ‘Format’ escoja ‘Scenarist’ (.txt).

 

  • Así ordenamos por columnas separadas los tiempos y textos. Ahora dale a ‘File > Save as…’ para guardar el archivo .txt.

 

  • Abra el archivo .txt,
  • Copia todo el contenido y péguelo en Excel. Como verás tendrá varias columnas, elimina las primeras (referentes a los tiempos) para quedarse sólo con el contenido.

 

  • Copie el contenido y pégelo en la barra de búsqueda de un navegador para que se ponga el texto de corrido. Cópialo de nuevo y pégalo en un documento para comprobar que está bien.

 

Convertir un archivo .srt en texto limpio directamente con Excel

Este metodo  funciona cuando sólo hay una línea de diálogo por separado.

Puede abrir el .srt con el Bloc de notas, copiar el contenido y pegarlo en Excel, eliminando las filas de información numérica para seleccionarlo todo y pegarlo en un documento aunque es más fácil si  descarga Asap Utilities.

Seleccione las celdas, pinche en este plugin cuando lo instale y dale a ‘Columnas y filas > Selección condicional de fila y columna…’.

En ‘4. Opciones de búsqueda’ elija ‘par filas’ y dele a ‘Aceptar’ para eliminar las filas de los tiempos.

El Excel se quedará como el que se muestra aquí. Selecciona ahora ‘impar filas’ para quitar los números.

Cuando lo haga, dele a ‘Cerrar’. Tendrá ahora sólo el texto pero con muchos saltos de línea. Cópielos y péguelos en la barra de búsqueda de un navegador para que se ponga seguido.

Cópielo de nuevo y péguelo en un documento para comprobar que está bien.

Convertir un archivo .srt en texto limpio con Word

Este método tiene el inconveniente de que se borrarán los números, pero  vale para cualquier .srt.

Abra el archivo captions.srt con Word (o si no te funciona con el Bloc de notas y copies el texto) y deje el puntero al principio del texto.

Vaya a ‘Inicio > Reemplazar’ (o presiona ‘CTRL+B’) y en el desplegable de la lupa escoge ‘Reemplazar’.

Escriba el número 0 en el campo ‘Buscar’, deje vacío el campo ‘Reemplazar’ y presione ‘Remplazar todos’. Luego el número 1 y así hasta el 9. Esto eliminará todos los números.

Copie los símbolos que queden (por ejemplo ::, –> ::,) en ‘Buscar’, deje vacío el campo ‘Reemplazar’ y presione ‘Remplazar todos’. Con esto tendremos sólo letras.

Escriba ^p en ‘Buscar’, deje un espacio en blanco en el campo ‘Reemplazar’ y presione ‘Remplazar todos’. Así sustituirnos los saltos de línea y el texto quedará de corrido.

Si quedan espacios en blanco sustituirlos, copiándolos en ‘Buscar’ y dejando sólo un espacio en ‘Reemplazar’.