Merge Google Photos Takeout .json to .jpg
FYI: Google Photos is very much like Apple Photos because it wants to keep the edited metadata to itself and some workflows are needed to get it out together with the original lossless pixel data.
The original imported metadata is in the exported .jpg but if you have laboriously edited metadata inside Google Photos (dates, locations, captions, favorites) you'd want to include that info in the exported images so you can view it elsewhere like in Apple Photos (Photos does not currently support importing Ratings, though).
1. Google Takeout > make a desired selection and download it.
2. Then, if necessary, fix the names of any .json files that have copy numbers like (2) added. When downloading a file that has the same filename as another, Google adds a copy number to the files. In the case of the image, it would look like this:
DSC00041(2).JPG
but the .json suffix is put after the image suffix:
DSC00041.JPG(2).json
For exiftool to work, it needs to be:
DSC00041(2).JPG.json
In order to do this, run the command:
exiftool -ext json -r -if '$Filename=~/(\.[^.]+)(\(\d+\)).json$$/i' '-Filename<${Filename;s/(\.[^.]+)(\(\d+\)).json$/$2$1.json/}' .
https://exiftool.org/forum/index.php?topic=12882.msg69636#msg69636
3. The following exiftool command then merges all that edited metadata to the .jpg and as a icing on the cake it also sets the file creation & modification dates the same as EXIF date (that part of the command asks for Xcode Command Line Tools install which can be ignored but then the FileCreateDate moves only backwards in time (the install is quite small and fast, not the huge Xcode install):
exiftool -d %s -tagsfromfile '%d/%F.json' '-GPSLatitude*<${GeoDataLatitude;$_ = undef if $_ eq "0.0"}' '-GPSLongitude*<${GeoDataLongitude;$_ = undef if $_ eq "0.0"}' '-Caption-Abstract<Description' '-Description<Description' '-XMP-xmp:Rating<${Favorited;$_=5 if $_=~/true/i}' '-AllDates<PhotoTakenTimeTimestamp' -execute '-FileCreateDate<ExifIFD:DateTimeOriginal' '-FileModifyDate<ExifIFD:DateTimeOriginal' -common_args -overwrite_original_in_place -ext jpg .
You might want to do the same also to movies but movie metadata is currently such a nonstandard mess and a moving target that it might better to forget it for now.