Google Photos Sync (gphotos-sync)

Code CI Docs CI Test Coverage Latest PyPI version Apache License

Google Photos Sync is a backup tool for your Google Photos cloud storage.

PyPI

pip install gphotos-sync

Source code

https://github.com/gilesknap/gphotos-sync

Documentation

https://gilesknap.github.io/gphotos-sync

Releases

https://github.com/gilesknap/gphotos-sync/releases

Intro

Google Photos Sync downloads all photos and videos the user has uploaded to Google Photos. It also organizes the media in the local file system using album information. Additional Google Photos ‘Creations’ such as animations, panoramas, movies, effects and collages are also backed up.

This software is read only and never modifies your cloud library in any way, so there is no risk of damaging your data.

WARNING: Index DB Schema Change

3.2.4 introduces a change to the index database schema in order to distinguish between private albums and shared albums. You will be required to rebuild your index database when upgrading to this version or later.

Please use the command line option --flush-index to rebuild the index database.

This need only be done for the first invocation of the new version.

If you have not done so you will see the error message:

sqlite3.OperationalError: no such column: IsSharedAlbum

Warning: Google API Issues

There are a number of long standing issues with the Google Photos API that mean it is not possible to make a true backup of your media. In particular:

  • Videos are transcoded to lower quality

  • Raw or Original photos are converted to ‘High Quality’

  • GPS info is removed from photos metadata

For details of the Bugs reported to Google see https://github.com/gilesknap/gphotos-sync/issues/119.

To join in a discussion on this issue see https://github.com/gilesknap/gphotos-sync/discussions/347.

Quick Start

To get started see Tutorial

How the documentation is structured

Documentation is split into four categories, also accessible from links in the side-bar.

Tutorials

Tutorials for installation, library and commandline usage. New users start here.

How-to Guides

Practical step-by-step guides for the more experienced user.

Explanations

Explanation of how the library works and why it works that way.

Reference

Detailed information including autogenerated code documentation.

About the documentation

Why is the documentation structured this way?