Obtener datos de archivos exif en NGINX

Obtener datos de archivos exif en NGINX

En el siguiente código estoy configurando algunas variables con información sobre la imagen (como el título, URL, etc.)

location /photo {
    ssi on;
    ssi_last_modified on;
    set $photosrc /photos/$request_basename;
    set $phototitle $request_basename;
    ...
}

Me gustaría mostrar la fecha de creación de la foto en la página. Lo ideal sería que estuviera en otra variable…:

   ...
   set $photodate $???;
   ...

pero AFAICT no hay ninguna variable en NGINX que contenga la última fecha de modificación. Revisé el índice de variables pero no pude encontrar nada. Nginx agrega automáticamente la fecha de modificación al Last-Modifiedencabezado, por lo que debería ser capaz de hacerlo. También intenté usarlo ssi_last_modified, pero según algunas respuestas no funcionará porque NGINX nunca implementó SSI completo.

Respuesta1

La hora de modificación del archivo NO es la misma que la fecha de creación de la foto.

Si bien sería sencillo forzar que mtime coincida con los datos EXIF ​​y usarlos como proxy para los datos que realmente desea informar, existen potencialmente otros datos que pueden incrustarse en el archivo y que podrían ser útiles. Esto suena como el problema XY.

Suponiendo que aún no tiene ninguna capacidad de servidor de aplicaciones en el host, agregarla solo para resolver este problema parece excesivo (y abre la puerta a muchas complicaciones de endurecimiento). Entonces, si fuera yo, simplemente escribiría un rastreador para volcar los datos en un formato legible por máquina dentro de la raíz del documento, por ejemplo.

#!/bin/bash

if [ ! -f /var/run/lastexif ] ; then
   touch -t 198012250200 /var/run/lastexif
fi
mv -f /var/run/lastexif /var/run/lastexif.old
touch /var/run/lastexif
find /var/www/html/photo -type f -newer /var/run/lastexif.old | dump_exif_data

¿Dónde dump_exif_datahay algo como...?

#!/bin/bash

while read fname
do
  if [ -n "$fname" -a -f "$fname" ] ; then
     exiftool "$fname" | tr -s ' ' > "${fname}.exif"
  fi
done

Espolvoree un poco de magia ajax en sus páginas, agregue un trabajo cron (o trabajo incron) para ejecutar el script y listo.

información relacionada