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

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Como ya se comentó hace tiempo, creo que fué Medyr. El exiftool permite ordenar las fotos basándonos en la información exif. Y ya habíamos preparado un .desktop para geeqie, a petición de tomás senabre para hacerlo automáticamente. El problema es que como geeqie agrupa raw+jpeg había que pasarlo dos veces.

Pero esto se puede arreglar con un sencillo script: Yo le he llamado clasifica y lo puse en ~/bin para que esté accesible en le path del usuario. También hay que darle permiso de ejecución.

Código: [Seleccionar]
#! /bin/bash
#
#  Las siguientes dos variables pueden ser ajustadas segun tus preferencias
#
#  DIR es el directorio padera a dónde se van a mover las fotos se crearán
#  subcarpetas para el año, mes y día_Motivo. Si quieres otra estructura
#  distinta deberás modificar el comando exiftool.
#
#  EXT son las extensiones que se verán afectadas, normalmente jpg y el raw
#  de tu cámara. Ponlo en mayúsculas y en minúsculas por si acaso.
#
DIR="/media/fotos/clasificadas"
EXT="JPG jpg JPEG jpeg NEF nef ORF orf RAW raw CRW crw CR2 cr2 DNG dng"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}" \
        "${NOMBRE}.$j"
     fi
   done
   shift
done


Ahora solo queda poner el .desktop para geeqie.

Código: [Seleccionar]
[Desktop Entry]
Version=1.0
Type=Application
Name=Sort By Date
Comment=Sort files by date using Exiftool
#Name[cs]=
#Name[fr]=
Name[es]=Clasificar por fechas

# %f A single file name, even if multiple files are selected. The
# system reading the desktop entry should recognize that the program in
# question cannot handle multiple file arguments, and it should should
# probably spawn and execute multiple copies of a program for each
# selected file if the program is not able to handle additional file
# arguments. If files are not on the local file system (i.e. are on HTTP
# or FTP locations), the files will be copied to the local file system and
# %f will be expanded to point at the temporary file. Used for programs
# that do not understand the URL syntax.
#
# %F A list of files. Use for apps that can open several local files
# at once. Each file is passed as a separate argument to the executable
# program.
#
# %u A single URL. Local files may either be passed as file: URLs or
# as file path.
#
# %U A list of URLs. Each URL is passed as a separate argument to
# the executable program. Local files may either be passed as file: URLs
# or as file path.
#
# "$GEEQIE_DESTINATION" destination set by Geeqie
Exec=clasifica %F

# Desktop files that are usable only in Geeqie should be marked like this:
Categories=X-Geeqie;
OnlyShowIn=X-Geeqie;

# Show in menu "File"
X-Geeqie-Menu-Path=FileMenu/FileOpsSection

# This is a filter - $GEEQIE_DESTINATION is required
X-Geeqie-Filter=false

# It can be made verbose
# X-Geeqie-Verbose=true
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...


tomas.senabre

  • Papá del Mes
  • Trimilenari@
  • *
  • Mensajes: 3370
    • La Mirada Hecha Pedazos
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #1 on: 31 mar 2010, 17:11 pm »
Pues muchas gracias señor Redy, estoy probándolo pero ya.

Te digo algo en unos minutos....
"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

tomas.senabre

  • Papá del Mes
  • Trimilenari@
  • *
  • Mensajes: 3370
    • La Mirada Hecha Pedazos
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #2 on: 31 mar 2010, 17:26 pm »
Funciona de narices, me lo he dejado descargando fotos y he venido a responderte.  :-)

Yo además he añadido los RAW de Panasonic el RW2 rw2

Muchas gracias Redy, eres un crack  :chin:
"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

jfymal

  • Veteran@
  • *****
  • Mensajes: 368
    • Linux, fotografía, tecnología...
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #3 on: 03 abr 2010, 18:57 pm »
y un pequeño manual de todo el proceso :ejem:

