Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/perkeep/gphotos-cdp

This program uses the Chrome DevTools Protocol to drive a Chrome session that downloads your photos stored in Google Photos.
https://github.com/perkeep/gphotos-cdp

Last synced: 8 days ago
JSON representation

This program uses the Chrome DevTools Protocol to drive a Chrome session that downloads your photos stored in Google Photos.

Awesome Lists containing this project

README

        

gphotos-cdp
========

What?
--------

This program uses the Chrome DevTools Protocol to drive a Chrome session that
downloads your photos stored in Google Photos.
By default, it starts at the most ancient item in the library, and progresses
towards the most recent.
It can be run incrementally, as it keeps track of the last item that was
downloaded.
It only works with the main library for now, i.e. it does not support the photos
moved to Archive, or albums.
For each downloaded photo, an external program can be run on it (with the -run
flag) right after it is downloaded to e.g. upload it somewhere else. See the
upload/perkeep program, which uploads to a Perkeep server, for an example.

Why?
--------

We want to incrementally download our own photos out of Google Photos.

Google Photos used to have an API to do this (the Picasa Web Albums API) but
[they removed it](http://googlephotos.blogspot.com/2016/02/moving-on-from-picasa.html),
replacing it with a new API that doesn't let you download your
original photos. They instead let you download your photos
[with mangled EXIF, stripping location](https://developers.google.com/photos/library/guides/access-media-items#image-base-urls)
(and maybe recompressing the image bytes?).

There also used to be a way to sync your Google Photos to Google
Drive, and then you could use the Google Drive API to download your
original photos, but Google Photos
[removed that too](https://www.blog.google/products/photos/simplifying-google-photos-and-google-drive/).

We can get our original photos out with [Google Takeout](https://takeout.google.com/),
but only manually, and slowly. We don't want to have to remember to do
it (or remember to renew the time-limited scheduled takeouts) and we'd
like our photos mirrored in seconds or minutes, not weeks.

In [our original Perkeep
issue](https://github.com/perkeep/perkeep/issues/1144#issuecomment-525007239),
[@bradfitz](https://github.com/bradfitz/) said that we might have to give up on APIs and resort
to scraping, noting that the
[Chrome DevTools Protocol](https://github.com/ChromeDevTools/devtools-protocol) makes this
pretty easy. Brad hacked up some Go code to drive Chrome (using
https://github.com/chromedp/chromedp) and do a basic download and then
[Mathieu Lonjaret](https://github.com/mpl) made this tool, fleshing out the idea.

What if Google Photos breaks this tool on purpose or accident?
--------

I guess we'll have to continually update it.

But that's no different than using people's APIs, because companies all seem to
be deprecating and changing their APIs regularly too.