Pacix Labs

Fotos

Google Takeout: cómo corregir los metadatos JSON y las fechas de tus fotos

Google Takeout guarda las fechas de tus fotos en archivos JSON aparte. Cuatro herramientas gratuitas las vuelven a unir: qué corrige cada una, los comandos exactos y cómo comprobarlo.

· 8 min de lectura

También disponible en: العربيةবাংলাDeutschfrançaisગુજરાતીहिन्दीIndonesiaitaliano日本語ಕನ್ನಡ한국어EnglishमराठीpolskiportuguêsрусскийKiswahiliதமிழ்తెలుగుไทยTürkçeукраїнськаاردوTiếng Việt中文

Descargaste tu biblioteca de Google Fotos con Google Takeout. Ahora tienes miles de fotos junto a miles de archivos .json, y tu visor dice que una foto de 2019 se hizo ayer. Para arreglarlo hay que corregir los metadatos JSON de Google Takeout: fusionar cada archivo JSON con su foto. Una herramienta lee la fecha de captura del archivo JSON y la escribe en la foto, para que todas las aplicaciones vuelvan a mostrar la fecha correcta.

Esta guía explica por qué existen los archivos JSON, por qué la fusión a veces falla y cómo la hacen cuatro herramientas gratuitas. Tendrás el comando exacto de cada una, qué fecha cambia cada una y una forma de comprobar el resultado antes de borrar nada.

Por qué tus fotos vienen con archivos JSON

Por cada foto, Takeout te da dos archivos: la imagen, por ejemplo IMG_1234.jpg, y un archivo JSON con la fecha original, las coordenadas GPS, la descripción y los álbumes a los que pertenece. Una guía de exportación describe la primera impresión típica: una foto de 2019 aparecía con fecha de "ayer", sin ubicación y sin álbum, aunque no se había perdido nada. La información estaba en el archivo JSON (PixelUnion). Illinois Tech da la misma explicación de por qué una exportación tiene más archivos que fotos tu biblioteca (Illinois Tech).

El archivo de la foto puede no coincidir con el archivo JSON. El autor de google-photos-exif se dio cuenta de que, si cambias una fecha dentro de Google Fotos, los metadatos de la imagen no se actualizan: la nueva fecha solo está en el archivo JSON. Algunas imágenes, a menudo las que otros compartieron contigo, no tienen ninguna fecha dentro (google-photos-exif). El README de gphotos-takeout-repair muestra la otra mitad del problema: en una exportación descomprimida, la foto, su versión editada y el archivo JSON muestran todos la fecha de la exportación de Takeout como fecha de creación (gphotos-takeout-repair).

Así que una aplicación que solo lee el archivo de la foto no ve ninguna fecha o ve el día en que exportaste. La fecha correcta está en el archivo JSON, y la fusión la devuelve a su sitio.

Tres cosas que rompen la fusión

Toda herramienta de fusión tiene que encontrar el archivo JSON correcto para cada foto. Tres detalles de Takeout lo complican.

  1. Una foto y su archivo JSON pueden estar en zips distintos. Las preguntas frecuentes de migración de Ente ponen el ejemplo de flower.jpeg en un zip y flower.json en otro, lo que impide emparejarlos (Ente). El README de Porte recoge el mismo caso como limitación conocida: no encuentra los archivos de metadatos que están en un archivo comprimido distinto del de su imagen (Porte).
  2. Los nombres de los archivos JSON no son coherentes. Para IMG123.jpg puedes recibir IMG123.jpg.json o simplemente IMG123.json, y algunas carpetas contienen archivos JSON sin imagen correspondiente (google-photos-exif).
  3. Las fotos editadas salen dos veces. Takeout exporta el original y la copia editada como archivos separados con hashes distintos, así que un buscador de duplicados que compara hashes no los detecta (Ente). El archivo editado lleva el sufijo -edited, como IMG_0001-edited.jpg junto a IMG_0001.jpg (gphotos-takeout-repair).

