Skip to main content

Manage photos in a directory tree

Project description

photree

Stable Version Pre-release Version Python Versions Download Stats GitHub Stars License CI Status

A CLI tool to import, organize, verify, and export iOS photo albums as plain directories — preserving originals, edits, and sidecars without any proprietary database.

asciicast

Main Use Cases

  • Import iOS photos into organized album directories, preserving originals, edits, and AAE sidecars from macOS Image Capture
  • Browse and curate using the main-img/, main-jpg/, and main-vid/ directories — the best version of each photo/video, ready to view
  • Share albums by exporting JPEG-compatible versions to cloud sync folders (MEGAsync, Syncthing, etc.) or external drives
  • Back up to external volumes with full album structure (originals + edits + sidecars) using symlinks or hardlinks to save disk space
  • Verify album integrity with checksums and structural validation, with actionable fix suggestions

Non-Goals

  • Not a photo viewer or editor. photree organizes files on disk — use your favorite viewer (Finder, feh, etc.) to browse main-img/ or main-jpg/.
  • Not a photo management database. There is no catalog, index, or metadata database. Albums are plain directories, readable by any tool.
  • Not a cloud service. photree exports to directories — pair it with your own sync tool (MEGAsync, Syncthing, rsync, etc.).
  • Not cross-platform for import. The import pipeline requires macOS (sips for HEIC-to-JPEG conversion). Exported albums are portable.

Known Limitations

  • macOS required for import. The sips tool (included with macOS) is used for HEIC/DNG-to-JPEG conversion. Import is not supported on Linux. Exported albums work everywhere.
  • iOS-only import source. The import pipeline is built around macOS Image Capture conventions (IMG_* naming, AAE sidecars, IMG_E* edits). Other camera sources are not currently supported.
  • No EXIF-based organization. Album names and dates are derived from directory names (YYYY-MM-DD convention), not from EXIF metadata.

Philosophy

  • Plain directories, no lock-in. Albums are standard filesystem directories. No database, no proprietary format. You can always ls, cp, rsync, or browse with any tool.
  • Preserve everything, organize intelligently. Originals, edits, and sidecars are archived under ios/. The main-* directories provide a clean, browsable view without losing source material.
  • Explicit over magic. Every operation has a dry-run mode. Destructive fixes require explicit flags. The tool tells you what it would do before doing it.
  • Composable with existing tools. photree handles album structure — pair it with rsync for backups, MEGAsync for cloud sync, or any viewer for browsing.

Related Projects

  • Apple Photos — Apple's built-in photo manager. Great for editing, but uses a proprietary database. photree is for people who want plain directories.
  • Immich / PhotoPrism — Self-hosted photo management with a web UI. A good complement if you want a browsable gallery on top of your photree albums.
  • immich-go — CLI tool to bulk-upload photos to Immich. Can be used to upload photree albums.
  • rsync / Syncthing / MEGAsync — File sync tools. photree exports to directories that these tools can sync.
  • ExifTool — Metadata extraction and editing. Useful alongside photree for EXIF-based workflows.

Installation

See docs/installation.md.

Usage

See docs/usage.md.

Development

See docs/setup-development-environment.md.

Contribute

Practical information:

Conceptual information:

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

photree-0.6.0.tar.gz (192.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

photree-0.6.0-py3-none-any.whl (289.2 kB view details)

Uploaded Python 3

File details

Details for the file photree-0.6.0.tar.gz.

File metadata

  • Download URL: photree-0.6.0.tar.gz
  • Upload date:
  • Size: 192.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for photree-0.6.0.tar.gz
Algorithm Hash digest
SHA256 b7f3a37bcd560c003f351f7e09a0429c414cd85616549fa6a35e9c43cb5bc8c3
MD5 7caf2c01c251389c45964f3ff3bef3ec
BLAKE2b-256 e1bf76d6960da7c57a8b86838beac51de5d1569fdf6f09f7c3c45c81d4a15483

See more details on using hashes here.

Provenance

The following attestation bundles were made for photree-0.6.0.tar.gz:

Publisher: publish.yml on iglootools/photree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file photree-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: photree-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 289.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for photree-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea604270d38e074b8cf8ad9a76f0d4ce521e4eccff340217398da81df78bdd77
MD5 c4c1278fbdf673341a8dba8d8c41e331
BLAKE2b-256 d69eb2687464ea6e3e7b10e4e73c6c69c2525fab80bdf8bc75bfaae428fa3e86

See more details on using hashes here.

Provenance

The following attestation bundles were made for photree-0.6.0-py3-none-any.whl:

Publisher: publish.yml on iglootools/photree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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