- Python 99.6%
- Makefile 0.1%
|
|
||
|---|---|---|
| anubis | ||
| bundle | ||
| devscripts | ||
| web | ||
| yt_dlp | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .pre-commit-hatch.yaml | ||
| Changelog.md | ||
| CONTRIBUTING.md | ||
| CONTRIBUTORS | ||
| cookies.txt | ||
| docker-compose.yml | ||
| Dockerfile | ||
| entrypoint.sh | ||
| LICENSE | ||
| Maintainers.md | ||
| Makefile | ||
| public.key | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| SECURITY.md | ||
| supportedsites.md | ||
| THIRD_PARTY_LICENSES.txt | ||
| yt-dlp.cmd | ||
| yt-dlp.conf | ||
| yt-dlp.sh | ||
yt-mp3-ui
A self-hosted web app for downloading music as MP3 from YouTube, powered by yt-dlp.
About this fork
This is a fork of github.com/Samive/yt-dlp-web. It changes the upstream video downloader into a focused music downloader. The differences from upstream:
- Music only — every download is extracted to 320K MP3 with metadata and an embedded thumbnail. The format selector is gone; there is nothing to choose.
- French interface — the whole UI and its messages are in French.
- Light and dark mode — a theme toggle in the header, defaulting to your operating system preference.
- Auto-updating yt-dlp — the latest yt-dlp is pulled on container startup, so downloads keep working as sites change.
Features
- Paste any YouTube (or supported site) URL and fetch track info instantly
- View thumbnail, title, uploader, duration, views, likes, and upload date
- One-click download to 320K MP3 with metadata and embedded cover art
- Live download progress with percentage, speed, and ETA
- Cancel a download at any time
- Light and dark themes following your OS preference, with a manual toggle
Quick Start with Docker Compose
git clone https://git.riou.xyz/jriou/yt-mp3-ui.git
cd yt-mp3-ui
docker compose up -d --build
Then open http://localhost:8000 in your browser.
Downloads are written to the downloads volume (see docker-compose.yml). yt-dlp is upgraded to the latest release each time the container starts.
Stop / remove
docker compose down -v
Build from Source
Prerequisites
- Docker installed
Build and run
docker build -t yt-mp3-ui .
docker run -d -p 8000:8000 \
--name yt-dlp-ui yt-dlp-ui
Open http://localhost:8000.
Run without Docker (Development)
Prerequisites
- Python 3.10+
- ffmpeg installed and on PATH (download)
Setup
# Install dependencies
pip install yt-dlp fastapi "uvicorn[standard]" httpx
# Start the server
python -m uvicorn web.backend.main:app --reload --port 8000
Open http://localhost:8000.
Auto-update at startup is handled by the container entrypoint. When running the server directly, upgrade yt-dlp yourself with
pip install -U yt-dlp.
Usage Guide
- Paste a URL — paste any YouTube or supported site link into the input field and click Rechercher
- Review track info — thumbnail, title, uploader, duration, views, likes, and upload date are shown
- Download — click Télécharger and watch the live progress bar. The file is saved as a 320K MP3
- Cancel — click Annuler at any time to stop the download
Use the sun/moon button in the header to switch between light and dark modes. Your choice is remembered.
YouTube authentication (optional)
Some videos require sign-in. Export your cookies using the Get cookies.txt LOCALLY browser extension and mount them:
docker run -d \
-p 8000:8000 \
-v $(pwd)/cookies.txt:/app/web/backend/cookies.txt:ro \
--name yt-mp3-ui \
yt-mp3-ui
Note: Using cookies with Chrome on Windows may cause issues due to DPAPI encryption. Firefox or Edge cookies work more reliably.
Tech Stack
- Backend — Python, FastAPI, yt-dlp
- Frontend — Vanilla HTML/CSS/JS (no framework)
- Container — Docker with ffmpeg
License
This project uses yt-dlp which is licensed under The Unlicense.