Autor Tema: Script para ordenar las fotos en carpetas usando exiftool  (Leído 46214 veces)

kallh

  • Bimilenari@
  • **
  • Mensajes: 2242
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #15 on: 07 abr 2010, 04:58 am »
Le cambias los permisos para que sea ejecutable.
¿Cómo se cambian los permisos?

Bueno, voy aprendiendo poco a poco y aquí me respondo yo mismo. Veo que los permisos se cambian con botón derecho y en la pestaña Permisos clicar en Permitir ejecutar el archivo como un programa.

Lo guardas con el nombre 'clasifica' en una carpeta que esté en el path (Yo la guardo en la carpeta bin dentro de la carpeta home de mi usuario).

¿Cuál es el path? ¿Cual es la carpeta bin? Yo en mi carpeta no encuentro ninguna con ese nombre.

Respecto a estas dudas: encuentro la carpeta bin en Lugares > Equipo > Sistema de Archivos, pero no sé si es ahí donde tengo que pegar el archivo "clasifica". He intentado pegarla ahí una vez pero no me ha dado permiso para hacerlo. Esta carpeta está fuera de home y no sé si liaré alguna metiéndome donde no debo.  :?

P.D.: Por si acaso, utilizo Ubuntu 9.10.

Un saludo,

Andoni


Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #16 on: 07 abr 2010, 05:15 am »
Los permisos de ejecución se los puedes dar también desde consola con

Código: [Seleccionar]
$ chmod +x programa

Aunque si tengo el administrador de archivos abierto lo suelo hacer con el ratón.

El path es una variable que contiene los sitios a buscar programas cuando no los encuentra en el directorio desde el que los llamas. Teclea

Código: [Seleccionar]
$ echo $PATH
y te dirá que directorios tienes tú accesibles.

El /bin, que es el que te refieres de ...->sistema de archivos, es para los programas instalados para todos los usuarios. El que se refiere Redy es uno en tu propio home. Las instalaciones suelen crear un /home/usuario/bin para poner ahí los ejecutables que tú vas creando. Si no lo tienes creado, puedes hacerlo y poner ahí los scripts que vayas usando.

Si te ha salido en la variable $PATH, ya está listo. Si no salía, después de crearlo tecleas

Código: [Seleccionar]
$ export PATH=$PATH:/home/tuusuario/bin
Y ya lo tienes.
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

kallh

  • Bimilenari@
  • **
  • Mensajes: 2242
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #17 on: 07 abr 2010, 05:23 am »
El path es una variable que contiene los sitios a buscar programas cuando no los encuentra en el directorio desde el que los llamas. Teclea

Código: [Seleccionar]
$ echo $PATH
y te dirá que directorios tienes tú accesibles.

Esto me devuelve:

Código: [Seleccionar]
andoni@andoni-desktop:~$  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
andoni@andoni-desktop:~$


redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #18 on: 07 abr 2010, 05:26 am »
¿Cuál es el path?

El path es una variable de entorno que indica separadas por ':' las carpetas en las que se buscarán los ficheros ejecutables si no se indica en que carpeta están al ejecutarlos.

Código: [Seleccionar]
echo $PATH

Cita
¿Cual es la carpeta bin?
 Yo en mi carpeta no encuentro ninguna con ese nombre.

Depende de las distribuciones en algunas /home/USUARIO/bin (o lo que es lo mismo ~/bin) se crea por defecto y se añade al path. Si no es tu caso puedes crearla (desde el nautilus o el navegador de ficheros que uses) y editar el fichero .bashrc para añadirle al final una línea que ponga

Código: [Seleccionar]
PATH="$PATH:~/bin"

Para editar el fichero puedes buscarlo en tu carpeta home, teniendo en cuenta que tienes que visualizar los ficheros ocultos para verlo, y editarlo o puedes poner en un terminal:
Código: [Seleccionar]
gedit ~/.bashrc

(El símbolo ~ lo consigues en un teclado español con la tecla [Alt Gr]+[Ñ] o [Alt Gr]+la que tiene el Interrogante de abrir y la admiración de abrir.)


Otra posibilidad si no quieres crear la carpeta bin ni tocar los paths es que pongas el path completo en la línea exec del fichero .desktop.

Supongamos que guardaste el script clasifica en /home/kallh pues modificas la línea exec del .desktop para que en vez de poner:

Código: [Seleccionar]
Exec=clasifica %F

ponga:

Código: [Seleccionar]
Exec=/home/kallh/clasifica %F

Cita
¿Cómo se cambian los permisos?

Desde el nautilus le das con el botón derecho al archivo, propiedades, permisos y marcas 'Permitir ejecutar...'

Desde comando:

Código: [Seleccionar]
chmod +x nombre_del_archivo


Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


kallh

  • Bimilenari@
  • **
  • Mensajes: 2242
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #19 on: 07 abr 2010, 05:32 am »
Gracias Colegota y Redy.  q:)

