YT-SP

MediaVault - Advanced Multi-Format Video & Audio Downloader

A high-performance video/audio downloader with support for YouTube, Instagram, TikTok, Twitter/X, and 100+ platforms via yt-dlp.

MediaVault Python License

✨ Features

Core Features

Performance

UI/UX

📋 Requirements

System Requirements

Python Dependencies

🚀 Installation

1. Install FFmpeg

Windows (using Chocolatey):

choco install ffmpeg

Windows (manual):

  1. Download from https://ffmpeg.org/download.html
  2. Extract to C:\ffmpeg
  3. Add C:\ffmpeg\bin to your PATH

macOS:

brew install ffmpeg

Linux (Ubuntu/Debian):

sudo apt update && sudo apt install ffmpeg

2. Clone & Setup

# Navigate to the project directory
cd yt

# Create virtual environment (recommended)
python -m venv venv

# Activate virtual environment
# Windows:
.\venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# Install Python dependencies
pip install -r backend/requirements.txt

3. Run the Application

# Start the backend server
python backend/app.py

The server will start at http://localhost:5000

Open your browser and navigate to http://localhost:5000 to use the app.

💻 Usage

Basic Usage

  1. Paste URLs: Enter one or more video URLs in the text area (one per line)
  2. Fetch Videos: Click “Fetch Videos” to retrieve metadata
  3. Configure Settings: Adjust resolution, format, or enable audio-only per video
  4. Start Downloads: Click “Start All” to begin downloading

Playlist Support

The app automatically detects playlist URLs and expands them:

Per-Video Settings

Each video card allows you to customize:

Batch Settings

Use the “Batch Settings” panel to apply settings to all videos at once:

  1. Select desired resolution and format
  2. Enable audio-only if needed
  3. Click “Apply to All”

Keyboard Shortcuts

Shortcut Action
Ctrl + Enter Fetch Videos
Ctrl + Shift + Enter Start All Downloads
H Open History
S Open Settings
Esc Close Modals

📁 Project Structure

yt/
├── backend/
│   ├── app.py              # Flask backend with yt-dlp integration
│   └── requirements.txt    # Python dependencies
├── frontend/
│   ├── index.html          # Main HTML structure
│   ├── styles.css          # CSS with dark theme & animations
│   └── app.js              # Frontend JavaScript application
└── README.md               # This file

🔧 Configuration

Download Directory

By default, downloads are saved to ~/Downloads/VideoDownloader/. You can change this in the Settings modal.

Subfolder Creation

When enabled (default), the app creates:

🛡️ Security

🐛 Troubleshooting

“yt-dlp not found”

Make sure yt-dlp is installed:

pip install --upgrade yt-dlp

“FFmpeg not found”

Ensure FFmpeg is installed and in your PATH:

ffmpeg -version

“Connection refused”

Check that the backend server is running on port 5000.

Video not downloading

  1. Check if the URL is supported (try yt-dlp URL directly)
  2. Update yt-dlp: pip install --upgrade yt-dlp
  3. Check the console/logs for error messages

📝 API Reference

Endpoints

Method Endpoint Description
POST /api/info Fetch video metadata
POST /api/download Start downloads
GET /api/status Get all download statuses
GET /api/status/<id> Get specific download status
POST /api/cancel/<id> Cancel a download
GET /api/events SSE stream for real-time progress
GET /api/history Get download history
POST /api/clear-history Clear download history

📄 License

MIT License - feel free to use and modify as needed.

🙏 Acknowledgments