Skip to content

unhaya/VAM-original

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Video Archive Manager (VAM) Ver5.70

🎬 Integrated Solution for Large-Scale Video Collection Management

A comprehensive video archive management system integrating video file management, automatic thumbnail generation, and preview functionality.


πŸ“’ About This Repository

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.


✨ Key Features

πŸ“ File Management

  • 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

πŸ–ΌοΈ Thumbnails & Preview

  • Automatic Thumbnail Generation: High-quality grid image generation from videos
  • Dynamic Preview: Real-time video preview functionality
  • Grid Marker: Visual marking of playback position

🧺 Basket Feature

  • 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

🎡 Media Playback

  • 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

πŸ”§ Advanced Management Features

  • Metadata Management: Comments, tags, custom information
  • Database Integration: Fast data management with SQLite
  • Backup: Automatic data backup functionality
  • Plugin System: Extensible architecture

πŸ—οΈ System Architecture

Code Scale

  • Total Lines: ~100,000 lines (Python files)
  • File Count: 200+ modules
  • Organized: 45,000+ lines systematically organized

Major Components

Core Components

  • main_window.py (2,894 lines) - Main application window
  • directory_tree.py (3,900 lines) - Directory management system
  • player_dock_widget.py (3,568 lines) - Video player interface
  • preview_window.py (4,748 lines) - Preview & thumbnail display

Data Management

  • database_manager.py (1,626 lines) - Database operations
  • thumbnail_generator.py (2,011 lines) - Thumbnail generation engine
  • settings_manager.py (714 lines) - Settings management system

User Interface

  • basket_widget.py (1,385 lines) - Basket feature UI
  • tree_search_manager.py (1,354 lines) - Search functionality system
  • grid_marker_manager.py (1,206 lines) - Grid marker management

πŸ› οΈ Technology Stack

Frameworks & Libraries

  • 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

Architecture Patterns

  • Singleton Pattern: Settings & database management
  • Factory Pattern: Player & repository creation
  • Observer Pattern: UI updates & event management
  • Strategy Pattern: File processing & search functionality

πŸ“‹ Operating Environment

System Requirements

  • OS: Windows 10/11, macOS, Linux
  • Python: 3.8 or higher
  • RAM: 4GB+ recommended (for large collections)
  • Storage: 1GB+ free space for cache

Dependencies

PyQt6>=6.4.0
Pillow>=9.0.0
opencv-python>=4.5.0
numpy>=1.21.0

πŸš€ Installation & Setup

1. Clone Repository

git clone https://github.com/unhaya/VAM-original.git
cd VAM-original

2. Install Dependencies

pip install -r requirements.txt

3. Launch Application

python main.py

πŸ“– Usage

Initial Setup

  1. Launch the application
  2. Specify video folder in "Settings"
  3. Adjust thumbnail generation settings
  4. Confirm database initialization complete

Basic Operations

  1. Folder Selection: Select video folder from left tree
  2. Preview: Check thumbnail preview in central area
  3. Playback: Double-click to play with built-in player
  4. Basket: Add to basket from right-click menu

🎯 Code Quality & Structure

Internal Organization

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
# ==========================================

Maintainability Features

  • 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

πŸ—‚οΈ Project Structure

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

πŸ”„ Development & Maintenance

Recent Major Update (September 2024)

  • βœ… 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

Future Improvements

  • Functional class splitting of large files
  • Plugin API expansion
  • Unit test addition
  • Internationalization support (i18n)
  • Performance optimization

πŸ“„ License

This project is published under the MIT License. See the LICENSE file for details.

πŸ™ Acknowledgments

  • PyQt6 Community
  • OpenCV Contributors
  • All testers and feedback providers

Video Archive Manager - The new standard for video collection management

About

Original VAM Desktop application - Foundation for VAM-Seek's algorithms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors