Skip to content

mbnoimi/yt-dlp-Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

yt-dlp Manager

Palestine Flag Syria Flag Ukraine Flag

πŸ•ŠοΈ Freedom for Palestine, Ukraine, Syria, and all nations fighting against tyrants πŸ•ŠοΈ

Free Palestine β€’ Free Syria β€’ Peace for Ukraine


yt-dlp Manager Logo

A powerful web-based download manager for YouTube, Vimeo, and thousands of other video sites

Features β€’ Installation β€’ Quick Start β€’ How to Use β€’ Docker β€’ Configuration


✨ Features

  • πŸ‘₯ Multi-User Support - Create accounts for family or team members with isolated data folders
  • πŸ“ Organized Downloads - Organize downloads by folders with custom configurations
  • πŸ“… Scheduled Downloads - Set up automatic download schedules using cron expressions
  • πŸ”΄ Real-time Progress - Watch download progress live in your browser via SSE streaming
  • πŸ”„ Automatic Retries - Handles connection issues gracefully
  • πŸ“ Subtitle Support - Download subtitles in multiple languages
  • πŸ“Έ Metadata - Saves video info, thumbnails, and descriptions
  • πŸͺ Cookie Support - Upload cookies for restricted content
  • πŸ”— Deduplication - Global storage with symlinks to avoid re-downloading
  • βš™οΈ Server Manager - Admin panel for system status, user management, and logs

πŸ“¦ Installation

Docker (Recommended)

Docker Compose

services:
  yt-dlp-manager:
    image: mbnoimi/yt-dlp-manager:latest
    container_name: yt-dlp-manager
    ports:
      - "4000:4000"
    volumes:
      - ./data:/app/data
      - ./logs:/app/backend/logs
    environment:
      - BACKEND_SECRET_KEY=your-secret-key-change-in-production
      - ADMIN_USERNAME=admin
      - ADMIN_PASSWORD=pass
    restart: unless-stopped

Then

docker-compose up -d

Direct Command

docker run -d \
  --name yt-dlp-manager \
  -p 4000:4000 \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/logs:/app/backend/logs \
  -e BACKEND_SECRET_KEY=your-secret-key-change-in-production \
  -e ADMIN_USERNAME=admin \
  -e ADMIN_PASSWORD=pass \
  --restart unless-stopped \
  mbnoimi/yt-dlp-manager:latest

The image is automatically pulled from Docker Hub.


πŸš€ Quick Start

  1. Open http://localhost:4000
  2. Login with default credentials:
    • Username: admin
    • Password: pass
  3. Create a datasource and start downloading!

πŸ“– How to Use

1. Create a Datasource

A datasource combines your download settings with the URLs you want to download.

  1. Click + New in the Datasources section
  2. Enter a name (e.g., "YouTube Music")

2. Add URLs

In the URLs tab:

  • Add YouTube channels, playlists, or single videos
  • Organize into folders

3. Configure Options

In the Config tab:

  • Choose video quality (720p, 1080p, 4K, etc.)
  • Set output filename format
  • Enable subtitles
  • Add cookies for restricted content

4. Download

Click the Download button and watch progress in real-time!

5. Manage Files

Browse, rename, or delete downloaded files in the Files tab.


πŸͺ Cookies

Some videos require YouTube login. To download them:

  1. Export cookies from your browser (use a "Get cookies.txt" browser extension)
  2. In your datasource, click the gear icon β†’ Upload cookies
  3. Save your config

πŸ“… Scheduler

Schedule downloads to run automatically:

  1. Go to the Scheduler tab
  2. Create a new task
  3. Set when to run (e.g., 0 2 * * * = every day at 2 AM)
  4. Choose which datasource to download

Cron Examples

Expression Description
0 2 * * * Every day at 2 AM
0 9 * * 0 Every Sunday at 9 AM
0 */6 * * * Every 6 hours

πŸ–₯️ Admin

The admin can:

  • Create and manage user accounts
  • View all downloads across users
  • Monitor server status (CPU, memory, disk)
  • Upgrade yt-dlp to latest version
  • Configure server settings
  • Browse server files
  • View backend logs

🐳 Docker

Quick Start

# Pull and run from Docker Hub
docker-compose up -d

The application is available at http://localhost:4000

Image

Environment Variables

Variable Default Description
BACKEND_SECRET_KEY - JWT signing key
ADMIN_USERNAME admin Default admin username
ADMIN_PASSWORD pass Default admin password
BACKEND_MAX_CONCURRENT_DOWNLOADS 3 Max parallel downloads
BACKEND_DEDUPLICATION_ENABLED true Enable deduplication
ALLOW_NEW_USERS false Allow user registration

πŸ› οΈ Technology Stack

Backend

  • Framework: FastAPI - Modern Python web framework
  • Database: SQLite with SQLAlchemy ORM
  • Download Engine: yt-dlp - YouTube downloader
  • Auth: JWT-based multi-user authentication
  • Server: Uvicorn ASGI server

Frontend

  • Framework: Svelte 5 - Cybernetically enhanced web apps
  • Build Tool: Vite - Next generation frontend tooling
  • Styling: Tailwind CSS 4 - Utility-first CSS
  • UI Components: Skeleton UI - Svelte component library

πŸ“‚ Project Structure

yt-dlp Manager/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ backend/              # FastAPI application
β”‚   β”‚   β”œβ”€β”€ api/v1/          # API endpoints
β”‚   β”‚   β”œβ”€β”€ core/            # Config, security, deps
β”‚   β”‚   β”œβ”€β”€ db/              # Database models & sync
β”‚   β”‚   β”œβ”€β”€ services/        # Downloader, scheduler
β”‚   β”‚   └── main.py          # Entry point
β”‚   β”‚
β”‚   β”œβ”€β”€ frontend/             # Svelte SPA
β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”œβ”€β”€ lib/         # Components, pages, stores
β”‚   β”‚   β”‚   β”œβ”€β”€ App.svelte   # Root component
β”‚   β”‚   β”‚   └── main.ts      # Entry point
β”‚   β”‚   └── package.json
β”‚   β”‚
β”‚   └── data/                # User data
β”‚       └── <username>/
β”‚           β”œβ”€β”€ downloads/   # Downloaded files
β”‚           β”œβ”€β”€ configs/     # Config JSON files
β”‚           └── urls/       # URL JSON files
β”‚
β”œβ”€β”€ docker-compose.yml        # Docker deployment
└── .env                    # Configuration

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a new branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests
  5. Commit your changes
  6. Push to the branch
  7. Open a Pull Request

πŸ“„ License

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


πŸ™ Acknowledgments

  • yt-dlp - The amazing download engine
  • FastAPI - The powerful Python framework
  • Svelte - The wonderful UI framework
  • Skeleton UI - Beautiful Svelte components
  • All contributors who help improve this project

Made with ❀️ by a Syrian developer who believes in freedom for Palestine, Ukraine, Syria, and any nation standing against tyrants

⭐ Star this repo if you find it useful!

About

yt-dlp Manager is a feature-rich download manager for the yt-dlp engine, supporting thousands of websites and offering multi-user capabilities.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors