Skip to main content

Project Logo

The Lupaxa Miscellaneous Toolbox
Part of The Lupaxa Project


lupaxa-photo-renamer

Safely copy or move photographs and videos into consistent date-based filenames. Reads image EXIF or video metadata when available, falls back to filesystem modification time, detects common source apps, and reports progress with Rich.

Built for media libraries used by The Lupaxa Project.

Features

  • Date-based filenames from EXIF, video metadata, or filesystem mtime
  • Copy by default; --move only when you intend to remove sources
  • --dry-run plans and reports without writing files or logs
  • Never overwrites: collisions get _001, _002, and so on
  • Optional source labels in names (datetime, source, source-first)
  • Optional organise / flatten layout for detected sources
  • Concurrent copy/move workers and a tab-separated audit log
  • Fully typed, linted, formatted, and tested
  • MkDocs documentation included

Installation

From PyPI

pip install lupaxa-photo-renamer

From source (development mode)

pip install -e ".[dev]"

The console command is photo-renamer.

Video timestamp extraction uses MediaInfo. If it is unavailable on your system, install the MediaInfo package with your operating system's package manager (brew install mediainfo on macOS or apt install mediainfo on Debian/Ubuntu). auto still falls back to filesystem mtime.

CLI quick start

photo-renamer --help
photo-renamer --dry-run --recursive ~/Pictures
photo-renamer --recursive ~/Pictures
photo-renamer --recursive --format source ~/Pictures
photo-renamer --recursive --organise ~/Pictures
photo-renamer --recursive --output /Volumes/Archive --move ~/Pictures

By default, files are copied and results are written below PATH/renamed/. Existing relative directories are preserved:

Pictures/holiday/day-1/IMG-20260801-WA0001.JPG
→ Pictures/renamed/holiday/day-1/2026-08-01_14-55-22.jpg

Requirements

  • Python 3.13+
  • Runtime dependencies: rich, Pillow, pillow-heif, platformdirs, pymediainfo
  • System MediaInfo for video timestamps (optional; mtime fallback remains)

Documentation

Online documentation:

Documentation

Source repository:

GitHub

Serve docs locally

From a clone of the repository:

make mkdocs-serve

Then open the local URL printed by MkDocs in your browser.

Development

Clone the repository and install with Make:

make init                # first-time makefile-skills checkout
make python-install-dev  # editable install with [dev]
make python-check        # lint, type-check, and test
The Lupaxa Project Footer

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lupaxa_photo_renamer-0.1.2.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

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

lupaxa_photo_renamer-0.1.2-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file lupaxa_photo_renamer-0.1.2.tar.gz.

File metadata

  • Download URL: lupaxa_photo_renamer-0.1.2.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for lupaxa_photo_renamer-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c64f40fed873730df10a3331c837977d80049297df77ef5922e151a538d13c09
MD5 79ea6060e345c6c654c0ccc5f7f54686
BLAKE2b-256 f23559ceda48c2ee460d625950e9e8842e16ab7d610cb50aeb8c4249f02561ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for lupaxa_photo_renamer-0.1.2.tar.gz:

Publisher: generate-release.yml on lupaxa-miscellaneous-toolbox/photo-renamer

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

File details

Details for the file lupaxa_photo_renamer-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for lupaxa_photo_renamer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dd7abda0e850fc48ac2c553b111d61292b4a2f81ced973932aae268062ee9604
MD5 25272d5d225d4e660811e4495e953a4a
BLAKE2b-256 761fde13b7d8fff31d697bc139817855073f74f69b9d8582d2da66c25576b028

See more details on using hashes here.

Provenance

The following attestation bundles were made for lupaxa_photo_renamer-0.1.2-py3-none-any.whl:

Publisher: generate-release.yml on lupaxa-miscellaneous-toolbox/photo-renamer

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

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page