Foto
Come unire i file JSON di Google Takeout alle foto (e correggere le date sbagliate)
Google Takeout salva le date delle tue foto in file JSON separati. Quattro strumenti gratuiti le rimettono nelle foto: cosa corregge ciascuno, i comandi esatti e come controllare il risultato.
Disponibile anche in: العربيةবাংলাDeutschespañolfrançaisગુજરાતીहिन्दीIndonesia日本語ಕನ್ನಡ한국어EnglishमराठीpolskiportuguêsрусскийKiswahiliதமிழ்తెలుగుไทยTürkçeукраїнськаاردوTiếng Việt中文
Hai scaricato la tua libreria di Google Foto con Google Takeout. Ora hai migliaia di foto accanto a migliaia di file .json, e il visualizzatore dice che una foto del 2019 è stata scattata ieri. Per sistemare tutto devi unire ogni file JSON alla sua foto. Uno strumento legge la data di scatto dal file JSON e la scrive nella foto, così ogni app torna a mostrare la data giusta.
Questa guida spiega perché esistono i file JSON, perché a volte l'unione non riesce e come la eseguono quattro strumenti gratuiti. Troverai il comando esatto per ciascuno, quale data cambia ognuno e un modo per controllare il risultato prima di cancellare qualsiasi cosa.
Perché le tue foto arrivano con i file JSON
Per ogni foto, Takeout ti dà due file: l'immagine, per esempio IMG_1234.jpg, e un file JSON con la data originale, le coordinate GPS, la descrizione e gli album di cui fa parte. Una guida all'esportazione descrive la tipica prima impressione: una foto del 2019 mostrava come data "ieri", senza posizione e senza album, anche se non era andato perso nulla. Le informazioni erano nel file JSON (PixelUnion). Illinois Tech dà la stessa spiegazione del perché un'esportazione contiene più file di quante immagini abbia la tua libreria (Illinois Tech).
Il file della foto può non coincidere con il file JSON. L'autore di google-photos-exif ha notato che se cambi una data dentro Google Foto, i metadati dentro l'immagine non vengono aggiornati: la nuova data si trova solo nel file JSON. Alcune immagini, spesso quelle che altri hanno condiviso con te, non contengono alcuna data (google-photos-exif). Il README di gphotos-takeout-repair mostra l'altra metà del problema: in un'esportazione estratta, la foto, la sua versione modificata e il file JSON mostrano tutti come data di creazione la data dell'esportazione Takeout (gphotos-takeout-repair).
Quindi un'app che legge solo il file della foto non vede nessuna data, oppure vede il giorno in cui hai esportato. La data giusta è nel file JSON, e l'unione la rimette al suo posto.
Tre cose che fanno fallire l'unione
Ogni strumento di unione deve trovare il file JSON giusto per ogni foto. Tre particolarità di Takeout rendono la cosa più difficile.
- Una foto e il suo file JSON possono trovarsi in zip diversi. Le FAQ sulla migrazione di Ente fanno l'esempio di
flower.jpegin uno zip eflower.jsonin un altro, il che impedisce di abbinarli (Ente). Il README di Porte elenca lo stesso caso come limite noto: non trova i file di metadati che stanno in un archivio diverso da quello della loro immagine (Porte). - I nomi dei file JSON non sono coerenti. Per
IMG123.jpgpuoi ricevereIMG123.jpg.jsonoppure soloIMG123.json, e alcune cartelle contengono file JSON senza un'immagine corrispondente (google-photos-exif). - Le foto modificate escono due volte. Takeout esporta l'originale e la copia modificata come file separati con hash diversi, quindi un cercatore di duplicati che confronta gli hash non li segnala (Ente). Il file modificato ha il suffisso
-edited, comeIMG_0001-edited.jpgaccanto aIMG_0001.jpg(gphotos-takeout-repair).
La soluzione al primo punto è la stessa per tutti gli strumenti: scarica tutti gli zip, poi estraili tutti in un'unica cartella principale lasciando le sottocartelle come sono (Ente). Se due zip contengono una cartella con lo stesso nome, unisci il contenuto delle cartelle invece di sostituire l'una con l'altra (google-photos-exif).
Un consiglio di Illinois Tech per il download: tieni la finestra di Takeout in primo piano. Se la riduci a icona o lavori in un'altra finestra, i download falliscono dopo 15 minuti perché Google ti chiede di accedere di nuovo (Illinois Tech).
Quattro strumenti gratuiti e la data che corregge ciascuno
Una foto ha due tipi di data. La data EXIF (DateTimeOriginal) è salvata dentro l'immagine e la segue in qualsiasi app o servizio. La data del file (di modifica o di creazione) appartiene al file system. È facile perderla: il README di gpth avverte che spostare i file su un telefono Android di solito la azzera (gpth). Prima di scegliere uno strumento, controlla quale delle due scrive.
In tutti i comandi qui sotto, la prima cartella è il tuo Takeout estratto e la seconda è una cartella di output nuova e vuota.
Porte: scrive data e posizione dentro la foto
Porte copia data e ora e la geolocalizzazione dal file JSON corrispondente nei dati EXIF dell'immagine, senza ricomprimerla. Se non trova una data, prova con il nome del file, e usa la data più vecchia che trova, così una data di modifica del file non viene scambiata per la data di scatto. Copia i file nella cartella di output invece di modificarli sul posto, mette i file non riusciti in una cartella a parte e salva un log. Non conserva i dati degli album. Puoi scaricare un programma già pronto dalla pagina delle release del progetto (Porte):
porte srcpath destpath
google-photos-exif: completa una data EXIF mancante
Questo strumento Node.js legge photoTakenTime da ogni file JSON. Imposta la data di modifica del file e compila DateTimeOriginal solo quando la foto non ce l'ha già. I file che non riesce a elaborare finiscono in una cartella degli errori (google-photos-exif). L'autore di PixelUnion lo ha usato e riferisce che ha elaborato l'intera libreria in circa venti minuti (PixelUnion).
yarn start --inputDir ~/takeout --outputDir ~/output --errorDir ~/error
gpth: ordina in un'unica cartella o per mese, poi imposta la data del file
Google Photos Takeout Helper è interattivo: lo avvii e rispondi alle sue domande. Raccoglie tutte le foto in un'unica cartella, oppure in cartelle per mese con l'opzione --divide-to-dates, e imposta la data di ultima modifica del file. Riscrivere i dati del JSON nell'EXIF è ancora nella sua lista delle cose da fare, quindi il README fornisce un comando exiftool aggiuntivo che copia la data del file nelle date EXIF delle foto che non ne hanno. Esegui quel comando prima di toccare di nuovo i file. Nota che gpth sposta i file per impostazione predefinita, quindi conserva gli zip originali (gpth).
exiftool -overwrite_original -r -if 'not defined DateTimeOriginal' -P "-AllDates<FileModifyDate" "your/output/folder/ALL_PHOTOS/"
gphotos-takeout-repair: elimina i file JSON e i duplicati modificati
Questo strumento copia le tue foto in una nuova cartella, mantiene la struttura delle cartelle e imposta la data di creazione di ogni file in base a photoTakenTime nel file JSON. Quando esiste una copia -edited, tiene quella versione (di solito la migliore) e scarta l'originale, così l'output non contiene né file JSON né duplicati modificati (gphotos-takeout-repair). Installalo con npm install -g gphotos-takeout-repair, poi:
gphotos-takeout-repair --src ./unzipped-takeout-dir --dest ./output-dir
Se vuoi la data dentro l'immagine per ogni foto, Porte la scrive direttamente. Con gli altri tre, controlla poi la data EXIF come mostrato qui sotto.
Controlla che le date siano davvero dentro le foto
Non fidarti della colonna "data di modifica" del file manager. Controlla i metadati veri e propri.
- Senza software aggiuntivo: fai clic destro su una foto e scegli Ottieni informazioni su Mac o Proprietà su Windows. Dopo un'unione riuscita dovresti vedere la data di scatto giusta, le coordinate GPS se la foto le aveva e il modello della fotocamera quando disponibile (PixelUnion).
- Per un'intera cartella: ExifTool può stampare il tag
DateTimeOriginaldi ogni JPG di una cartella. Questa riga si basa su un esempio della sua documentazione (ExifTool):
exiftool -DateTimeOriginal -S -s -ext jpg .
Una riga vuota o una data della settimana dell'esportazione significa che quella foto non è stata unita. Guarda allora la cartella degli errori o dei falliti dello strumento e controlla se il file JSON corrispondente veniva da un altro zip.
- Confronta i conteggi. La cartella di output più la cartella degli errori dovrebbero contenere più o meno tante foto e video quanti il Takeout estratto, meno i duplicati modificati se il tuo strumento li elimina.
Un'alternativa con un clic
Se non vuoi usare la riga di comando, un'app desktop può fare lo stesso lavoro. PHOTOK è un prodotto di Pacix Labs. Secondo la sua pagina, legge i file .json che Google sparpaglia ovunque e rimette al loro posto le date e i luoghi reali, poi ordina le foto in cartelle Anno / Mese / Luogo e mette da parte i duplicati identici. Funziona su Windows 10 e 11 e sui Mac con chip Apple, lavora senza caricare nulla online e non cancella mai i file. L'anteprima è gratuita e la versione completa costa 49 € una tantum (PHOTOK).
Qualunque strada scegli, gli strumenti gratuiti qui sopra o un'app, valgono le stesse regole: lavora su una copia, controlla un campione e conserva gli zip.
Checklist
- Scarica tutti gli zip e tienine una copia su un secondo disco.
- Estrai tutti gli zip in un'unica cartella principale, mantieni le sottocartelle e unisci le cartelle con lo stesso nome.
- Scegli uno strumento e sappi quale data scrive: data EXIF, data del file o entrambe.
- Eseguilo su una copia, verso una nuova cartella di output.
- Controlla
DateTimeOriginalsu un campione di anni diversi e guarda nella cartella degli errori. - Decidi cosa fare delle copie
-edited. - Cancella i file JSON e gli zip solo dopo il controllo e un secondo backup.
Domande frequenti
Perché Google Takeout mi dà dei file JSON insieme alle foto?
Google salva la data di scatto, la posizione, la descrizione e le informazioni sugli album che conosce per ogni foto in un file .json separato, accanto alla foto. Il file della foto potrebbe non contenere le stesse informazioni, per esempio se hai cambiato la data dentro Google Foto.
Posso cancellare i file JSON?
Solo dopo che date e luoghi sono dentro le foto e hai controllato un campione. Prima di allora, il file JSON è l'unico posto in cui sono salvate la data e la posizione che Google conosce per quella foto.
Quale data corregge uno strumento di unione?
Dipende dallo strumento. Alcuni scrivono la data nei metadati EXIF della foto (DateTimeOriginal), che viaggiano con il file. Altri impostano solo la data di modifica o di creazione del file, che alcuni metodi di copia azzerano. Leggi il README dello strumento prima di scegliere.
Perché alcune foto sono ancora sbagliate dopo l'unione?
Di solito la foto e il suo file JSON erano in zip diversi e non sono mai stati rimessi insieme, oppure il file JSON ha un nome diverso da quello della foto. Estrai tutti gli zip in un'unica cartella, esegui di nuovo lo strumento su una copia nuova e guarda la cartella degli errori o dei falliti dello strumento.
Devo tenere i file zip originali?
Sì, finché la libreria unita non è stata controllata e non hai un altro backup. Alcuni strumenti spostano i file invece di copiarli, e gli zip sono il tuo unico modo per ricominciare da capo.
Fonti
- Ente: Google Photos migration FAQ (split zips, wrong dates, duplicates)
- PixelUnion: how to export your Google Photos library without losing the metadata
- Illinois Tech: use Google Takeout to export Google Photos
- google-photos-exif (GitHub README)
- Porte: fixing and organizing a Google Takeout photos export (GitHub README)
- Google Photos Takeout Helper, gpth (GitHub README)
- gphotos-takeout-repair 1.4.2 (README)
- ExifTool documentation