Takeout JSON
NL

Zo zet je de .json-metadata van Google Takeout in je foto's

Stap voor stap de datum en de GPS uit de .json-sidecarbestanden van Google Takeout in je fotobestanden schrijven, met exiftool of met een desktop-app.

Je hebt een map met foto's en naast elke foto een .json-bestand met de echte datum en plaats. De foto's zelf tonen de verkeerde datum. Je wilt dat de gegevens uit het .json-bestand in de foto worden geschreven, zodat je de sidecarbestanden kunt weggooien en een gewone map met foto's overhoudt.

Dit probleem is al opgelost. Hier lees je hoe je het met de hand doet, en hoe het met één klik gaat.

Wat "samenvoegen" eigenlijk betekent

Een JPEG, HEIC of PNG heeft een metadatablok dat EXIF heet. Camera's schrijven daar de opnamedatum in, in een tag die DateTimeOriginal heet, en de GPS-coördinaten in tags die GPSLatitude en GPSLongitude heten. Foto-apps op elk platform lezen die tags.

Het Takeout-sidecarbestand heeft dezelfde gegevens in een andere verpakking. Samenvoegen betekent: photoTakenTime en geoData uit het sidecarbestand lezen en in de EXIF-tags schrijven. Als je toch bezig bent, zet je ook de aanmaak- en wijzigingsdatum van het bestand goed, zodat Finder en Verkenner ook goed sorteren in weergaven die de EXIF negeren.

Video's hebben geen EXIF. Hun datum staat in de MP4- of MOV-container, in tags zoals CreateDate. Hetzelfde idee, andere namen voor de tags.

Stap 1: pak alles uit op één plek

Takeout splitst grote exports op in meerdere zips. Pak ze allemaal uit in dezelfde bovenliggende map, zodat de albummappen samenvallen. Verspreidt een album zich over twee zips, dan kan de helft van de foto's en de helft van de sidecarbestanden in elke zip zitten; ze moeten naast elkaar terechtkomen. Zie meerdere zip-bestanden van Google Takeout als je er veel hebt.

Stap 2: begrijp hoe een foto zijn sidecarbestand vindt

De naam van het sidecarbestand is de naam van de foto plus een achtervoegsel. IMG_0042.JPG hoort bij IMG_0042.JPG.supplemental-metadata.json in exports vanaf 2024, of bij IMG_0042.JPG.json in oudere. Twee dingen breken die eenvoudige regel. Namen van meer dan 46 tekens worden ingekort, dus het achtervoegsel wordt afgekapt. Bij dubbele foto's staat het volgnummer op een andere plek: IMG_0042(1).JPG hoort bij IMG_0042.JPG.supplemental-metadata(1).json. Elk programma dat je gebruikt, moet met allebei overweg kunnen, anders slaat het die bestanden stilletjes over. supplemental-metadata.json uitgelegd laat van allebei echte voorbeelden zien.

Stap 3: samenvoegen met exiftool

exiftool is gratis en werkt op elk platform. Installeer het, open een terminal in de map Google Photos en voer uit:

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 .

Wat het doet: bij elke afbeelding zoekt het in dezelfde map naar een bestand met dezelfde naam plus .supplemental-metadata.json, en kopieert het de genoemde velden over. -d %s vertelt exiftool dat de timestamp in seconden sinds 1970 staat. -overwrite_original zorgt dat het niet van elk bestand een reservekopie achterlaat.

Voer het een tweede keer uit met "%d/%F.json" voor sidecarbestanden in de oude stijl. Voer het daarna nog een keer uit voor video's:

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 .

Stap 4: pak aan wat exiftool heeft gemist

Tel wat er over is:

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

In de lijst staan de afgekapte namen, de duplicaten met (1) en foto's die nooit een sidecarbestand hadden. De afgekapte namen vang je met een kort script dat het .json-bestand zoekt waarvan de naam het begin is van de verwachte naam. De duplicaten moet je eerst hernoemen voordat het patroon werkt. Dit is het deel dat van een klus van tien minuten een hele avond maakt, en daarom bestaan er scripts uit de community zoals GooglePhotosTakeoutHelper. Die zijn gratis en doen het koppelen voor je, in een terminal.

Nog een addertje: de GPS-regels hierboven schrijven zonder morren 0.0, 0.0 in foto's waarvan het sidecarbestand "plaats onbekend" zegt. Voeg -if '$GeoDataLatitude ne 0' toe, of accepteer een groepje foto's midden in de Atlantische Oceaan.

Stap 5: of gebruik de app

Takeout JSON Metadata Fixer doet stap 1 tot en met 4 in één keer, op macOS, Windows en Linux.

Kies de Takeout-zips of de uitgepakte map. De app koppelt elke foto en video aan zijn sidecarbestand door elke naamgeving te proberen die Google heeft gebruikt, ook de afkapping op 46 tekens en het volgnummer (1). Hij schrijft de datum in de EXIF bij afbeeldingen en in de container bij video's, zet de bestandsdatums goed en schrijft de GPS alleen als de coördinaten echt zijn. Foto's zonder sidecarbestand houden hun eigen EXIF-datum, of de bestandsdatum als er geen EXIF-datum is.

Je kunt daar stoppen, met "Namen houden" en "Mijn mappen houden", en krijgt dan dezelfde map terug met de juiste metadata. Of je laat de app tegelijk de bestanden op datum hernoemen en in mappen per jaar en maand ordenen. Een proefrun laat het plan zien voordat er iets wordt geschreven. De gratis versie werkt voor 1000 foto's; onbeperkt kost eenmalig $ 19,99. Er wordt nergens iets geüpload.

Stap 6: controleer, en verwijder dan de sidecarbestanden

Open een paar foto's uit verschillende jaren in je foto-app en controleer de datums. Verwijder daarna de .json-bestanden. Op een Mac of Linux: find . -name "*.json" -delete vanuit de map. Op Windows zoek je in de map naar *.json, selecteer je alles en verwijder je het. Bewaar de originele zips nog een maand ergens, voor het geval je een probleem ontdekt.

Veelgestelde vragen

Verandert samenvoegen de kwaliteit van de foto?

Nee. Alleen het metadatablok wordt opnieuw geschreven. De gecomprimeerde pixelgegevens worden byte voor byte gekopieerd.

Wat als een foto al een EXIF-datum heeft die afwijkt van het sidecarbestand?

Het sidecarbestand laat zien wat Google Foto's je toonde, met elke verbetering die je zelf hebt gedaan. Meestal is dat de datum die je wilt. Heb je nooit datums aangepast in Google Foto's, dan zijn de twee toch gelijk.

Waarom zit de tijd er een paar uur naast?

De timestamp in het sidecarbestand is UTC. EXIF heeft geen tijdzone, dus programma's zetten hem om naar de lokale tijdzone van je computer. Zet je computer op de tijdzone waarin de foto's zijn gemaakt, of accepteer het verschil.

Kan ik alleen de datum samenvoegen en de GPS overslaan?

Ja. Haal de GPS-regels uit de opdracht voor exiftool. De app schrijft de GPS als die er is; wil je de plaats niet in de bestandsnamen, kies dan een naamsjabloon zonder plaats.