Another alternative that gets around many of the limitations (for eg, lack of GPS coordinates): https://github.com/perkeep/gphotos-cdp
I tried this last month, but due to how finicky the headless browser approach is, I was only able to get ~20% of my photos in over a month.
Until https://github.com/perkeep/gphotos-cdp/issues/21 is fixed, I’ve paused my sync.
I have written something similar to back up photos using these APIs. From what I recall, it isn’t possible to get a completely undoctored copy (it is a rencoded JPEG, modified EXIF and other data) of what you uploaded originally? I think for that you need to arrange a Google Takeout, which sadly you cannot seem to do programmatically.
As far as I can see, mounting an iPhone on Ubuntu and downloading a photo this way, they give the same md5sum. I do however have original quality uploads enabled and pay for extra storage. Videos I’m not sure.
I think all of these upload at full resolution which counts against your storage costs. I have no idea why they do not allow the compressed (free) upload via API.