Takeout JSON
IT

Unire i metadati JSON di Google Takeout alle foto

Passo per passo, come scrivere la data e il GPS dei file .json di Google Takeout dentro le foto, con exiftool oppure con un'app per computer.

Hai una cartella di foto e, accanto a ognuna, un file .json con la data e il luogo veri. Le foto però mostrano la data sbagliata. Vuoi che le informazioni del .json finiscano dentro la foto, così puoi buttare i sidecar e tenere una normale cartella di immagini.

È un problema risolto. Ecco come farlo a mano, e come farlo con un clic.

Cosa vuol dire "unire"

Un JPEG, un HEIC o un PNG ha un blocco di metadati chiamato EXIF. Le fotocamere ci scrivono la data di scatto, nel campo DateTimeOriginal, e le coordinate GPS nei campi GPSLatitude e GPSLongitude. Le app di foto di qualsiasi sistema leggono quei campi.

Il sidecar di Takeout contiene le stesse informazioni in un contenitore diverso. Unire vuol dire leggere photoTakenTime e geoData dal sidecar e scriverli nei campi EXIF. Già che ci sei, imposti anche la data di creazione e di modifica del file, così il Finder ed Esplora file ordinano bene anche nelle viste che ignorano l'EXIF.

I video non hanno EXIF. La loro data sta dentro il contenitore MP4 o MOV, in campi come CreateDate. Stessa idea, nomi diversi.

Passo 1: estrai tutto nello stesso posto

Takeout divide le esportazioni grandi in più zip. Estraili tutti nella stessa cartella principale, così le cartelle degli album si uniscono. Se un album sta su due zip, metà delle foto e metà dei sidecar possono essere in ognuno: devono finire uno accanto all'altro. Se hai tanti zip, leggi Google Takeout in tanti file zip.

Passo 2: capisci come una foto trova il suo sidecar

Il nome del sidecar è il nome della foto più un suffisso. IMG_0042.JPG va con IMG_0042.JPG.supplemental-metadata.json nelle esportazioni dal 2024 in poi, oppure con IMG_0042.JPG.json in quelle più vecchie. Due cose rompono la regola semplice. I nomi più lunghi di 46 caratteri vengono tagliati, quindi il suffisso è troncato. Le foto duplicate hanno il contatore in un posto diverso: IMG_0042(1).JPG va con IMG_0042.JPG.supplemental-metadata(1).json. Qualsiasi strumento usi deve gestire tutti e due i casi, altrimenti salta quei file senza dirtelo.

Passo 3: unisci con exiftool

exiftool è gratuito e funziona su ogni sistema. Installalo, apri un terminale nella cartella Google Foto (o Google Photos) e lancia:

exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
  "-DateTimeOriginal<PhotoTakenTimeTimestamp" \
  "-CreateDate<PhotoTakenTimeTimestamp" \
  "-FileCreateDate<PhotoTakenTimeTimestamp" \
  "-FileModifyDate<PhotoTakenTimeTimestamp" \
  "-GPSLatitude<GeoDataLatitude" "-GPSLatitudeRef<GeoDataLatitude" \
  "-GPSLongitude<GeoDataLongitude" "-GPSLongitudeRef<GeoDataLongitude" \
  -ext jpg -ext jpeg -ext heic -ext png -overwrite_original .

Cosa fa: per ogni immagine cerca nella stessa cartella un file con lo stesso nome più .supplemental-metadata.json e copia i campi elencati. -d %s dice a exiftool che il timestamp è in secondi dal 1970. -overwrite_original evita che lasci una copia di backup di ogni file.

Lancialo una seconda volta con "%d/%F.json" per i sidecar vecchio stile. Poi ancora una volta per i video:

exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
  "-CreateDate<PhotoTakenTimeTimestamp" "-ModifyDate<PhotoTakenTimeTimestamp" \
  "-TrackCreateDate<PhotoTakenTimeTimestamp" "-MediaCreateDate<PhotoTakenTimeTimestamp" \
  "-FileModifyDate<PhotoTakenTimeTimestamp" \
  -ext mp4 -ext mov -overwrite_original .