Ahora tengo que ir al curro, así que seguiré con ello al mediodía o a la noche. Como no estoy muy acostumbrado a la línea de comandos y demás, tengo que leerlo tranquilamente y digerirlo poco a poco para enterarme bien de lo que hago.

Un saludo,

Andoni

Manolo

  • Bimilenari@
  • **
  • Mensajes: 2876
  • No dejes que la realidad te arruine una buena foto
    • Mi galeria en Ipernity
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #20 on: 07 abr 2010, 17:08 pm »
A partir del podcast me di cuenta que la manera de ordenar las fotos de Tomás y la mía son muy parecidas y me decidí a adoptar el script de Redy en su formato para Geeqie. Funciona a las mil maravillas, con algún cambio que he puesto para adaptarlo a mi forma de clasificar.

Sin embargo, he hecho una segunda versión en la que aprovecho para introducir los datos de autoría y licencia en los RAW. Y esa no funciona tan bien y no me lo explico  :?

Veamos: la versión de Redy mueve las fotos de la tarjeta al directorio que corresponde y eso es lo que me interesa. Sin embargo, la versión "ampliada" sólo copia las imágenes por lo que después tengo que andar borrando a mano, por no hablar de la confusión cuando las fotos de un mismo tema no van consecutivas.

Estos son los códigos. Versión Redy normal:

Código: [Seleccionar]
Exec=VAR=$(zenity --entry --text="Motivo fotográfico") && exiftool '-Directory<DateTimeOriginal' -d "/home/imagenes/%%Y/%%m %%B/%%d${VAR:+ $VAR}" %F
Y esta es mi versión, que sólo añade dos opciones de inserción de datos EXIF:

Código: [Seleccionar]
Exec=VAR=$(zenity --entry --text="Motivo fotográfico") && exiftool  -Artist='Manuel Apellidos http://mpancorbo.ipernity.com' -'Copyright Owner=CC-BY - http://creativecommons.org/licenses/by/3.0/'  '-Directory<DateTimeOriginal' -d "/home/imagenes/%%Y/%%m %%B/%%d${VAR:+ $VAR}" %F
¿Qué pasa?  ::)
Ubuntu & Debian, Nikon D40X Nikon D5100
ufraw, photivo, imagemagick, gimp, pantools
Artículos y fotos bajo licencia CC-BY

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #21 on: 07 abr 2010, 17:36 pm »
Gracias Colegota y Redy.  q:)
Ahora tengo que ir al curro, así que seguiré con ello al mediodía o a la noche. Como no estoy muy acostumbrado a la línea de comandos y demás, tengo que leerlo tranquilamente y digerirlo poco a poco para enterarme bien de lo que hago.

Pero hazle caso a Redy con lo del .bashrc porque yo he respondido muy deprisa y lo del export es solución momentánea que, o se pone siempre para llamarlo o se pierde al cerrar la sesión. Así que grabarlo en el .bashrc es más práctico. Y yo me iría más por lo de crearte la carpeta bin en home, que seguro que a partir de ahora comenzarás a añadir scripts con frecuencia. :)
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

kallh

  • Bimilenari@
  • **
  • Mensajes: 2242
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #22 on: 07 abr 2010, 20:03 pm »
Bueno, por fín tengo el script funcionando.

He creado la carpeta bin en mi usuario y he modificado el archivo .bashrc añadiéndole al final

Código: [Seleccionar]
PATH="$PATH:~/bin"
tal y como me ha indicado Redy.

He modificado la ruta del DIR a donde quería que me copiara las fotos (que la tenía mal escrita). Al principio no me funcionaba el script pero le he dado permiso de ejecución al archivo creado en .config/geeqie/applications y por fín está todo funcionando. Ahora tengo que decidir qué tipo de jerarquía quiero para la clasificación en años, meses y días, pero eso lo tendré que dejar para mañana que se me cierran las pestañas.

De nuevo mil gracias a Redy y Colegota por vuestra ayuda.  :chin:
Y espero no ser muy pesado, aunque conociéndome presumo que habrá más peticiones de ayuda.  :sonroja2:

Un saludo,

Andoni

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #23 on: 20 abr 2010, 14:07 pm »
Una corrección de la que me acabo de dar cuenta:

Si la carpeta de dónde importamos las fotos tiene un tipo de fichero case-insensitive, por ejemplo FAT, lo cual suele ser usual en tarjetas de memoria, es mejor poner la lista de ficheros con la extensión en minúsculas primero ("jpg JPG nef NEF ..." y no "JPG jpg NEF nef ...") para que el destino lo ponga en minúsculas, porque como el mismo fichero lo va a encontrar de las dos formas, lo grabará en la primera de la lista.
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


JoRdi

  • Palizas oficial
  • *
  • Mensajes: 10191
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #24 on: 20 abr 2010, 15:22 pm »
Buenas,

Una corrección de la que me acabo de dar cuenta:

Pues nada, que se agradece la información o mejor dicho la corrección q:)

Ta lu3go

tomas.senabre

  • Papá del Mes
  • Trimilenari@
  • *
  • Mensajes: 3370
    • La Mirada Hecha Pedazos
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #25 on: 29 abr 2010, 17:51 pm »
Corregido  :-) y apuntada la modificación de Manolo
"Hay tres maneras de adquirir sabiduría: primero, por la reflexión, que es la más noble; segundo, por imitación, que es la más sencilla; y tercero, por la experiencia, que es la más amarga". Confucio

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #26 on: 30 abr 2010, 04:36 am »
Veamos: la versión de Redy mueve las fotos de la tarjeta al directorio que corresponde y eso es lo que me interesa. Sin embargo, la versión "ampliada" sólo copia las imágenes por lo que después tengo que andar borrando a mano, por no hablar de la confusión cuando las fotos de un mismo tema no van consecutivas.

La explicación la tienes en la página de exiftool:

Cita
Notes:

Writing the FileName and/or Directory tags alone causes the file to be renamed or moved, not copied. However, if any other tags are written at the same time, then the file is rewritten to the new destination and the original file is left unchanged. (The only exception to this is FileModifyDate tag, which will not cause the file to be rewritten because it is the only other writable tag not representing meta information within the file.) But if desired, the -overwrite_original option may be used in this case to remove the original copy.

Vamos que el exiftool si solo le pasas el parámetro -directory o -filename efectivamente mueve o renombra el fichero, pero si le pasas cualquier otro parámetro a parte de esos, que modifique algun tag, deja la copia original intacta. (Si le modificas los tags sin cambiarle el directorio o el filename también te deja la copia original añadiendole la palabra _original al final). Para evitar que deje la copia, tanto en uno como en otro caso, has de añadir el parámetro -overwrite_original.

Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


jfymal

  • Veteran@
  • *****
  • Mensajes: 368
    • Linux, fotografía, tecnología...
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #27 on: 14 jun 2010, 02:19 am »
Pues por fin he tenido tiempo de poner en marcha el script, fuciona perfectamente, gracias Redy por la explicación, como siempre muy efectiva.

jotawolf

  • Comenzando
  • *
  • Mensajes: 5
  • FJA
    • FJA - Website
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #28 on: 11 ago 2010, 19:10 pm »
Aunque está un poco chapuza les dejo el código de mi script final.
Ordena en tres directorios distintos uno para las fotos, otro los negativos (raw) y otros los videos.
Para los jpeg pone un comentario con el autor y la licencia.
A ver cuando me pongo con uno en perl un poco más serio...

Código: [Seleccionar]
#! /bin/bash
#
# original en http://comunidad.fotolibre.net/index.php/topic,5670.0.html
#
# v00.1 Modificado por FJA
# 11-08-2010
# agregado 2 loops para poner negativos y videos.
#
BASEDIR="/disco2"
FOTOS_DIR="$BASEDIR/Pictures"
NEGATIVOS_DIR="$BASEDIR/Negativos"
VIDEOS_DIR="$BASEDIR/Videos"
#EXT="jpg JPG jpeg JPEG png PNG nef NEF orf ORF raw RAW crw CRW cr2 CR2 dng DNG avi AVI"
FOT="jpg JPG jpeg JPEG"
NEG="nef NEF orf ORF raw RAW crw CRW cr2 CR2 dng DNG"
VID="avi AVI"
COMENTARIO="Fernando Jose Andrade,http://www.fjandrade.com,C:Attribution Creative Commons"
#
MOTIVO=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $FOT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$FOTOS_DIR/%Y/%m${MOTIVO:+_$MOTIVO}" \
-Comment="$COMENTARIO" -overwrite_original  \
        "${NOMBRE}.$j"
     fi
   done
   for k in $NEG; do
     if [[ -f "${NOMBRE}.$k" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$NEGATIVOS_DIR/%Y/%m${MOTIVO:+_$MOTIVO}" \
        "${NOMBRE}.$k"
     fi
   done
   for l in $VID; do
     if [[ -f "${NOMBRE}.$l" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$VIDEOS_DIR/%Y/%m${MOTIVO:+_$MOTIVO}" \
        "${NOMBRE}.$l"
     fi
   done
   shift
done

Saludos.

FJA
----
Nikon d90, Nikkor 18-105 VR AF-S, Nikkor 35m 1.8 AF-S, Sigma 10-20, SB-600

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #29 on: 17 ago 2010, 10:05 am »
Aunque está un poco chapuza les dejo el código de mi script final.
Ordena en tres directorios distintos uno para las fotos, otro los negativos (raw) y otros los videos.
Para los jpeg pone un comentario con el autor y la licencia.
A ver cuando me pongo con uno en perl un poco más serio...

Gracias por mejorarlo, y sobre todo por compartirlo.  :-)
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...