La solución al primer punto es la misma para todas las herramientas: descarga todos los zips y luego extráelos todos en una misma carpeta principal, manteniendo las subcarpetas tal como están (Ente). Si dos zips contienen una carpeta con el mismo nombre, fusiona el contenido de las carpetas en lugar de sustituir una por otra (google-photos-exif).

Un consejo de Illinois Tech para la descarga: mantén la ventana de Takeout en primer plano. Si la minimizas o trabajas en otra ventana, las descargas fallan a los 15 minutos porque Google te pide que vuelvas a iniciar sesión (Illinois Tech).

Cuatro herramientas gratuitas para fusionar los JSON de Google Takeout y la fecha que corrige cada una

Una foto tiene dos tipos de fecha. La fecha EXIF (DateTimeOriginal) se guarda dentro de la imagen y viaja con ella a cualquier aplicación o servicio. La fecha del archivo (de modificación o de creación) pertenece al sistema de archivos. Es fácil perderla: el README de gpth advierte que mover archivos en un teléfono Android suele restablecerla (gpth). Antes de elegir una herramienta, comprueba cuál de las dos escribe.

En todos los comandos siguientes, la primera carpeta es tu Takeout extraído y la segunda es una carpeta de salida nueva y vacía.

Porte: escribe la fecha y la ubicación en la foto

Porte copia la marca de tiempo y la geolocalización del archivo JSON correspondiente a los datos EXIF de la imagen, sin volver a comprimirla. Si no encuentra fecha, prueba con el nombre del archivo, y usa la fecha más antigua que encuentra para que una fecha de modificación del archivo no se tome como fecha de captura. Copia los archivos a la carpeta de salida en lugar de modificarlos en su sitio, pone los archivos fallidos en una carpeta aparte y guarda un registro. No conserva los datos de álbumes. Puedes descargar un programa ya compilado desde la página de versiones del proyecto (Porte):

porte srcpath destpath

google-photos-exif: rellena la fecha EXIF que falta

Esta herramienta de Node.js lee photoTakenTime de cada archivo JSON. Cambia la fecha de modificación del archivo y rellena DateTimeOriginal solo cuando la foto todavía no la tiene. Los archivos que no puede procesar van a una carpeta de errores (google-photos-exif). El autor de PixelUnion la usó y cuenta que procesó toda la biblioteca en unos veinte minutos (PixelUnion).

yarn start --inputDir ~/takeout --outputDir ~/output --errorDir ~/error

gpth: ordena en una sola carpeta o por meses y luego cambia la fecha del archivo

Google Photos Takeout Helper es interactivo: lo ejecutas y respondes a sus preguntas. Reúne todas las fotos en una sola carpeta, o en carpetas por mes con la opción --divide-to-dates, y cambia la fecha de última modificación del archivo. Volver a escribir los datos del JSON en el EXIF sigue en su lista de pendientes, así que su README da un comando exiftool adicional que copia la fecha del archivo a las fechas EXIF de las fotos que no tienen ninguna. Ejecuta ese comando antes de volver a tocar los archivos. Ten en cuenta que gpth mueve los archivos por defecto, así que conserva tus zips originales (gpth).

exiftool -overwrite_original -r -if 'not defined DateTimeOriginal' -P "-AllDates<FileModifyDate" "your/output/folder/ALL_PHOTOS/"

gphotos-takeout-repair: elimina los archivos JSON y los duplicados editados

Esta herramienta copia tus fotos a una carpeta nueva, mantiene la estructura de carpetas y fija la fecha de creación de cada archivo a partir de photoTakenTime del archivo JSON. Cuando existe una copia -edited, conserva esa versión (normalmente la mejor) y descarta el original, de modo que la salida no tiene archivos JSON ni duplicados editados (gphotos-takeout-repair). Instálala con npm install -g gphotos-takeout-repair y después:

gphotos-takeout-repair --src ./unzipped-takeout-dir --dest ./output-dir

Si quieres la fecha dentro de la imagen en todas las fotos, Porte la escribe directamente. Con las otras tres, comprueba la fecha EXIF después, como se explica a continuación.

Comprueba que las fechas están de verdad en las fotos

