A Python script to download all photos and videos from your Google Photos library to a local directory.
- Downloads all photos and videos from Google Photos
- Progress bar using
tqdm
- Detailed logging
- Command-line arguments for configuration
- Automatic token management
- Skips already downloaded files
- Robust error handling
- Python 3.6+
- Google Cloud Console project with Google Photos API enabled
- OAuth 2.0 credentials file
- Clone the repository:
git clone https://github.com/yourusername/google-photos-downloader.git
cd google-photos-downloader
- Install dependencies:
pip install -r requirements.txt
- Set up Google Photos API:
- Create a project in Google Cloud Console
- Enable the Google Photos Library API
- Create OAuth 2.0 credentials
- Download the credentials JSON file and save as
credentials.json
To authorize access to your Google Drive or Google Photos, you need to create OAuth 2.0 credentials:
-
Go to Google Cloud Console
-
Click "Create Project" (if you don’t have one yet)
-
Navigate to APIs & Services → Library
- Search for and enable Google Drive API or Google Photos Library API, depending on your use case
-
Go to APIs & Services → Credentials
-
Click "+ Create Credentials" → OAuth client ID
-
If prompted to configure the OAuth consent screen:
- Select External
- Set an App name (e.g.,
PhotoDownloader
) - Save and continue — no need to publish
-
Back on the Create OAuth client ID screen:
- Choose Desktop App
- Name it (e.g.,
MyDownloaderApp
) - Click "Create", then "Download JSON"
-
Rename the downloaded file to
credentials.json
and place it in your script directory.
⚠️ This file contains sensitive credentials — keep it private and secure.
Basic usage:
python download_photos.py
With custom options:
python download_photos.py --save-dir my_photos --credentials my_credentials.json --token my_token.pkl --page-size 50
Options:
--save-dir
: Directory to save downloaded photos (default: photos_download)--credentials
: Path to Google API credentials file (default: credentials.json)--token
: Path to token file (default: token_photos.pkl)--page-size
: Number of photos to fetch per API call (default: 100)
- Run the script
- Browser will open for authentication
- Grant necessary permissions
- Token will be saved for future runs
- Files are saved with their original names
- Existing files with same names are skipped
- Ensure sufficient disk space
- Large libraries may take significant time to download
- Google Photos API has rate limits; adjust
--page-size
if needed
MIT License - see LICENSE file for details
Pull requests are welcome! Please open an issue first to discuss proposed changes.