CLI and GUI tool for photo organisation and folder management
Project description
file-manager
A CLI and GUI tool for photo organisation and Windows folder management.
Built for photographers who want a fast, repeatable workflow: sort imports by date, rename files consistently, clean up orphaned RAWs, and color-code folders in Windows Explorer.
Features
| Feature | Description |
|---|---|
| Organize | Move photos into YYMMDD/ sub-folders using EXIF metadata |
| Rename | Rename to <Camera>_<YYMMDD>_<NNN>.<ext> consistently |
| Clean | Delete orphaned RAW files, then rename everything |
| Color | Set a custom icon color in Windows Explorer (Windows only) |
| GUI | Full graphical interface — no terminal needed |
Installation
pip install file-manager-maximterest
Requirements: Python 3.10+.
The folder-color feature is Windows-only. All other commands work on macOS and Linux.
Quick start
# Organize a fresh import by date
fm photo_organize "../PHOTOS"
# Rename photos in a folder
fm photo_rename "../PHOTOS/260418"
# Delete orphaned RAWs, then rename
fm photo_clean "../PHOTOS/260418"
# Color a folder (Windows)
fm color "../PHOTOS/260418" green
# Open the GUI
fm gui
CLI reference
fm <command> [options]
Run fm --help to list commands, or fm <command> --help for details.
photo_organize · alias porga
Move photos and RAW files into sub-folders named by their EXIF shoot date (YYMMDD).
fm photo_organize <path>
fm porga <path>
- RAW files go into a nested
RAW/sub-folder (name configurable insettings.json, and can be null). - Files without EXIF data are skipped and reported.
- Duplicate file names in the destination are skipped.
photo_rename · alias prename
Rename all photos in a folder to <CameraModel>_<YYMMDD>_<NNN>.<ext>.
fm photo_rename <path>
fm prename <path>
- Matching RAW files are renamed in sync.
- Padding (
NNN) is zero-padded and based on sort order.
photo_clean · alias pclean
Two-step cleanup for a date folder:
- Delete any RAW file that has no matching photo.
- Rename all remaining photos (
photo_rename).
fm photo_clean <path>
fm pclean <path>
⚠ Deletion is permanent. Double-check your path.
color
Set the icon color of a folder in Windows Explorer.
fm color <path> [COLOR] [--subfolders]
| Option | Description |
|---|---|
COLOR |
One of the colors listed below (default: red) |
-sub, --subfolders |
Apply the color to every direct sub-folder |
Available colors:
blue · space · navy · race_blue · teal · light_blue · green · olive · lime · mint · red · orange · pink · purple · maroon · coffee · yellow · white · gray · dark_gray
Windows only — no-op on other platforms.
gui
Open the graphical user interface.
fm gui
GUI
The GUI mirrors all CLI commands with folder pickers, a color selector, and a live output log.
- Photos tab — pick a folder and click Organize, Rename, or Clean.
- Color tab — pick a folder, choose a color, apply.
- Settings tab — edit
settings.jsoninline and save without restarting.
Configuration
Edit settings.json inside the package (or via the Settings tab in the GUI):
{
"raw_folder": "RAW",
"photo_extensions": [
".jpg",
".jpeg",
".png",
".heic"
],
"raw_extensions": [
".raf",
".raw"
]
}
| Key | Description |
|---|---|
raw_folder |
Sub-folder name for RAW files |
photo_extensions |
File extensions treated as photos |
raw_extensions |
File extensions treated as RAW files |
Publishing to PyPI (for maintainers)
pip install build twine
# Build
python -m build
# Upload to PyPI
twine upload dist/*
Contributing
- Fork the repo and create a feature branch.
- Keep changes focused — one feature per PR.
- Run a quick smoke-test before opening a PR:
pip install -e . fm --help fm photo_organize /path/to/test/photos
License
MIT — see LICENSE.
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 file_manager_maximterest-0.2.1.tar.gz.
File metadata
- Download URL: file_manager_maximterest-0.2.1.tar.gz
- Upload date:
- Size: 620.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55b90ad46a2380fdc461296a09556575840145e73e1bf594c99be5b457dbaf76
|
|
| MD5 |
b16b6e18d1d9bf296100c54dfb548c14
|
|
| BLAKE2b-256 |
90d8a73b660702279b739901fb2ca2e4bc0071f1c28a35a7027b5484cf37d124
|
File details
Details for the file file_manager_maximterest-0.2.1-py3-none-any.whl.
File metadata
- Download URL: file_manager_maximterest-0.2.1-py3-none-any.whl
- Upload date:
- Size: 619.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef8dd1521cb4e9a59f2a9e2473aa511dda3ebff0222d4a05d7079ad6d28d3c1b
|
|
| MD5 |
30b56fd7573f7a03c7c66927b0bbb784
|
|
| BLAKE2b-256 |
b764f37e08b54c585a9e8a673c3654b506cf90f583a62b53fba68ae24c99307c
|