Skip to main content

Archives the contents of your Google Photos library to disk

Project description

google-photos-archiver

CircleCI codecov PyPI version

What?

google-photos-archiver aims to provide a simple, fast, extensible interface to be able to back up one's Google Photos to a location of their choosing.

I've drawn inspiration from projects such as: https://github.com/mholt/timeliner & https://github.com/gilesknap/gphotos-sync but wanted to cut my teeth in this domain and see what I could come up with myself.

Why?

I wanted a tool (of my own creation) which could easily provide a copy of mine and my partner's Google Photos libraries, and keep said copy up to date over time.

In reality I've mainly just needed a distraction from the vicious cycle of wake, work, Netflix, sleep, and I thought it was high time to do a little side project.

How?

Development Pre-reqs

  • docker

... Or

Optional Reqs

Getting Started

Google Oauth Setup

These instructions will help you set up Google OAuth2 client credentials so you can start using google-photos-archiver

  • While logged into your Google account navigate to Create a New Project
  • Create one, and switch to using it with the UI dropdown
  • Navigate to APIs & Services click on + Enable APIs and services, and enable the Photos Library API
  • Navigate back to APIs & Services and click on Credentials
  • Click on + Create Credentials > OAuth client ID
  • Configure an OAuth consent screen. You can just fill out the required fields and hit Save.
    • Click Add Or Remove Scopes and manually add scope: https://www.googleapis.com/auth/photoslibrary.readonly
    • Accept remaining defaults, save through and return to Credentials
  • Click on + Create Credentials > OAuth client ID
  • Make a "Desktop App"
  • Congrats!, you now have a Client ID and Client Secret
  • Download the associated client_secret.json file and make note of its location as we'll be providing it's path to google-photos-archiver

First Run

A browser window will be opened during the initial OAuth flow. After successfully authenticating once, a refresh token will be stored for future use (See: --refresh-token-path) and will omit the need to reauthenticate.

Development Usage

$ git clone git@github.com:scottx611x/google-photos-archiver.git
$ poetry install
$ poetry run google-photos-archiver --help

... with Docker

Note that some more Docker volume mounting will be warranted here if you want to specify a different path to download to etc. Ref: https://docs.docker.com/storage/volumes

$ docker build . -t google-photos-archiver
$ docker run -v $PWD:/app/ google-photos-archiver  --help

General Usage

$ pip install google-photos-archiver
$ google-photos-archiver --help

Running tests

$ poetry run pytest

Examples

Specify a different download location

$ google-photos-archiver archive-media-items --download-path /Volumes/my-big-hdd/downloaded_media

Download from specific dates (with wildcard support)

$ google-photos-archiver archive-media-items --date-filter 2020/*/*,2021/8/22
$ google-photos-archiver archive-media-items --date-range-filter 2019/8/22-2020/8/22

Download Albums and their MediaItems only

$ google-photos-archiver archive-media-items --albums-only

Download Path Hierarchy

$ tree /<download_path>/downloaded_media/ | head
/<download_path>/downloaded_media/
├── 2021
│ └── 1
│     ├── 1
│     │ └── a.jpg
│     └── 2
│         └── b.mov
├── 2020
│ ├── 1
│ │ └── 2
│ │     └── c.jpg
│ └── 2
│     └── 3
│         └── d.jpg
└── albums
    └── Album A
        └── <symlink /<download_path>/downloaded_media/2021/1/1/a.jpg >
...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

google-photos-archiver-0.2.1.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

google_photos_archiver-0.2.1-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file google-photos-archiver-0.2.1.tar.gz.

File metadata

  • Download URL: google-photos-archiver-0.2.1.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.9 CPython/3.8.0 Linux/4.15.0-1092-aws

File hashes

Hashes for google-photos-archiver-0.2.1.tar.gz
Algorithm Hash digest
SHA256 0bf55bef0f2a4a9fa08b2d119a2a414f93246d3d24877e9c65d986d984602ee3
MD5 514e662f1ec699a4a69809cf9ee63197
BLAKE2b-256 75f6f939337e91e8a35bffaf80bb6cded2ac60d16e2a766dd66699e6492530bb

See more details on using hashes here.

File details

Details for the file google_photos_archiver-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for google_photos_archiver-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bad687eece0fca23068ff2e51c15c2e285ba7554ca6e05b013a478d711c76372
MD5 1aec9e646de6d0d73dbcde0edc57ed7b
BLAKE2b-256 1b6588c196510bfdb246eb147118282bd776e0052b6dd62d3da9f5c219d9d9dc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page