Process.py

Este módulo pretende automatizar el proceso de crear scripts para Nautilus. Con él podemos ejecutar un comando cualquiera de linea de comandos desde un script, creando un archivo con una llamada a una función. Vamos a ver un ejemplo:

Imaginamos que queremos rotar una imagen hacia la derecha. Si tenemos instalado ImageMagick lo haríamos así:

convert -rotate 90 imagen.jpg imagen.jpg
							

Ahora queremos hacer esto desde un script. Haciendo uso Process.py, lo haríamos así:

#!/usr/bin/env python
import Process
Process.ProcessFiles(
	"convert -rotate 90 $FILE$ $FILE$", # comando
	"jpg|png", # tipo de archivos
	False, # leer directorios?
	False, # procesar directorio como un archivo
	"Las imágenes se rotaron bien") # mensaje final

Lo primero es copiar en el mismo directorio

/home/usuario/.gnome2/.nautilus-scripts

el script que hemos creado y junto a él colocamos el archivo Process.py. Le daremos permiso de ejecución a nuestro archivo, pero a Process.py no se lo daremos.

¿Qué hemos hecho? Pues hemos llamado a una función de la librería Process y por cada uno de los archivos seleccionados en Nautilus ejecutará el primer argumento pasado en la función. Este argumento es:

convert -rotate 90 $FILE$ $FILE$
							

Supongo que ya os habréis dado cuenta que donde se ponía el archivo, en la función tenéis que poner $FILE$. El programa cambiará el nombre del archivo seleccionado por $FILE$. Veamos otro ejemplo:

cp $FILE$ copia_$FILE$
							

Esto haría una copia de cada archivo seleccionado y a la copia le colocaría al principio del archivo "copia_". ¿Fácil no?. A partir de ahí lo que quieras.

Los parámetros de la función ProcessFiles son estos 5:

  • Comando: como hemos explicado antes
  • Tipos se archivos: separados por "|". Si está en blanco se ejecutará en todos los archivos seleccionados
  • Leer directorios: si seleccionamos un directorio en nautilus, si queremos que haga el proceso a todos los archivos y diretorios de este.
  • Procesar directorio: si selecionamos un directorio en nautilus, si queremos que se ejecute el comando sobre el directorio.
  • Mensaje final: si no está en blanco, la alerta que aparecerá al final del proceso.

Existen dos funciones en Process.py, una es ProcessFiles que ya hemos visto, y la otra es ProcessTogetherFiles. Esta última ejecuta un sólo comando con todos los archivos seleccionados. Por ejemplo si queremos abrir varias imágenes simultáneamente con el program GThumb hacemos esto:

gthumb imagen1.jpg imagen2.jpg imagen3.jpg imagen4.jpg
							

Con Process.py crearemos el siguiente archivo:

#!/usr/bin/env python

import Process

Process.ProcessTogetherFiles(
	"gthumb $FILES$", # comando a ejecutar
	"jpg", # tipo de archivos
	"") # mensaje final
							

Esta vez $FILES$ reemplaza a todos los archivos que hemos seleccionado, sólo archivos, los directorio se los saltará.

Los parámetros de la función ProcessTogetherFiles son estos 5:

  • Comando: como hemos explicado antes
  • Tipos se archivos: separados por "|". Si está en blanco se ejecutará en todos los archivos seleccionados
  • Mensaje final: si no está en blanco, la alerta que aparecerá al final del proceso.

Para finalizar he creado un par de script llamados Process Gui que sirven para ejecutar directamente comandos sobre los archivos seleccionados en nautilus. Una par de screen:

Captura de Process.py Captura de Process.py

Así se podrá ejecutar directamente los scripts. Los textos entre símbolos de $, colocan en ese lugar un texto con el nombre del archivo. Las tres posibilidades son:

  • $FILE$: el nombre completo del archivo, nombre más extensión
  • $NAME$: sólo el nombre del archivo
  • $EXT$: sólo la extensión del archivo

Así podemos hacer cosas como estas:

cp $FILE$ $NAME$_copia.$EXT$
							

Haremos una copia de cada archivo seleccionado colocando detrás del nombre "_copia", por ejemplo un archivo llamado "imagen.jpg" tendría una copia llamada "imagen_copia.jpg"

© Javielinux
Para cualquier duda ponerse en contacto conmigo en javielinux (at) gmail.com