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

invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #45 on: 02 ago 2011, 16:37 pm »
...
pero ¿Como cuenta el contador desde 1 siempre que aplico el script? ¿Que pasa si luego añado más imágenes a la misma carpeta, vuelve a contar desde 1 o tiene que mirar cual es la última? Y si las fotos son de fechas distintas y por lo tanto van a carpetas distintas ¿Como sabría el contador que tiene que volver a empezar?
Mmmm... gran dilema...  :? Nunca me ha ocurrido que tuviera que meter en la misma carpeta fotos de distintas sesiones; lo normal hasta ahora ha sido repartir en distintas carpetas fotos de la misma sesión porque tuvieran diferentes motivos, pero tienes razón: se puede dar el caso de que dos descargas distintas del mismo día y mismo motivo acaben en la misma carpeta o que una descarga con fotos de distintos días se dividan en varias carpetas y la numeración ya no seguiría el patrón que yo quiero... :?
"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 #46 on: 02 ago 2011, 16:53 pm »
Ah, para lo de tres cifras puedes usar printf:

solonombre="$(printf %03d ${#})"


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...


invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #47 on: 02 ago 2011, 17:02 pm »
Ah, para lo de tres cifras puedes usar printf:

solonombre="$(printf %03d ${#})"


Perfecto. :-)
Por lo pronto lo dejo así. A ver si un día de estos que estés aburrido lo perfeccionamos... :)o

Gracias, apúntate unas cuantas... :chin:
"Si quieres ver lo invisible, observa con atención lo visible."
                                                     Manuel Álvarez Bravo (1902-2002)

invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #48 on: 03 ago 2011, 03:29 am »
...
Perfecto. :-)
Por lo pronto lo dejo así. A ver si un día de estos que estés aburrido lo perfeccionamos... :)o
...

Pego aquí el código actual por si a alguien le sirve mi método:

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="/home/portillobarrera/Imágenes/Archivo"
EXT="jpg JPG jpeg JPEG nef NEF orf ORF raw RAW crw CRW cr2 CR2 rw2 RW2 dng DNG"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      ext1="$( echo $j| tr [:upper:] [:lower:])"
      solonombre="$(printf %03d ${#})"
      exiftool -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]' -Copyright='Copyleft :) cc-by-sa
Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en
http://creativecommons.org licenses/by-sa/3.0/es/' '-Filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}/%y%m%d${VAR:+_$VAR}_$solonombre.$ext1" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done
"Si quieres ver lo invisible, observa con atención lo visible."
                                                     Manuel Álvarez Bravo (1902-2002)

invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #49 on: 04 ago 2011, 04:36 am »
[nota mental]

Ayer estuve haciendo unas pruebas y, al descargar de la tarjeta, me numera las fotos al revés, es decir, del 001 para la más reciente, hasta la que sea para la primera que hice de esa descarga. :?
No tuve tiempo para probar en profundidad; esta tarde procuraré mirarlo con más detenimiento. :lee:

[/nota mental]
"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 #50 on: 04 ago 2011, 09:58 am »
[nota mental]

Ayer estuve haciendo unas pruebas y, al descargar de la tarjeta, me numera las fotos al revés, es decir, del 001 para la más reciente, hasta la que sea para la primera que hice de esa descarga. :?
No tuve tiempo para probar en profundidad; esta tarde procuraré mirarlo con más detenimiento. :lee:

[/nota mental]

