123 lines
2.2 KiB
Markdown
123 lines
2.2 KiB
Markdown
![](images/icon.png)
|
|
|
|
# ydl_api_ng Web UI
|
|
|
|
This is a shitty Web UI for [ydl_api_ng](https://github.com/Totonyus/ydl_api_ng) — API around [yt-dlp](https://github.com/yt-dlp/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.
|
|
|
|
![](images/1.png)
|
|
![](images/2.png)
|
|
|
|
# Roadmap
|
|
|
|
- [x] 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
|
|
|
|
# Installation
|
|
|
|
## Docker Compose (easiest)
|
|
|
|
Copy [docker-compose.yml](docker-compose.yml) and edit if you want.
|
|
|
|
Then up containers:
|
|
|
|
```
|
|
docker compose up -d
|
|
```
|
|
|
|
ydl-web-ui will listen port 4011/tcp.
|
|
|
|
## Docker
|
|
|
|
1. [Setup ydl_api_ng](https://github.com/Totonyus/ydl_api_ng#installation).
|
|
|
|
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=http://1.2.3.4:5011 \
|
|
nxhs/ydl-web-ui:latest
|
|
```
|
|
|
|
## 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=http://1.2.3.4:5011
|
|
gunicorn --chdir=./web_ui router:app -b :3000
|
|
```
|
|
|
|
See also gunicorn deployment options: https://docs.gunicorn.org/en/latest/deploy.html
|
|
|
|
# Development
|
|
|
|
Web UI is written on Python in backend and Tailwind CSS for UI.
|
|
|
|
## Frontend
|
|
|
|
[Install Node.js](https://github.com/nvm-sh/nvm) and run in project dir:
|
|
|
|
```
|
|
npm install --dev
|
|
```
|
|
|
|
Run Tailwind CSS CLI for autorebuilding style.css:
|
|
|
|
```
|
|
make css
|
|
```
|
|
|
|
## Backend
|
|
|
|
Prepare Python virtual environment. Using pipenv:
|
|
|
|
```
|
|
pipenv install --dev
|
|
```
|
|
|
|
or:
|
|
|
|
```
|
|
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=http://127.0.0.1:5011
|
|
```
|
|
|
|
Run Bottle development server (starts `router.py` with DEBUG):
|
|
|
|
```
|
|
make run
|
|
```
|
|
|
|
Format and lint:
|
|
|
|
```
|
|
make lint
|
|
```
|