Archives the contents of your Google Photos library to disk
Project description
google-photos-archiver
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
python==3.8
- poetry
>=1.0.0
Optional Reqs
- pre-commit
- Run
pre-commit install
- Run
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 thePhotos Library API
- Navigate back to
APIs & Services
and click onCredentials
- 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
- 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 togoogle-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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0bf55bef0f2a4a9fa08b2d119a2a414f93246d3d24877e9c65d986d984602ee3 |
|
MD5 | 514e662f1ec699a4a69809cf9ee63197 |
|
BLAKE2b-256 | 75f6f939337e91e8a35bffaf80bb6cded2ac60d16e2a766dd66699e6492530bb |
File details
Details for the file google_photos_archiver-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: google_photos_archiver-0.2.1-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.9 CPython/3.8.0 Linux/4.15.0-1092-aws
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bad687eece0fca23068ff2e51c15c2e285ba7554ca6e05b013a478d711c76372 |
|
MD5 | 1aec9e646de6d0d73dbcde0edc57ed7b |
|
BLAKE2b-256 | 1b6588c196510bfdb246eb147118282bd776e0052b6dd62d3da9f5c219d9d9dc |