Skip to main content

Local desktop tool for organizing, syncing, indexing, and reviewing photos.

Project description

Photo Manager Pro

A local tool for organizing photos and videos. The app provides a PySide6 GUI, one-shot synchronization, background folder watching, and tools for detecting heavily blurred photos.

Current Features

  • Sort files from a source folder into year-based folders.
  • Detect dates from EXIF with fallback to mtime or ctime.
  • Copy files with verification by fast fingerprint or full SHA256.
  • Optionally delete source files after successful synchronization.
  • Background sync mode powered by watchdog.
  • CSV synchronization log.
  • Blur scanning with OpenCV.
  • Local SQLite metadata index for files, sync events, blur scores, and future AI data.
  • Automatic background sync after the app starts.
  • Option to open the app on Windows startup.

Running

py -m pip install -r requirements.txt
py photo_manager_gui.py

photo_manager_gui.py is a lightweight launcher. The main application lives in photo_manager_qt.py.

After the first PyPI release, the app can also be installed as:

python -m pip install photosync-tool
photo-manager-pro

Library Index

The app maintains a local SQLite index named photo_manager_index.sqlite3 in the selected photo root folder. It is intentionally local and disposable: it can be rebuilt from the library, sync logs, and blur CSVs.

The index currently stores:

  • Media file paths, size, timestamps, year, dimensions, status, and optional quick hashes.
  • Sync events from batch sync, background sync, and the headless service.
  • Blur scores imported from blur_tool.py.
  • Placeholder storage for future AI captions, tags, and embeddings.

In the GUI, use Library Index -> Rebuild Index to scan the current root folder, or Import Blur CSV to load existing blur scan results. Batch sync, background sync, the Windows service, blur scan, and blur auto-delete now update the index automatically.

Startup And Background Work

The GUI has two separate startup options:

  • Autostart background on launch starts folder watching after the app launches.
  • Open on Windows startup adds an entry to HKCU\Software\Microsoft\Windows\CurrentVersion\Run, so the app starts when the current user logs in.

This is not a full Windows service yet. The target design should split out a separate photo_manager_service.py process that reads the same photo_manager_config.json, runs without a window, and can be installed with pywin32 or NSSM.

Schedule

The GUI includes a Sync hours field. It accepts one or more hour ranges:

  • 0-24 means all day.
  • 8-18 means synchronization only during working hours.
  • 22-7 means an overnight window that crosses midnight.
  • 8-12,14-18 means multiple windows in one day.

In background sync mode, files detected outside the allowed window are queued and processed when the window opens again. The next step is a full calendar or weekly schedule view, for example:

  • Weekdays.
  • Hour ranges when synchronization is allowed.
  • Separate windows for sync and AI/blur analysis.
  • A "pause until hour X" mode.
  • Restricting heavy work to nighttime.

Technically, the current hour field should eventually evolve into JSON with a list of time windows and task types.

Local Or API AI

AI could add practical features such as:

  • Photo tagging: people, documents, food, landscapes, screenshots, animals, cars.
  • Captions for search.
  • Semantic duplicate and near-duplicate detection.
  • Photo quality scoring: sharpness, exposure, closed eyes, motion blur.
  • Private or sensitive content detection before automatic moves.
  • OCR for screenshots and documents.
  • Automatic albums, such as vacations, university, work, or documents.

I would not start with full Torch as a hard application dependency. A better path:

  1. Start with an API backend or ONNX Runtime as an optional backend.
  2. Use the SQLite index as the cache for tags, captions, embeddings, and review decisions.
  3. For local models, use onnxruntime with CLIP/SigLIP embeddings for similarity and search.
  4. Add torch later as an optional requirements-ai.txt package only when training or GPU-heavy models become necessary.

Torch is powerful, but heavy. For a desktop app that should remain stable and easy to run, ONNX Runtime or an external API will usually be less painful.

Suggested Roadmap

  • Real service/headless mode.
  • Work schedule and pause controls.
  • Background task queue with retry.
  • SQLite-backed search and gallery views.
  • Duplicate view with thumbnails.
  • Thumbnails and a fast gallery in the GUI.
  • Search by date, folder, tags, and AI captions.
  • Dedicated safe-delete panel with recycle bin and decision history.
  • Synchronization report export.
  • Optional AI panel: backend, model, batch size, GPU/CPU, embeddings cache.

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

photosync_tool-0.1.0.tar.gz (51.9 kB view details)

Uploaded Source

Built Distribution

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

photosync_tool-0.1.0-py3-none-any.whl (54.0 kB view details)

Uploaded Python 3

File details

Details for the file photosync_tool-0.1.0.tar.gz.

File metadata

  • Download URL: photosync_tool-0.1.0.tar.gz
  • Upload date:
  • Size: 51.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for photosync_tool-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e6c125deaaa77f622e0a12ccf7ca97e4398a434f60154a466233794b1207a1d
MD5 4f4ac4dcf9be287535c12356511dfaab
BLAKE2b-256 a3c802b79a1b496243d399b3047f54fc739b6d4b40b356c1a4e7d824785695d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for photosync_tool-0.1.0.tar.gz:

Publisher: publish.yml on Filipluke/PhotoSyncTool

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

File details

Details for the file photosync_tool-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: photosync_tool-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for photosync_tool-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b57e6d245b4f577eeea219ed009c8af087dacab18243dafac031a65caea18e5
MD5 d68762148c8dd61928802c289fa5cf6a
BLAKE2b-256 081276d6a0504eaa015adb0e684c0116676b4fe573a5617220a2acc07c9018e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for photosync_tool-0.1.0-py3-none-any.whl:

Publisher: publish.yml on Filipluke/PhotoSyncTool

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