Una guida più lunga, con tutti i casi, è in correggere le date di Google Takeout con exiftool.

Passo 4: sistema quello che exiftool ha saltato

Conta cosa è rimasto senza data:

exiftool -r -if 'not $DateTimeOriginal' -ext jpg -ext heic -ext png -filename .

Nella lista trovi i nomi troncati, i duplicati con (1) e le foto che un sidecar non l'hanno mai avuto. Quelli troncati li prendi con un piccolo script che cerca il .json il cui nome è l'inizio di quello atteso. I duplicati vanno rinominati prima che lo schema funzioni. È questa la parte che trasforma un lavoro da dieci minuti in una serata, ed è il motivo per cui esistono script della community come GooglePhotosTakeoutHelper. Sono gratuiti e fanno l'abbinamento al posto tuo, da terminale.

Un'ultima trappola: le righe GPS qui sopra scrivono tranquillamente 0.0, 0.0 nelle foto il cui sidecar dice "posizione sconosciuta". Aggiungi -if '$GeoDataLatitude ne 0', oppure accetta un gruppo di foto in mezzo all'Atlantico.

Passo 5: oppure l'app

Takeout JSON Metadata Fixer fa i passi da 1 a 4 in un solo passaggio, su macOS, Windows e Linux.

Scegli gli zip di Takeout o la cartella già estratta. L'app abbina ogni foto e ogni video al suo sidecar provando tutti gli schemi di nome che Google ha usato, compreso il taglio a 46 caratteri e il contatore (1). Scrive la data nell'EXIF delle immagini e nel contenitore dei video, imposta le date dei file e scrive il GPS solo quando le coordinate sono vere. Le foto senza sidecar tengono la loro data EXIF, oppure la data del file se l'EXIF non c'è.

Puoi fermarti lì, tenendo i nomi e le cartelle come sono, e riavere la stessa cartella con i metadati corretti. Oppure puoi farle rinominare i file per data e ordinarli in cartelle per anno e mese nello stesso momento. Una prova a vuoto mostra il piano prima di scrivere qualsiasi cosa. Le prime 1000 foto sono gratuite; la versione illimitata costa 19,99 $ una volta sola (49,99 $ per cinque computer). Non viene caricato niente da nessuna parte.

Passo 6: controlla, poi elimina i sidecar

Apri nella tua app di foto qualche immagine di anni diversi e controlla le date. Poi elimina i file .json. Su Mac o Linux: find . -name "*.json" -delete dall'interno della cartella. Su Windows, cerca *.json nella cartella, seleziona tutto ed elimina. Tieni gli zip originali da qualche parte per un mese, nel caso ti accorga di un problema. Più dettagli in si possono eliminare i file JSON di Google Takeout?.

Domande frequenti

Unire i metadati peggiora la qualità delle foto?

No. Viene riscritto solo il blocco dei metadati. I dati compressi dell'immagine vengono copiati byte per byte.

E se una foto ha già una data EXIF diversa da quella del sidecar?

Il sidecar riflette quello che Google Foto ti mostrava, comprese le correzioni che hai fatto tu. Nella maggior parte dei casi è quella che vuoi. Se non hai mai cambiato date in Google Foto, le due coincidono comunque.

Perché l'ora esce spostata di qualche ora?

Il timestamp del sidecar è in UTC. L'EXIF non ha un fuso orario, quindi gli strumenti convertono nel fuso del tuo computer. Imposta il computer sul fuso in cui sono state scattate le foto, oppure accetta la differenza. Il perché è spiegato in foto con l'ora sbagliata di qualche ora.

Posso unire solo la data e saltare il GPS?

Sì. Togli le righe GPS dal comando di exiftool. Nell'app il GPS viene scritto quando c'è; se non vuoi il luogo nei nomi dei file, scegli uno schema di nome senza.