Skip to content

prefect421/mvidarr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,279 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

MVidarr

A comprehensive music video management and discovery platform that helps you organize, discover, and stream your music video collection with intelligent artist management and advanced search capabilities.

Artist Screen

✨ Key Features

  • 🎯 Advanced Artist Management - Multi-criteria search and bulk operations
  • πŸ” Comprehensive Video Discovery - Dual-source integration (IMVDb + YouTube)
  • πŸ–ΌοΈ Advanced Thumbnail Management - Multi-source search and cropping
  • πŸ“ Intelligent Organization - Automatic folder creation and cleanup
  • πŸ”Ž Advanced Search System - Real-time suggestions and filtering
  • ⚑ Bulk Operations - Multi-select editing and batch processing
  • πŸ“Ί Video Streaming - Built-in player with transcoding support
  • πŸ’š System Health Monitoring - Comprehensive diagnostics
  • βš™οΈ Database-Driven Settings - Complete configuration management
  • πŸ“₯ Download Management - Queue visualization and progress tracking
  • 🎨 Modern UI - Left sidebar navigation with theme system
  • πŸ“Ί MvTV Continuous Player - Cinematic mode for uninterrupted viewing
  • 🎭 Genre Management - Automatic genre tagging and filtering
  • πŸ” User Authentication - Role-based access control with security features
  • 🎨 Advanced Theme System - 7 built-in themes with export/import functionality

πŸš€ LATEST: v0.12.5 - Security & Bug Fixes

Released: March 19, 2026

Note: This is a pre-production release following SemVer 0.x conventions. The software is feature-complete but undergoing testing and validation before the official v1.0.0 production release.

Security Fixes βœ…

  • πŸ”’ CVE-2026-32597: PyJWT 2.8.0 β†’ 2.12.0 β€” missing crit header validation (HIGH)
  • πŸ”’ CVE-2026-32274: black 24.3.0 β†’ 26.3.1 β€” arbitrary cache file write (HIGH)

Bug Fixes βœ…

  • πŸ› #197: Docker containers no longer log git not found errors on every health check; git_branch now shown correctly in the sidebar
  • πŸ› #199: Credentials set during the installation wizard are now used for login β€” default admin/mvidarr no longer overrides the wizard setup
  • πŸ› #200: Thumbnails are now downloaded immediately when a video download completes β€” no more placeholder until the first page view; YouTube URL fallback chain added (maxresdefault β†’ hqdefault β†’ mqdefault)

Upgrade Note: No database migrations required. Docker image rebuild recommended.

🎯 Previous Releases

v0.12.4 - Scheduler & Auto-Download Fixes (February 26, 2026)

  • Auto-download scheduling priority fix, auto_download_max_videos raised from 10 to 50
  • Multiple security CVEs patched (Flask, werkzeug, Pillow, PyJWT)
  • Fixed allowed_video_types and 20+ artist settings not saving correctly

v0.12.3 - Playlist Sync & Logging (February 16, 2026)

  • VEVO/Official channel name cleanup during playlist sync
  • Celery worker logging fix, authentication added to 36 API endpoints

v0.12.2 - Authentication & Stability (February 14, 2026)

  • πŸ” API Security: Added authentication to 36 unprotected API endpoints across 6 files
  • πŸ” Global 401 Interceptor: Unauthenticated users redirected to login instead of seeing error counts
  • 🎬 Discovery Fix: Videos no longer set to WANTED when artist auto_download is disabled
  • πŸ—‘οΈ Artist Deletion: Fixed 500 error from orphaned playlist/download foreign key references
  • πŸ“Ί Playlist Auto-Sync: YouTube monitored playlists now auto-sync every 6 hours via Celery scheduled task
  • 🧹 Cleanup: Removed obsolete po-token-provider process causing FATAL crashes on startup