JoRdi

  • Palizas oficial
  • *
  • Mensajes: 10191
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #4 on: 04 abr 2010, 08:02 am »
Buenas,

Menuda enciclopedia estás hecho redy, ¡eres un genio!, gracias por el script q:)

Ta lu3go

jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #5 on: 04 abr 2010, 10:04 am »
Hola chic@s,

Me he perdido un poco...  :-o

Yo partía de los scripts de este hilo y que el inconveniente como se comenta era que debías hacer dos pasadas o mover a pinrel los raw a la carpeta creada con el script en geeqie.

Pero ahora no acabo de pillarlo, así que hasta que no lo comprenda no mueva ni un pelo  :-?

Si sustituyo este que comentas por el del hilo de referencia consigo lo mismo pero sin necesidad de hacer dos pasadas? Ya se que la cosa es probarlo, pero ultimamente "mis pruebas suelen ser muy peligrosas y ando escamado...

Saludos

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #6 on: 04 abr 2010, 18:29 pm »
Gracias, redy, me lo apunto para la próxima revisión de mi flujo. :-?
"Si quieres ver lo invisible, observa con atención lo visible."
                                                     Manuel Álvarez Bravo (1902-2002)

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #7 on: 05 abr 2010, 04:55 am »
Si sustituyo este que comentas por el del hilo de referencia consigo lo mismo pero sin necesidad de hacer dos pasadas?

Exacto.

y un pequeño manual de todo el proceso :ejem:

¿Como se instala?

Pues partimos de que tienes instalado:

- geeqie 1.0 (o alguna 0.99 Beta).
- exiftool
- zenity

Copias y pegas el primer trozo de código (el script en bash) en un editor de textos. Editas las lineas que empiezan por DIR= y por EXT= para adaptarlas al sitio dónde quieres guardar tus fotos, y asegurarte de que la extensión de tus raws está en la lista. 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).

Le cambias los permisos para que sea ejecutable.

Copias y pegas el segundo trozo de código en un editor de texto y lo guardas en la carpeta .config/geeqie/applications, que tendrás dentro tu carpeta home de usuario, con el nombre de clasificar_fotos.desktop

(Alternativamente a usar un editor de texto, este último paso puedes hacerlo con el propio geeqie: Te vas a editar, preferencias, configurar editores, nuevo. Borras todo y pegas el segundo trozo de código. Abajo en dónde pone new.desktop le cambias el nombre por clasificar_fotos.desktop, y le das a guardar)

Puedes asignarle una tecla rápida en editar, preferencias, preferencias, teclado.

¿Como se usa?

Partimos de que tienes la cámara enchufada y montada en una carpeta, o una tarjeta insertada en el lector, o una carpeta donde están las fotos sacadas en una o varias sesiones, todas en el mismo saco.

Navegas con el geeqie hasta esa carpeta o dispositivo. Seleccionas en la lista de archivos un grupo de fotos que correspondan al mismo 'evento' y le das a editar, editores externos, clasificar por fechas (o pulsas la tecla que le has asignado).

Se te abrirá una ventana de diálogo que te pide un nombre. Le ponemos por ejemplo 'Cumpleaños de pepito' suponiendo que todas las fotos son de la fecha por ejemplo 04/05/2010, dentro de la carpeta que configuraste en el primer script se creará, si no existía ya, una carpeta 2010, dentro de esta una carpeta 05, y dentro de ella una carpeta 04_Cumpleaños de pepito, y allí se moverán todas las fotos seleccionadas. Si el mismo día hicimos más fotos pero de otro evento, las seleccionamos y le ponemos otro nombre e irán a parar a otra carpeta que también empezará por 04_ pero tendrá otro nombre a continuación.

