You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ge c42fdb2127 upd 1 month ago
images add smaller icon 1 month ago
web_ui add version, handle channel 1 month ago
.gitignore upd 1 month ago
COPYING add license 1 month ago
Dockerfile add docker 1 month ago
Makefile add docker 1 month ago
Pipfile init 1 month ago
Pipfile.lock init 1 month ago add docker 1 month ago
docker-compose.yml add docker 1 month ago
input.css init 1 month ago
package-lock.json init 1 month ago
package.json init 1 month ago
requirements.txt init 1 month ago
tailwind.config.js init 1 month ago

ydl_api_ng Web UI

This is a shitty Web UI for ydl_api_ng — API around yt-dlp.

This UI is written for my personal use and may not have the features you would like to see. I want to gradually expand its capabilities, if there is time for this.


  • Add Dockerfile and docker-compose.yml
  • Handle non-youtube links
    • Twitter
    • Nicovideo
  • Handle unsupported URLs
  • YouTube playlists download
  • Advanced settings
  • Direct link to downloaded video


Docker Compose (easiest)

Copy docker-compose.yml and edit if you want.

Then up containers:

docker compose up -d

ydl-web-ui will listen port 4011/tcp.


  1. Setup ydl_api_ng.

  2. Install Web UI.

You must specify your ydl_api_ng instance host as YDL_API_HOST environment variable.

docker run -d \
    --name ydl_web_ui \
    -p 4011:3000 \
    -e YDL_API_HOST= \

Without Docker

Use python 3.6 or newer.

Replace YDL_API_HOST value to your actual ydl_api_ng instance URL.

python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
pip install gunicorn
export YDL_API_HOST=
gunicorn --chdir=./web_ui router:app -b :3000

See also gunicorn deployment options:


Web UI is written on Python in backend and Tailwind CSS for UI.


Install Node.js and run in project dir:

npm install --dev

Run Tailwind CSS CLI for autorebuilding style.css:

make css


Prepare Python virtual environment. Using pipenv:

pipenv install --dev


python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
pip install black pylint

Set YDL_API_HOST environment variable. Put your ydl_api_ng instance URL:

export YDL_API_HOST=

Run Bottle development server (starts with DEBUG):

make run

Format and lint:

make lint