PhotonKit -- A mildly opinionated toolkit for managing your camera photo collection
Project description
PhotonKit
PhotonKit is a mildly opinionated, blazing-fast command-line toolkit for safely backing up and organizing your camera photos and videos. Designed for macOS photo wranglers, it reads EXIF metadata to group files by date and camera, prevents clobbering, and works seamlessly with both SD cards and massive archives.
- Automated folder structure: Organizes by year, date, camera, and file type.
- Supports all major formats: JPEG, HEIC, RAW (CR2/CR3/ARW/NEF), MOV, MP4, AVI, and more.
- Resumable and safe: Skips duplicates by default, or saves unique versions on demand.
- Per-directory cache: Re-scans are lightning fast, only extracting EXIF for new files.
- Dry-run & date filtering: Preview operations and filter files by EXIF date.
- EXIF overrides: Handles edge cases (like iPhone movies) using customizable rules.
- MIT License: Free for all personal and commercial use.
Perfect for anyone who wants to keep their photo archives pristine and searchable—no more messy folders or lost images.
See full documentation, installation, and usage at: https://github.com/rsitools/photonkit
🚀 Installation
PhotonKit requires ExifTool for metadata extraction.
Install it first (macOS):
brew install exiftool
Install PhotonKit via pip (after you’ve installed from PyPI or locally):
pip install photonkit
⚡️ How to Run
Basic photo backup:
photonkit \
--source "/Volumes/SDCARD" \
--target "/Volumes/PhotoDrive"
Dry run (see what would be copied, but don’t actually copy):
photonkit \
--source "/Volumes/SDCARD" \
--target "/Volumes/PhotoDrive" \
--dry-run
Filter by EXIF date (only copy files dated on/after 2025-05-27):
photonkit \
--source "/Volumes/SDCARD" \
--target "/Volumes/PhotoDrive" \
--min-date 2025-05-27
Allow duplicate file versions (IMG_1234-1.jpg etc):
photonkit \
--source "/Volumes/SDCARD" \
--target "/Volumes/PhotoDrive" \
--skip-dupe false
🔎 Inspect EXIF Metadata
To print all EXIF metadata from a single file, plus camera model and original timestamp:
photonkit --exif /path/to/photo-or-video
📂 Example Target Structure
Your files will be organized like this:
PhotoDrive/
└── 2025/
└── 2025-05-27/
└── canon-eos-r5/
├── jpg/
├── raw/
└── video/
🛠 Features
Fast, safe, and resumable
Handles most camera/phone formats
Per-directory EXIF cache for speed
EXIF inspection mode with --exif
CLI output with progress and error reporting
🪪 License
PhotonKit is released under the MIT License.
Made with ❤️ for photo wranglers.
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file photonkit-0.2.1.tar.gz.
File metadata
- Download URL: photonkit-0.2.1.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ab2b80fddcccda6e99a4217f51de9d7f89c64cf0859bcf7aed776fce16d57ee
|
|
| MD5 |
d4c7f1e0d68fe6cbc704a0ab5d1c2855
|
|
| BLAKE2b-256 |
d104e1f9061cc817ff3103e5bb25fdae4c3d2a7881395b623967710bb7b5e86b
|
File details
Details for the file photonkit-0.2.1-py3-none-any.whl.
File metadata
- Download URL: photonkit-0.2.1-py3-none-any.whl
- Upload date:
- Size: 12.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b37bc9ff336ea5c974a9fa77904861a3fbc9afb7565265e1468f5d67d79b5a53
|
|
| MD5 |
1b814d6797105918e483ceaedea698a3
|
|
| BLAKE2b-256 |
8382cb5f47168bf461c7b772c094315e7bb6abd91d0c221a027e8b77f60f3406
|