/yanic

yt-dlp HTTP server

Primary LanguagePython

Yanic

Async yt-dlp server

HTTP protocol

Why

Spawning a new Python interpreter for each download is slow

Dev Env

brew install go-task pipx bun
pipx install poetry

Development

task poetry
task start

Testing

Uses ResponsibleAPI to verify the server

task tests

Deployment

Uses shiv to build a zipapp. Modify --platform manylinux2014_x86_64 --python-version 310 to your needs in the Taskfile

task build
# rsync yanic.pyz to server
PORT=8006 ./yanic.pyz

Yanic is leaking memory, and is killed every N requests. See Uvicorn --limit-max-requests. Use systemd or similar to restart it.