Claro, ya te dije que ${#} era el número de parámetros que quedan por procesar. Si se supone que las fotos se pasan en orden al script la cuenta es de N a 1

Para darle la vuelta puedes poner antes del while

N=${#}

Y cambiar el printf por

solonombre="$(printf %03d $(( N + 1 -  ${#} )) )"



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...


invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #51 on: 04 ago 2011, 12:01 pm »
Sigo pensando que, cuando alguien escribe en el foro algo de código, suena esto en tu casa y se encienden las luces rojas... :toma:

Gracias mil, funciona a las mil maravillas. :-)

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="/home/portillobarrera/Imágenes/Archivo"
EXT="jpg JPG jpeg JPEG nef NEF orf ORF raw RAW crw CRW cr2 CR2 rw2 RW2 dng DNG"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
N=${#}
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      ext1="$( echo $j| tr [:upper:] [:lower:])"
      solonombre="$(printf %03d $(( N + 1 -  ${#} )) )"
      exiftool -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]' -Copyright='Copyleft :) cc-by-sa
Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en
http://creativecommons.org licenses/by-sa/3.0/es/' '-Filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}/%y%m%d${VAR:+_$VAR}_$solonombre.$ext1" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done

Modificado para enlazar a contenido libre. ;)

« Última Modificación: 04 ago 2011, 12:14 pm por hombre_invisible »
"Si quieres ver lo invisible, observa con atención lo visible."
                                                     Manuel Álvarez Bravo (1902-2002)

alcion

  • Veteran@
  • *****
  • Mensajes: 452
  • S.O: Debian GNU/Linux
    • El Blog de Alcion
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #52 on: 12 ago 2011, 16:40 pm »
... al script tal como está le veo un peligro. Si le corres el script a dos grupos de fotos del mismo día y mismo motivo fotográfico, el segundo grupo machacará a las fotos del primer grupo...

Cambiando la linea de código donde se define solonombre de la forma siguiente

Código: [Seleccionar]
#      solonombre="$(printf %03d $(( N + 1 -  ${#} )) )"

      solonombre="${NOMBRE: (-4)}"

se conservaría la numeración de la foto dentro de la tarjeta, y así no habría peligro de machacar unas fotos con otras.

... aunque lo mismo no es eso lo que se buscaba.
« Última Modificación: 12 ago 2011, 16:56 pm por alcion »

invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #53 on: 01 sep 2011, 14:51 pm »
... al script tal como está le veo un peligro. Si le corres el script a dos grupos de fotos del mismo día y mismo motivo fotográfico, el segundo grupo machacará a las fotos del primer grupo...
Acabo de hacer la prueba y lo que ocurre es que la deja tal cual... Me explico: dos fotos del mismo día, selecciono la primera y le aplico el script... bien. Selecciono luego la otra, le aplico el script (con el mismo asunto) y no le hace nada. :ejem:

Lo ideal sería que, al ver que ya hay un archivo con ese nombre, le asigne el siguiente según la numeración... :? Lo digo por si alguno está aburrido y quiere mirarlo... :)o
"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 #54 on: 05 sep 2011, 07:10 am »
... al script tal como está le veo un peligro. Si le corres el script a dos grupos de fotos del mismo día y mismo motivo fotográfico, el segundo grupo machacará a las fotos del primer grupo...
Acabo de hacer la prueba y lo que ocurre es que la deja tal cual... Me explico: dos fotos del mismo día, selecciono la primera y le aplico el script... bien. Selecciono luego la otra, le aplico el script (con el mismo asunto) y no le hace nada. :ejem:

El exiftool es lo bastante inteligente para no sobrescribir el archivo ya existente...

Cita
Lo ideal sería que, al ver que ya hay un archivo con ese nombre, le asigne el siguiente según la numeración... :? Lo digo por si alguno está aburrido y quiere mirarlo... :)o

No sería difícil contar los archivos que hay y numerar a partir de ahí. El problema es que hasta que exiftool no decide a que carpeta lo manda mirando la fecha del archivo no sabemos en que carpeta hay que contar. En resumen que lo bonito del script tal como estaba al principio es que exiftool hace todo en un paso, ver la fecha de la foto y crear la carpeta si es necesario y meter las fotos en ella. Tengo que estudiar mejor el exiftool a ver si se me escapa alguna posibilidad, de lo contrario es mejor replantearse el script desde el principio para que exiftool solo obtenga la fecha, y el resto lo hagamos con bash .

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...