v0.12.1 - Security Hardening Stabilization (February 12, 2026)

  • πŸ›‘οΈ WAF Fixes: Resolved false positives blocking URLs, cookies, and Range headers
  • πŸ“Ί Video Streaming: Range header no longer blocked by security middleware
  • πŸ” Auth Bridge: Fixed Flask-to-FastAPI session bridge for consistent authentication
  • πŸ“Ί Playlist Sync: Fixed not detecting new videos in YouTube playlists
  • ⚑ Rate Limiting: Set to 300/min with static files exempt
  • πŸ”§ CI/CD: 28 files reformatted with black 24.3.0

v0.12.0 - Security Hardening Sprint (February 11, 2026)

  • πŸ” Auth Consolidation: Unified SimpleAuth + SessionStore authentication system
  • 🚫 Backdoors Removed: Eliminated /test-login and credential reset endpoints
  • πŸ”’ Bcrypt Passwords: Upgraded from SHA-256 to bcrypt with lazy migration on login
  • πŸ›‘οΈ SSRF Protection: Safe tar extraction, upload sanitization, restricted proxy hosts
  • πŸ”‘ Redis Auth: Redis authentication enabled, secure cookies enforced
  • πŸ› 49 Vulnerabilities Fixed: 8 critical, 12 high, 16 medium, 13 low

v0.11.9 - Security Updates & Video Quality (February 5, 2026)

  • 11 CVEs fixed via dependency updates
  • Video downloads now respect user quality settings (was defaulting to 360p)
  • YouTube discovery API key caching bug fixed

v0.11.8 - Thumbnail System Overhaul (February 4, 2026)

  • Complete fix of artist thumbnail system (0% β†’ 87% bulk scan success)
  • Manual thumbnail setting fixed, Google Images priority, Wikimedia compatibility
  • Redis configuration environment variables (REDIS_HOST, REDIS_PORT)

