No description
Find a file
Abdulmohsen 984d47e946
Some checks failed
Build Native wrappers / build (amd64, ubuntu-latest) (push) Has been cancelled
Build Native wrappers / build (amd64, windows-latest) (push) Has been cancelled
Build Native wrappers / build (arm64, macos-latest) (push) Has been cancelled
Build Native wrappers / build (arm64, ubuntu-latest) (push) Has been cancelled
Build Native wrappers / build (arm64, windows-latest) (push) Has been cancelled
Merge pull request #402 from arabcoders/dev
Enhance file browser API
2025-09-01 19:56:16 +03:00
.github allow updating github release notes 2025-08-31 02:12:44 +03:00
.vscode add DEBIAN_FRONTEND 2025-08-31 01:21:45 +03:00
app Refactor arg_converter usage to remove logging of removed options in Item and YTDLPOpts classes 2025-09-01 19:35:35 +03:00
ui Enhance file browser API and dialog components 2025-09-01 19:35:25 +03:00
var new start 2023-12-01 16:49:52 +03:00
.dockerignore improve build process include linux/arm64 2025-01-23 18:03:24 +03:00
.editorconfig updated some type checks 2024-12-19 22:58:33 +03:00
.gitignore Update the pyinstaller build to include version number. 2025-08-01 17:31:18 +03:00
API.md migrated /api/archive to /api/history/{id}/archive 2025-08-29 18:41:13 +03:00
app.spec more fixes. 2025-08-26 00:21:24 +03:00
Dockerfile pip is so slow using arm64 during build 2025-08-31 01:48:16 +03:00
entrypoint.sh WIP: more changes to support webview in the future. 2025-06-08 23:45:00 +03:00
FAQ.md finalizing removed features 2025-08-30 01:50:42 +03:00
healthcheck.sh Fix healthcheck when used with base_path 2025-06-09 20:18:45 +03:00
LICENSE Working multi download support. 2024-01-10 14:44:56 +03:00
pyproject.toml handle redirection for thumbnails. 2025-08-27 19:52:35 +03:00
README.md update README 2025-08-24 17:00:08 +03:00
sc_short.png Update README for clarity and improve installation instructions for podman and unraid. 2025-06-04 22:08:52 +03:00
uv.lock updated external packages 2025-08-30 01:58:24 +03:00

YTPTube

Build Status MIT License Docker pull

YTPTube is a web-based GUI for yt-dlp, designed to make downloading videos from YouTube and other video platforms easier and more user-friendly. It supports downloading playlists, channels, and live streams, and includes features like scheduling downloads, sending notifications, and a built-in video player.

Short screenshot

YTPTube Features.

  • Multi-download support.
  • Random beautiful background.
  • Handles live and upcoming streams.
  • Schedule channels or playlists to be downloaded automatically.
  • Send notification to targets based on selected events. includes Apprise support.
  • Support per link options.
  • Queue multiple URLs.
  • Powerful presets system for applying yt-dlp options.
  • File browser.
  • A built in video player with support for sidecar external subtitles.
  • Basic authentication support.
  • Supports curl-cffi. See yt-dlp documentation
  • Bundled pot provider. See yt-dlp documentation
  • Automatic updates for yt-dlp and custom pip packages.
  • Basic mode UI for non-technical users.
  • Conditions feature.
  • Custom browser extensions, bookmarklets and iOS shortcuts to send links to YTPTube instance.
  • A Bundled executable version for Windows, macOS and Linux.

Please read the FAQ for more information.

Installation

Run using docker command

mkdir -p ./{config,downloads} && docker run -d --rm --user "$UID:${GID-$UID}" --name ytptube \
-p 8081:8081 -v ./config:/config:rw -v ./downloads:/downloads:rw \
ghcr.io/arabcoders/ytptube:latest

Then you can access the WebUI at http://localhost:8081.

Note

If you are using podman instead of docker, you can use the same command, but you need to change the user to 0:0 it will appears to be running as root, but it will run as the user who started the container.

Using compose file

The following is an example of a compose.yaml file that can be used to run YTPTube.

services:
  ytptube:
    user: "${UID:-1000}:${UID:-1000}" # change this to your user id and group id, for example: "1000:1000"
    image: ghcr.io/arabcoders/ytptube:latest
    container_name: ytptube
    restart: unless-stopped
    ports:
      - "8081:8081"
    volumes:
      - ./config:/config:rw
      - ./downloads:/downloads:rw
    tmpfs:
      - /tmp

Important

Make sure to change the user line to match your user id and group id

$ mkdir -p ./{config,downloads} && docker compose -f compose.yaml up -d

Then you can access the WebUI at http://localhost:8081.

Note

you can use podman-compose instead of docker-compose, as it supports the same syntax. However, you should change the user to 0:0 it will appears to be running as root, but it will run as the user who started the container.

Unraid

For Unraid users You can install the Community Applications plugin, and search for ytptube it comes pre-configured.

API Documentation

For simple API documentation, you can refer to the API documentation.

Disclaimer

This project is not affiliated with YouTube, yt-dlp, or any other service. It's a personal project that was created to make downloading videos from the internet easier. It's not intended to be used for piracy or any other illegal activities.

Social contact

If you have short or quick questions, you are free to join my discord server and ask the question. keep in mind it's solo project, as such it might take me a bit of time to reply.

Donation

If you feel like donating and appreciate my work, you can do so by donating to children charity. For example Make-A-Wish.