A web version of youtube-dl
Project description
About
This is a project that builds on youtube-dl to provide a simple web-interface for downloading audio from Youtube. It’s primary purpose is to provide a LAN HTTP accessible method of saving audio to a local device.
This project is built using python’s asyncio libraries and packages include FastAPI, janus, and uvicorn. It’s also an example of how to work with youtube-dl’s python sdk and enable asynchronous downloads in the context of a web-app.
Files are downloaded using an API endpoint and then retrived from the application’s static files directory using Javascript’s fetch API. Download progress is presented via a websocket connection.
Installation
pip install web-youtube-dl
Running
CLI
Installing this project will give you access to two CLI tools, each with a separate purpose:
- web-youtube-dl-cliUseful for simply downloading the highest possible quality audio of a song.Simply provide the URL and an .mp3 will be downloaded to the package’sdownload directory or to the value of the YT_DOWNLOAD_PATH environmentvariable
- web-youtube-dlUseful for running the web service on the local machine. It willlisten to all local network connections on port 5000 (or whatever port is definedin the environment variable YT_DOWNLOAD_PORT).
Docker
This project can optionally be run and managed as a Docker container.
Build the Docker image
docker build . -t web-youtube-dl:latest --force-rm
Or, using the project’s Makefile
make container
Run the service
When running the service via Docker, you can configure where it stores downloaded songs by default and the port the service listens on by setting the appropriate environment variables.
To configure the port, set the environment variable YT_DOWNLOAD_PORT to some other numerical value.
To configure the download path, set the environment variable YT_DOWNLOAD_PATH to some other filesystem path. Note that an unprivileged user must have access to writing to this location. By default, this is set to tmp and does not really need to be changed.
docker-compose up -d
Or, using the project’s Makefile
make compose
Known Issues
- Backend issues if a single user hits submit multiple times.
“raise RuntimeError(“Response content longer than Content-Length”)”
Should probably build in some websocket Acking during broadcast.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file web-youtube-dl-0.1.5.tar.gz
.
File metadata
- Download URL: web-youtube-dl-0.1.5.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.1 CPython/3.7.9 Linux/5.4.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2e770c8490de6de7320a07094af55c2441f846ac29e687363c527614761e9e6 |
|
MD5 | 9b005eaf585b8fcb926568efe56f6382 |
|
BLAKE2b-256 | 2dfa5827c9d5866493b7868491d8d3a2cb66e25288e263e1348aa5fa9947db94 |
File details
Details for the file web_youtube_dl-0.1.5-py3-none-any.whl
.
File metadata
- Download URL: web_youtube_dl-0.1.5-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.1 CPython/3.7.9 Linux/5.4.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f06e38ebdb455c87d67aeb892a0de7a8e715650fdde6e31c6532cfec1daf7c9e |
|
MD5 | e57cbcc237342bafa64c6de1403ebff7 |
|
BLAKE2b-256 | 72aa64cf6eb69d86df55a9bbd2fdfe5b7e8ed32c003b2f849ded4b89dfdeebf5 |