Ahora seleccionamos todas las fotos que corresponden a otro evento, por ejemplo 'Viaje a Roma' pero en este caso no son de un único día, sino que el viaje abarca desde el 1 al 5 de Agosto de 2010. Te pedirá el nombre, le pones 'Viaje a Roma' y se creará la carpeta 08 dentro de 2010 (si no existía ya) y dentro de ella se crearán las carpetas '01_Viaje a Roma', '02_Viaje a Roma' ... '05_Viaje a Roma' y las fotos seleccionadas se copiarán a esas carpetas, cada una al día correspondiente.

Si dejas en blanco el nombre del evento cuando se te pregunta se creará la carpeta del día sin más.

**Modificación para añadir esto**

Por cierto los que quieran modificar la estructura del arbol, tal como comentabamos en este hilo. Tienen que cambiar la línea del script en bash que dice
Código: [Seleccionar]
      exiftool '-Directory<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}" \
        "${NOMBRE}.$j"
Ojo que aquí los % son simples y no dobles como en el fichero .desktop.

Por ejemplo si quieres poner todas las carpetas al mismo nivel con el nombre de AÑO_MES_DIA puedes poner

Código: [Seleccionar]
-d "$DIR/%Y_%m_%d${VAR:+_$VAR}" \
Si quisieras crear una carpeta año, una carpeta mes_evento y el día anteponerselo a las fotos en el nombre podrías usar:

Código: [Seleccionar]
      exiftool '-filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m{VAR:+_$VAR}/%d_${NOMBRE}.$j" \
        "${NOMBRE}.$j"

El esquema lo decides tu.

(Modificado para incluír zenity como dependencia)
« Última Modificación: 07 abr 2010, 03:59 am por redy »
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...


tat

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 9622
  • Patch y buenas vibraciones
    • Libertat
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #8 on: 06 abr 2010, 08:46 am »
Su peso en oro, si señor. Gracias maestro, me la apunto para cuando tenga un rato.

jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #9 on: 06 abr 2010, 14:41 pm »
Gracias una vez mas redy...
funcionando  :-)

Saludos

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


kallh

  • Bimilenari@
  • **
  • Mensajes: 2242
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #10 on: 07 abr 2010, 03:52 am »
Hola,

Estoy intentando probar el script pero tengo la duda de si tengo instalado exiftool o no.

En el gestor de paquetes Synaptic me sale que tengo instalado  libimage-exiftool-perl y en la descripción del paquete dice Library and program to read and write meta information in multimedia files. Según esta descripción entiendo que el programa está incluído en el paquete.

¿Hay otra manera de comprobarlo?

Un saludo,

Andoni

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #11 on: 07 abr 2010, 03:57 am »
Estoy intentando probar el script pero tengo la duda de si tengo instalado exiftool o no.

Pues da la impresión de que si, pero para asegurarte puedes teclear en una consola:

Código: [Seleccionar]
exiftool -ver

Si te devuelve ExifTool seguido de un número de versión es que lo tienes, si te dice que 'command not found' o algo parecido es que no.

¡Ah! se me olvidó poner que también es necesario tener instalado 'zenity'. Ahora mismo lo modifico.
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 #12 on: 07 abr 2010, 04:03 am »
Otro par de preguntas:

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.

Le cambias los permisos para que sea ejecutable.

¿Cómo se cambian los permisos?

Siento ser un poco preguntón y mis disculpas si pregunto algo muy evidente y de "párvulos".  :sonroja2:

Gracias y un saludo,

Andoni

kallh

  • Bimilenari@
  • **
  • Mensajes: 2242
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #13 on: 07 abr 2010, 04:04 am »
Perdona Redy, nos hemos cruzado.

Miro lo otro ahora y gracias de nuevo.

kallh

  • Bimilenari@
  • **
  • Mensajes: 2242
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #14 on: 07 abr 2010, 04:07 am »
En la consola me devuelve solamente un nº: 7.82, que me imagino será la versión de exiftool.
Y en el gestor de paquetes Synaptic aparece zenity instalado.