Medyr

  • Palizas oficial
  • *
  • Mensajes: 5413
    • Apratizando
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #55 on: 05 sep 2011, 07:33 am »
Juuueeee, a este paso, no solo te va a ordenar las fotos, también te va a preparar la cena mientras y te va a dar un masaje en el cuello y otro en los pies  :o
"Es hora de que nos empecemos a tomar en serio la fotografía y la tratemos como una afición"
Elliott Erwitt

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #56 on: 05 sep 2011, 07:33 am »
El problema es que hasta que exiftool no decide a que carpeta lo manda mirando la fecha del archivo no sabemos en que carpeta hay que contar. En resumen que lo bonito del script tal como estaba al principio es que exiftool hace todo en un paso, ver la fecha de la foto y crear la carpeta si es necesario y meter las fotos en ella. Tengo que estudiar mejor el exiftool a ver si se me escapa alguna posibilidad, de lo contrario es mejor replantearse el script desde el principio para que exiftool solo obtenga la fecha, y el resto lo hagamos con bash .

Pues creo que se me escapaba. Podemos usar %1.4C en el nombre para darle un numero secuencial de cuatro cifras comenzando en 1 y creo que funcionaría. Prueba a ponerle %1.4C en donde poníamos $solonombre a ver si funciona.
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...


invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #57 on: 05 sep 2011, 11:47 am »
Pues creo que se me escapaba. Podemos usar %1.4C en el nombre para darle un numero secuencial de cuatro cifras comenzando en 1 y creo que funcionaría. Prueba a ponerle %1.4C en donde poníamos $solonombre a ver si funciona.

En cuanto tenga un rato lo pruebo... ahora voy apurado...
Muchísimas gracias. q:)
"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 #58 on: 08 sep 2011, 16:28 pm »
Código: [Seleccionar]
#! /bin/sh
#
#  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="/home/redy/Imágenes/Archivo"
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 -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]'\
        -Copyright='Copyleft :) cc-by-sa Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en http://creativecommons.org/licenses/by-sa/3.0/es/' \
        '-Filename<'"$DIR/"'${DateTimeOriginal}'"${VAR:+_$VAR}"'%+.4c.%le' \
        -d "%Y/%m/%Y%m%d" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done


Lo he clarificado un poco poniendo el el -d solo lo que es formato de fecha y en el -filename todo lo demás. Ojo a la sucesión de comillas porque hay variables que serán procesadas por bash y esas van entre comillas dobles y otras que seran procesadas por exiftool y esas van entre comillas simples.

La línea '-Filename<'"$DIR/"'${DateTimeOriginal}'"${VAR:+_$VAR}"'%+.4c.%le' \ significa que meta todo en el directorio $DIR definido al principio, seguido del formato de fecha, que como lleva barras creará carpetas para año y mes, y dentro de estaas un nombre de fichero con año, mes y día concatenados, Luego el nombre de lo que se ha tecleado en la caja de la pregunta (prefijado con un _ a no ser que esté vacío). Y al final un número secuencial  de cuatro cifras que comienza en _0000 (%+.4c) y la extensión en minúscula (.%le). El número solo se incrementa si existe un archivo igual, esto quiere decir que los archivos con distintas extensiones si han sido procesados juntos tendrán el mismo número, y por tanto geeqie los seguirá agrupando.

(Si intento que empiece en 1 con %+4c sin el punto me crea un archivo sin número y el resto comenzando en 0001) :-(
« Última Modificación: 08 sep 2011, 16:51 pm 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...


tomas.senabre

  • Papá del Mes
  • Trimilenari@
  • *
  • Mensajes: 3370
    • La Mirada Hecha Pedazos
Re: Script para ordenar las fotos en carpetas usando exiftool
« Respuesta #59 on: 05 oct 2011, 19:13 pm »
Joer como avanza este script. Sólo una pregunta ¿porqué os cargáis la numeración que le pone la cámara?. Se puede mantener este nombre y a continuación poner el nombre del trabajo, te evitas el contador ¿no?.

Un beso guapos y guapas, cuanto tiempo...
"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