All notable changes to smugVision will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
smugVision is now a fully functional, production-ready tool for automated photo metadata generation!
Core Processing:
ImageProcessorclass for orchestrating the complete processing pipelineMetadataFormatterfor combining AI-generated, EXIF, and face recognition metadata- End-to-end processing with detailed statistics tracking
- Batch processing with progress indicators
- Processing result tracking with success/skip/error counts
CLI Interface:
- Production-ready
__main__.pyCLI entry point - Rich formatted output with banners and summaries
- Support for
--gallery(album key) and--url(SmugMug URL) inputs --dry-runflag for previewing changes without updating SmugMug--force-reprocessflag to reprocess already-tagged images--include-videosflag to process video files (skipped by default)--verboseand--quietmodes for logging control--configoption for custom configuration files- Exit codes for proper shell integration
- Comprehensive error messages with troubleshooting hints
Face Recognition Enhancements:
- Person name formatting (converts underscores to spaces)
- Configurable confidence thresholds via config.yaml
- Integration of identified people into captions and tags
Testing & Utilities:
test_processor.pyfor testing the full processing pipeline- Support for URL-based album resolution in test scripts
- Dry-run mode with detailed preview output
Documentation:
- Comprehensive README.md with installation, usage, and troubleshooting
- QUICKSTART.md for fast setup and first use
- Updated DESIGN.md with current status and architecture
- CHANGELOG.md for tracking releases
- Album processing now returns
BatchProcessingStatswith detailed metrics - Improved logging throughout the processing pipeline
- Enhanced error handling with specific exception types
- Metadata formatting now preserves existing captions/tags (configurable)
- Person names now display with spaces instead of underscores
- Reference faces directory path now properly expands tilde (~)
- Video downloads now use
LargestVideoendpoint for actual video files - Image downloads use correct size-specific URLs from
ImageSizesexpansion
SmugMug Integration:
- Video file detection via
is_videoproperty LargestVideoendpoint support for proper video downloads- Configurable video inclusion/exclusion (skip by default)
- Album resolution from URLs, node IDs, and names
- Recursive album search within folder structures
- URL path resolution for folder navigation
- Pagination support for large datasets
- Multiple image size options (Thumb through X3Large, Original)
EXIF & Location:
- EXIF data extraction with GPS coordinates
- Reverse geocoding for human-readable location names
- Location context integration into captions and tags
- HEIC/HEIF image format support
- Automatic orientation correction
Testing:
test_smugmug.pywith caching, URL parsing, and album listing--cacheflag for local image downloads--sizeoption for configurable download sizes--forceflag for re-downloading existing files--include-videosflag in test script
- Improved SmugMug API error messages
- Enhanced album key resolution logic
- Better handling of SmugMug folder hierarchies
- Video files now download correctly (not as thumbnails)
- Image downloads use proper size-specific URLs
- Content-type validation prevents HTML/JSON downloads
- Pagination now correctly fetches all results
Configuration System:
- YAML-based configuration (
~/.smugvision/config.yaml) - Interactive setup wizard
- Default values for all settings
- Configuration validation
- Support for required and optional fields
SmugMug API Client:
- OAuth 1.0a authentication
- Album and image retrieval
- Metadata updates (PATCH endpoint)
- Marker tag system for tracking processed images
- Error handling with custom exceptions
- Rate limiting awareness
Vision Model Integration:
- Factory pattern for vision models
- Abstract base class for extensibility
- Llama 3.2 Vision integration via Ollama
- Caption generation with customizable prompts
- Tag generation with keyword extraction
- Temperature and max_tokens configuration
Face Recognition:
- Face detection and recognition using
face_recognitionlibrary - Reference faces management (folder-based organization)
- Multiple reference images per person
- Confidence-based matching
- Relationship context integration
- Face encoding optimization script
Cache Management:
- Local image caching with folder structure mirroring
- Skip existing files to avoid re-downloads
- Configurable cache directory
- Automatic directory creation
Testing & Utilities:
test_vision.pyfor vision model testingdebug_face_recognition.pyfor face detection debuggingget_smugmug_tokens.pyfor OAuth token acquisitionfind_album_key.pyfor album discoveryoptimize_reference_faces.pyfor face encoding optimization
Documentation:
- DESIGN.md with architecture and roadmap
- README_FACE_RECOGNITION.md with face recognition guide
- config.yaml.example with all configuration options
- Code documentation and inline comments
smugvision.config- Configuration managementsmugvision.smugmug- SmugMug API client and modelssmugvision.vision- Vision model abstraction and implementationssmugvision.face- Face recognition systemsmugvision.cache- Cache managementsmugvision.utils- EXIF extraction, geocoding, and utilities
See DESIGN.md for detailed roadmap. Key planned features:
- Folder batch processing
- Cache cleanup utilities
- Unit and integration tests
- Performance optimizations
- Web UI for monitoring
- Multiple vision model support
- Docker deployment option
Legend:
- 🎉 Major milestone
- ✨ New feature
- 🐛 Bug fix
- 📝 Documentation
- ♻️ Refactoring
- ⚡ Performance improvement