π¬ Integrated Solution for Large-Scale Video Collection Management
A comprehensive video archive management system integrating video file management, automatic thumbnail generation, and preview functionality.
This is the original codebase that served as the foundation for VAM-Seek β a lightweight 15KB web library.
Why is this public?
- VAM-Seek (the web version) has been released, so it makes sense to share the original implementation as a reference
- This 100k-line Python application demonstrates the algorithms and concepts that were distilled into the web library
- Important: This is a functional but messy codebase built through raw effort and iteration β not production-quality code
What you'll find here:
- Grid-based video navigation algorithms
- X-continuous timestamp calculation (the core of VAM-Seek)
- Desktop application implementation with PyQt6
- Real-world examples of video frame extraction and thumbnail generation
What this is NOT:
- A showcase of clean code or best practices
- A recommended starting point for new projects
- Production-ready enterprise software
If you're looking for the clean, modern implementation, check out VAM-Seek instead.
- Hierarchical Folder Management: Intuitive navigation with directory tree
- Fast Search: Search by filename, metadata, and tags
- History Management: Automatic save and restore of folder browsing history
- Automatic Thumbnail Generation: High-quality grid image generation from videos
- Dynamic Preview: Real-time video preview functionality
- Grid Marker: Visual marking of playback position
- Temporary Storage: Temporary grouping of selected videos
- Folder Structure Support: Basket management preserving hierarchical structure
- Multiple Baskets: Simultaneous management of multiple baskets for different purposes
- Built-in Player: High-functionality media player based on PyQt6
- External Player Integration: Integration with VLC, MPC-HC, etc.
- Playlist Feature: Continuous playback and shuffle play support
- Metadata Management: Comments, tags, custom information
- Database Integration: Fast data management with SQLite
- Backup: Automatic data backup functionality
- Plugin System: Extensible architecture
- Total Lines: ~100,000 lines (Python files)
- File Count: 200+ modules
- Organized: 45,000+ lines systematically organized
main_window.py(2,894 lines) - Main application windowdirectory_tree.py(3,900 lines) - Directory management systemplayer_dock_widget.py(3,568 lines) - Video player interfacepreview_window.py(4,748 lines) - Preview & thumbnail display
database_manager.py(1,626 lines) - Database operationsthumbnail_generator.py(2,011 lines) - Thumbnail generation enginesettings_manager.py(714 lines) - Settings management system
basket_widget.py(1,385 lines) - Basket feature UItree_search_manager.py(1,354 lines) - Search functionality systemgrid_marker_manager.py(1,206 lines) - Grid marker management
- GUI: PyQt6 - Modern cross-platform UI
- Database: SQLite - Lightweight high-speed data storage
- Image Processing: PIL/Pillow - Thumbnail generation & image manipulation
- Video Processing: OpenCV - Frame extraction & video analysis
- Multimedia: PyQt6.QtMultimedia - Media playback
- Singleton Pattern: Settings & database management
- Factory Pattern: Player & repository creation
- Observer Pattern: UI updates & event management
- Strategy Pattern: File processing & search functionality
- OS: Windows 10/11, macOS, Linux
- Python: 3.8 or higher
- RAM: 4GB+ recommended (for large collections)
- Storage: 1GB+ free space for cache
PyQt6>=6.4.0
Pillow>=9.0.0
opencv-python>=4.5.0
numpy>=1.21.0
git clone https://github.com/unhaya/VAM-original.git
cd VAM-originalpip install -r requirements.txtpython main.py- Launch the application
- Specify video folder in "Settings"
- Adjust thumbnail generation settings
- Confirm database initialization complete
- Folder Selection: Select video folder from left tree
- Preview: Check thumbnail preview in central area
- Playback: Double-click to play with built-in player
- Basket: Add to basket from right-click menu
All major files are systematically organized with functional comment blocks:
# ==========================================
# Initialization & Settings Management
# Class initialization, basic settings, state management
# ==========================================
# ==========================================
# UI Construction & Layout Management
# User interface construction, display control
# ==========================================
# ==========================================
# Data Processing & Management
# File operations, database integration
# ==========================================- Functional Grouping: Logical aggregation of related methods
- Consistent Naming Convention: Clear documentation in Japanese
- Error Handling: Robust exception handling implementation
- Resource Management: Proper memory & file handle management
vam5.70/
βββ core/ # Core logic
β βββ database_manager.py # Database management
β βββ thumbnail_generator.py # Thumbnail generation
β βββ ...
βββ gui/ # User interface
β βββ main_window.py # Main window
β βββ widgets/ # UI components
β βββ dialogs/ # Dialogs
β βββ ...
βββ config/ # Settings management
βββ utils/ # Utilities
βββ players/ # External player integration
βββ plugins/ # Plugin system
βββ backup/ # Backup files
- β Large-scale Code Organization: Systematic restructuring of 45,000+ lines
- β Functional Organization: Improved internal structure of all major files
- β Maintainability Improvement: Clear structuring with comment blocks
- β Operational Stability Confirmation: All functionality verified
- Functional class splitting of large files
- Plugin API expansion
- Unit test addition
- Internationalization support (i18n)
- Performance optimization
This project is published under the MIT License. See the LICENSE file for details.
- PyQt6 Community
- OpenCV Contributors
- All testers and feedback providers
Video Archive Manager - The new standard for video collection management