Organize photos and videos by capture date while preserving metadata and resumable workflows.
Project description
DateFrame
DateFrame organizes photo and video libraries around their capture date. It can rename media, repair date metadata, import from iCloud Photos on Windows, keep supported sidecars and Apple Live Photo pairs together, and resume long operations from detailed logs.
Install
Install the published package with Python 3.10 or newer:
pip install dateframe
This installs a single command:
dateframe --help
You do not need to clone this repository to use DateFrame. Cloning is only needed for development or contributing.
Quick Start
Import files directly from iCloud Photos on Windows:
dateframe import-icloud "C:\Users\You\Pictures\iCloud Photos\Photos" "C:\Users\You\Pictures\iCloud-Renamed"
Copy and rename media from a camera folder or export:
dateframe rename --copy "/path/to/originals" "/path/to/renamed"
Write filename dates back into media metadata:
dateframe write-dates "/path/to/renamed"
For detailed workflows, date-source priority, resume behavior, iCloud caveats, Live Photos, and metadata repair notes, see the User Guide.
Commands
| Command | Purpose |
|---|---|
dateframe import-icloud |
Import and rename media from iCloud Photos for Windows using available iCloud/Windows date metadata. |
dateframe rename |
Copy or move media into timestamp-based filenames using embedded metadata and associated sidecars. |
dateframe write-dates |
Write capture dates from timestamped filenames or sidecars into metadata. |
dateframe inspect |
Inspect a file's available metadata and associated sidecars. |
dateframe extensions |
Count file extensions in a folder or input list. |
Use command-specific help for all options:
dateframe rename --help
dateframe import-icloud --help
iCloud Notes
There are important differences between iCloud export paths.
dateframe import-icloud works with iCloud Photos for Windows and can preserve useful iCloud/Windows date information. When possible, leave iCloud placeholder files undownloaded and resume failed copies from the generated CSV, because Windows may expose better capture-date information before a file is manually hydrated.
iCloud Web exports may provide Live Photos as image/video pairs, which dateframe rename can identify and keep together. For the tradeoffs between both workflows, see the iCloud section of the User Guide.
Requirements
DateFrame itself is installed through pip, but some operations require external tools:
| Dependency | Used for |
|---|---|
| ExifTool | Writing metadata and confirming Live Photo pairs. |
| ffmpeg | Reading video metadata. |
| ImageMagick | Image metadata access through Wand. |
dateframe import-icloud is Windows-only because it uses Windows Shell/iCloud metadata through pywin32. The other commands are designed for Windows, Linux, and macOS when their required external tools are available.
If you only use dateframe import-icloud, you need ExifTool but do not need ffmpeg or ImageMagick.
Safety
Before running a large import or rename operation, test on a small copied sample and inspect the produced CSV/TXT logs. Logs may contain local file paths, filenames, metadata values, and command arguments; redact private information before sharing them publicly.
Keep an independent backup of important media until you have verified the results.
Contributing
Bug reports and pull requests are welcome. See CONTRIBUTING.md for development setup and validation guidance.
For security-sensitive reports, see SECURITY.md.
License
DateFrame is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only). See LICENSE.md.
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
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 dateframe-0.1.3.tar.gz.
File metadata
- Download URL: dateframe-0.1.3.tar.gz
- Upload date:
- Size: 64.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d090d5dcbb364a1a0e3fe4e51d6bee921a23b1fa19756915ebc504d057e5e16
|
|
| MD5 |
f185bb7dcb4a49e89939942067192986
|
|
| BLAKE2b-256 |
1c7171dab0e54eaea4afa2372d44f3655cb88718a49edb802c56dd602f160d4a
|
File details
Details for the file dateframe-0.1.3-py3-none-any.whl.
File metadata
- Download URL: dateframe-0.1.3-py3-none-any.whl
- Upload date:
- Size: 57.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7205b94ab05b24e3008ba9d9bdd7a1f0e0b505b62c53c3cf1322bb055882569
|
|
| MD5 |
ea764a7e7256a9f9638290b438f3ff30
|
|
| BLAKE2b-256 |
02158c931943b50bbd8c379fd9285e35b0419b9bcb03d2b6b3d4b4216afe4060
|