v0.11.7 - Video Filtering, Extended Discovery & Blacklist Fix (February 2, 2026)

  • Per-artist video type filtering for autodownload (Issue #191)
  • Extended YouTube discovery (live performances, concerts, acoustic versions)
  • Increased max_videos_per_discovery from 5 to 50
  • Fixed blacklist not saving info (Issue #190)

v0.11.6 - Blacklist POST Hotfix (January 2, 2026)

  • Fixed non-existent fields from blacklist POST endpoint
  • Blacklist API/model mismatch fixes
  • Pagination fixes

v0.11.0 - Scheduler V2 Release

  • Database-driven scheduling with web UI management
  • Code cleanup & optimization (71.4% size reduction)
  • Security hardening (30 issues fixed)
  • Docker architecture simplification (3-container deployment)

v0.9.8 - Subtitle System & User Testing Fixes

  • Complete subtitle implementation (WebVTT, SRT, ASS, SSA, SUB)
  • Smart YouTube language resolution
  • User testing fixes (8/8 critical issues resolved)
  • 100% Flask to FastAPI migration complete

πŸš€ Quick Start

Docker Deployment (Recommended)

Simple 3-Container Architecture:

  • mvidarr - FastAPI application + Celery worker (managed by supervisord)
  • mariadb - Database
  • redis - Cache and job queue

Installation Steps:

  1. Clone the repository:

    git clone https://github.com/prefect421/mvidarr.git
    cd mvidarr
  2. Create your environment file:

    cp .env.example .env
  3. Edit .env with your configuration:

    nano .env  # or use your preferred editor

    Required settings:

    • DB_PASSWORD - Set a secure database password
    • MYSQL_ROOT_PASSWORD - Set a secure root password
    • SECRET_KEY - Generate with: openssl rand -hex 32
    • MUSIC_VIDEOS_PATH - Path to your music video collection
  4. Start MVidarr:

    docker-compose up -d
  5. Access the application:

    • Open your browser to http://localhost:5000
    • Default login: admin / admin (change immediately)
    • Complete the first-run setup wizard

Docker Images:

  • Latest: ghcr.io/prefect421/mvidarr:latest
  • Specific version: ghcr.io/prefect421/mvidarr:v0.11.9

What's Running:

  • All background jobs (Celery) run automatically inside the main container
  • Supervisord manages both FastAPI and Celery processes
  • Simple, efficient, and optimized for home users

Manual Installation

Prerequisites:

  • Python 3.12+
  • MariaDB 11.4+ (recommended)
  • FFmpeg (for video processing)

Installation:

# Clone and setup
git clone https://github.com/prefect421/mvidarr.git
cd mvidarr
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

# Start FastAPI application
python fastapi_app.py

Production Service:

# Install as systemd service (recommended)
sudo cp mvidarr.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable mvidarr.service
sudo systemctl start mvidarr.service

# Check service status
sudo systemctl status mvidarr.service

Access: http://localhost:5000

πŸ“š Documentation

Getting Started

Advanced Topics

πŸ—οΈ Architecture

MVidarr is built with modern, high-performance architecture:

  • Backend: FastAPI (Python 3.12+) with async operations and advanced features
  • API Layer: Comprehensive FastAPI with versioning, request logging, and auto-generated clients
  • Template System: Async Jinja2 templates with performance optimization and caching
  • WebSocket Support: Native FastAPI WebSockets for real-time features
  • Background Jobs: Celery + Redis for reliable metadata enrichment and processing
  • Database: MariaDB 11.4+ with async connection pooling and optimization
  • Frontend: Modern HTML5/CSS3/JavaScript with ES6+ async patterns
  • Performance: Multi-layer caching (Memory + Redis), compression, and optimization
  • Testing: Enterprise-grade validation and load testing frameworks
  • Media Processing: FFmpeg, yt-dlp for video downloading and processing
  • Authentication: Secure user management with role-based access control
  • Security: bcrypt password hashing, session management, audit logging
  • Containerization: Optimized Docker Compose with multi-stage builds, automated monitoring, and 1.41GB production images

πŸ”§ Configuration

Configuration is managed through:

  • Database settings (preferred for production)
  • Environment variables
  • Docker Compose environment files

Key environment variables:

# Database
DB_HOST=mariadb
DB_PASSWORD=secure_password
SECRET_KEY=your-secret-key

# External APIs
IMVDB_API_KEY=your-imvdb-key
YOUTUBE_API_KEY=your-youtube-key

# Background Jobs (New!)
REDIS_URL=redis://redis:6379/0
CELERY_BROKER_URL=redis://redis:6379/0
BACKGROUND_JOBS_ENABLED=true

πŸ›‘οΈ Security

MVidarr includes comprehensive security features:

  • Multi-user authentication with role-based access (Admin, Manager, User, ReadOnly)
  • Secure password hashing with bcrypt
  • Session management with secure tokens and expiration
  • Account lockout protection against brute force attacks
  • Password reset functionality with secure tokens
  • Audit logging for user actions and system events
  • SQL injection prevention with parameterized queries and ORM
  • Docker security with non-root containers and isolated networking

🎯 Use Cases

  • Personal Music Video Collections - Organize and stream your collection
  • Music Discovery - Find new videos through integrated search
  • Media Center Integration - Works with Plex and other media servers
  • Home Entertainment - MvTV mode for continuous viewing
  • Music Research - Advanced search and filtering capabilities

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

  1. Fork the repository
  2. Create a virtual environment: python -m venv venv
  3. Activate it: source venv/bin/activate (Linux/macOS) or venv\Scripts\activate (Windows)
  4. Install dev dependencies: pip install -r requirements.txt
  5. Run tests: pytest

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • yt-dlp - Video download and processing
  • IMVDb - Music video metadata database
  • YouTube API - Video discovery and streaming
  • Flask - Web framework
  • MariaDB - Database engine

πŸ“ž Support

  • Documentation: Check the docs/ directory
  • Issues: Report bugs via GitHub Issues
  • Community: Join our discussions

MVidarr v0.11.9 - Built with ❀️ for music video enthusiasts

About

MVidarr - The Music Video Management System

Resources

License

MIT, GPL-3.0 licenses found

Licenses found

MIT
LICENSE
GPL-3.0
LICENSE.md

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors