À quoi servent les fichiers JSON de Google Takeout ?
Ce que contient le fichier .json placé à côté de chaque photo dans un export Google Takeout, pourquoi il est là et si vous pouvez le supprimer sans risque.
Vous avez décompressé votre export Google Photos et la moitié des fichiers ne sont pas des photos. À côté de chaque image se trouve un fichier .json avec un nom comme IMG_3391.HEIC.supplemental-metadata.json. Vous ne les avez pas demandés, presque aucun programme ne les ouvre, et il y en a des milliers.
Ce ne sont pas des déchets. Ils contiennent les dates et les lieux que Google n'a pas écrits dans vos images.
Pourquoi Google les ajoute
Google Photos stocke ce qu'il sait d'une photo dans sa propre base de données : quand elle a été prise, où, dans quel album elle se trouve, si vous l'avez mise en favori, et toute date ou tout lieu que vous avez corrigés à la main. Le fichier image lui-même peut porter ou non ces informations dans son bloc EXIF. Les captures d'écran et les images de messagerie n'en ont généralement pas. Les modifications faites dans Google Photos n'y sont jamais.
Quand vous exportez, Google vous rend le fichier image plus ou moins tel qu'il a été envoyé. Il ne réécrit pas sa base de données dans chaque fichier. Il déverse l'entrée de la base dans un petit fichier texte à côté de l'image. Ce fichier texte est ce qu'on appelle un « sidecar », et JSON est simplement le format dans lequel il est écrit.
Ce qu'il y a dedans
Ouvrez-en un avec le Bloc-notes, TextEdit ou n'importe quel éditeur. Un fichier typique ressemble à ceci, un peu raccourci :
{
"title": "IMG_3391.HEIC",
"description": "",
"imageViews": "12",
"creationTime": {
"timestamp": "1690120442",
"formatted": "Jul 23, 2023, 2:34:02 PM UTC"
},
"photoTakenTime": {
"timestamp": "1689929130",
"formatted": "Jul 21, 2023, 9:25:30 AM UTC"
},
"geoData": {
"latitude": 48.8583,
"longitude": 2.2945,
"altitude": 35.0,
"latitudeSpan": 0.0,
"longitudeSpan": 0.0
},
"geoDataExif": {
"latitude": 48.8583,
"longitude": 2.2945,
"altitude": 35.0
},
"url": "https://photos.google.com/photo/...",
"googlePhotosOrigin": {
"mobileUpload": {
"deviceType": "IOS_PHONE"
}
}
}
Les champs qui comptent :
photoTakenTime est la date de prise de vue, telle que Google Photos l'affichait. Le timestamp est un nombre de secondes depuis le 1er janvier 1970, en UTC. Si vous avez corrigé une date dans Google Photos, ce champ contient votre correction. C'est celui-ci qu'il faut utiliser.
creationTime est la date d'envoi du fichier vers Google. Pour une photo prise et sauvegardée le même jour, les deux coïncident. Pour le scan d'un tirage de 1985 envoyé en 2021, des décennies les séparent.
geoData est le lieu tel que Google Photos le connaissait, y compris un lieu réglé à la main. geoDataExif est le lieu qui se trouvait dans l'EXIF du fichier au moment de l'envoi. Quand une photo n'a pas de lieu, les deux contiennent des zéros : 0.0, 0.0, un point dans l'océan Atlantique. Traitez ces zéros comme « inconnu », pas comme un vrai lieu. Plus de détails dans retrouver la localisation GPS après Takeout.
description est la légende que vous avez saisie, s'il y en a une. people liste les noms des personnes identifiées, quand il est présent. favorited vaut true pour les favoris. title est le nom de fichier d'origine, ce qui est utile parce que Takeout raccourcit parfois le nom réel du fichier.
Les fichiers d'album
Chaque dossier d'album contient aussi un metadata.json qui décrit l'album, pas une photo. Il contient le titre de l'album, parfois une date et un indicateur d'album partagé. Il est petit et inoffensif. Les outils qui importent des albums, comme immich-go, le lisent.
Pourquoi leurs noms sont bizarres
Les anciens exports nommaient le fichier IMG_3391.HEIC.json. Depuis 2024, le nom est devenu IMG_3391.HEIC.supplemental-metadata.json. Google coupe aussi les noms trop longs à 46 caractères, si bien qu'une photo de Pixel se retrouve avec un compagnon nommé PXL_20230721_092530123.jpg.supplemental-m.json. Quand deux photos portent le même nom, le compteur se place à un autre endroit dans le JSON : IMG_3391(1).HEIC va avec IMG_3391.HEIC.supplemental-metadata(1).json. Tout cela est expliqué dans supplemental-metadata.json expliqué.
Peut-on les supprimer ?
Oui, mais seulement après les avoir utilisés. Si vous supprimez les JSON d'abord, les dates et les lieux qu'ils contiennent disparaissent. Vos photos afficheront la date du téléchargement pour toujours, et il n'y a aucun moyen de récupérer l'information, sauf relancer un export Takeout.
Si toutes vos photos ont déjà un bon EXIF, les JSON n'apportent presque rien. Vous pouvez vérifier avec exiftool : exiftool -r -if 'not $DateTimeOriginal' -filename . affiche chaque photo sans date EXIF. Si la liste est vide, supprimez sans crainte.
Pour la plupart des bibliothèques, la liste n'est pas vide. L'ordre sûr est : fusionner les données JSON dans les photos, en vérifier quelques-unes, puis supprimer les .json. Immich, PhotoPrism et certains autres outils auto-hébergés lisent directement les JSON de Takeout pendant l'import ; si c'est votre destination, gardez-les jusqu'à la fin de l'import.
Remettre les données dans les photos
Vous pouvez le faire avec exiftool, qui lit le JSON et écrit les balises EXIF. La commande et ses pièges sont dans le guide exiftool. Des scripts gratuits comme GooglePhotosTakeoutHelper reprennent la même idée.
Takeout JSON Metadata Fixer le fait dans une application de bureau, sur Windows, Mac et Linux.
Elle lit chaque JSON, écrit photoTakenTime dans l'EXIF de la photo, règle les dates du fichier en conséquence, et écrit les coordonnées GPS quand elles sont réelles et non des zéros. Elle connaît les deux styles de nommage, les noms tronqués et les compteurs (1), donc elle ne saute pas les fichiers qu'un motif de nom de fichier raterait. En option, elle renomme et classe les photos dans des dossiers, et elle peut écrire de nouveaux fichiers .json à côté du résultat pour Immich ou PhotoPrism. Tout s'exécute sur votre ordinateur. Les 1000 premières photos sont gratuites.
Questions fréquentes
Y a-t-il un JSON par photo ?
En général. Les photos présentes dans plusieurs albums ont une copie du JSON dans chaque dossier d'album. Quelques photos n'ont aucun JSON, le plus souvent les clips de Live Photos et les fichiers de très anciens envois. Elles gardent la date contenue dans le fichier.
Google Photos peut-il les relire ?
Non. Si vous renvoyez le dossier vers Google Photos, il ignore les JSON et utilise l'EXIF des fichiers. C'est pour cela que les gens qui passent d'un compte Google à un autre perdent aussi leurs dates.
Les horodatages sont-ils dans mon fuseau horaire ?
Non. Ce sont des instants UTC. Un outil les convertit en heure locale au moment d'écrire l'EXIF, avec le fuseau de votre ordinateur. Vérifiez que votre ordinateur est réglé sur le fuseau où la plupart des photos ont été prises.
Les fichiers JSON prennent-ils beaucoup de place ?
Quelques centaines d'octets à quelques kilo-octets chacun. Dix mille fichiers font environ 10 Mo. Ce n'est pas la place qui justifie de les supprimer, c'est l'encombrement.