No te fíes de la columna "fecha de modificación" del explorador de archivos. Comprueba los propios metadatos.

  1. Sin programas adicionales: haz clic derecho en una foto y elige Obtener información en un Mac o Propiedades en Windows. Tras una buena fusión deberías ver la fecha de captura correcta, las coordenadas GPS si la foto las tenía y el modelo de cámara cuando esté disponible (PixelUnion).
  2. Para una carpeta entera: ExifTool puede mostrar la etiqueta DateTimeOriginal de cada JPG de una carpeta. Esta línea se basa en un ejemplo de su documentación (ExifTool):
exiftool -DateTimeOriginal -S -s -ext jpg .

Una línea vacía o una fecha de la semana de tu exportación significa que esa foto no se fusionó. Entonces revisa la carpeta de errores o de fallos de la herramienta y comprueba si el archivo JSON correspondiente venía de otro zip.

  1. Compara los recuentos. La carpeta de salida más la carpeta de errores deberían contener aproximadamente tantas fotos y vídeos como el Takeout extraído, menos los duplicados editados si tu herramienta los elimina.

Una alternativa con un solo clic

Si no quieres usar la línea de comandos, una aplicación de escritorio puede hacer el mismo trabajo. PHOTOK es un producto de Pacix Labs. Según su página, lee los archivos .json que Google reparte por todas partes y devuelve a las fotos sus fechas y lugares reales; después las ordena en carpetas de Año / Mes / Lugar y aparta los duplicados exactos. Funciona en Windows 10 y 11 y en Mac con chip de Apple, no sube nada y nunca borra archivos. La vista previa es gratuita y la versión completa cuesta 49 € en un pago único (PHOTOK).

Elijas el camino que elijas, las herramientas gratuitas de arriba o una aplicación, las reglas son las mismas: trabaja sobre una copia, comprueba una muestra y conserva los zips.

Lista de comprobación

  • Descarga todos los zips y guarda una copia en un segundo disco.
  • Extrae todos los zips en una misma carpeta principal, mantén las subcarpetas y fusiona las carpetas con el mismo nombre.
  • Elige una herramienta y averigua qué fecha escribe: la fecha EXIF, la fecha del archivo o ambas.
  • Ejecútala sobre una copia, hacia una carpeta de salida nueva.
  • Comprueba DateTimeOriginal en una muestra de distintos años y revisa la carpeta de errores.
  • Decide qué hacer con las copias -edited.
  • Borra los archivos JSON y los zips solo después de la comprobación y de una segunda copia de seguridad.

Preguntas frecuentes

¿Por qué Google Takeout me da archivos JSON junto con mis fotos?

Google guarda la fecha de captura, la ubicación, la descripción y la información de álbumes que conoce de cada foto en un archivo .json aparte, junto a la foto. El archivo de la foto puede no contener la misma información, por ejemplo si cambiaste la fecha dentro de Google Fotos.

¿Puedo borrar los archivos JSON?

Solo cuando las fechas y los lugares ya estén dentro de las fotos y hayas comprobado una muestra. Hasta entonces, el archivo JSON es el único sitio donde se guardan la fecha y la ubicación que Google tiene de la foto.

¿Qué fecha corrige una herramienta de fusión?

Depende de la herramienta. Algunas escriben la fecha en los metadatos EXIF de la foto (DateTimeOriginal), que viajan con el archivo. Otras solo cambian la fecha de modificación o de creación del archivo, que algunos métodos de copia restablecen. Lee el README de la herramienta antes de elegir.

¿Por qué algunas fotos siguen mal después de la fusión?

Normalmente porque la foto y su archivo JSON estaban en zips distintos y nunca se volvieron a juntar, o porque el archivo JSON tiene un nombre diferente al de la foto. Extrae todos los zips en una sola carpeta, vuelve a ejecutar la herramienta sobre una copia nueva y revisa la carpeta de errores o de fallos de la herramienta.

¿Tengo que conservar los archivos zip originales?

Sí, hasta haber comprobado la biblioteca fusionada y tener otra copia de seguridad. Algunas herramientas mueven los archivos en lugar de copiarlos, y los zips son tu única forma de empezar de nuevo.

Fuentes