Go to file
ge c42fdb2127 upd 2023-02-19 22:03:40 +03:00
images add smaller icon 2023-02-19 01:50:22 +03:00
web_ui add version, handle channel 2023-02-19 22:02:35 +03:00
.gitignore upd 2023-02-19 22:03:40 +03:00
COPYING add license 2023-02-19 21:54:05 +03:00
Dockerfile add docker 2023-02-19 22:03:19 +03:00
Makefile add docker 2023-02-19 22:03:19 +03:00
Pipfile init 2023-02-19 01:32:35 +03:00
Pipfile.lock init 2023-02-19 01:32:35 +03:00
README.md add docker 2023-02-19 22:03:19 +03:00
docker-compose.yml add docker 2023-02-19 22:03:19 +03:00
input.css init 2023-02-19 01:32:35 +03:00
package-lock.json init 2023-02-19 01:32:35 +03:00
package.json init 2023-02-19 01:32:35 +03:00
requirements.txt init 2023-02-19 01:32:35 +03:00
tailwind.config.js init 2023-02-19 01:32:35 +03:00


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
    • vk.com
  • 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: https://docs.gunicorn.org/en/latest/deploy.html


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 router.py with DEBUG):

make run

Format and lint:

make lint