Skip to main content

A web version of youtube-dl

Project description

PyPi Package Compatible Python Versions

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-cli
    Useful for simply downloading the highest possible quality
    audio of a song. Simply provide the URL and an .mp3 will be downloaded to that
    same directory
  • web-youtube-dl
    Useful for running the web service on the local machine. It will
    listen to all local network connections on port 5000 (or whatever port is defined
    in 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

web-youtube-dl-0.1.4.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

web_youtube_dl-0.1.4-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file web-youtube-dl-0.1.4.tar.gz.

File metadata

  • Download URL: web-youtube-dl-0.1.4.tar.gz
  • Upload date:
  • Size: 15.1 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

Hashes for web-youtube-dl-0.1.4.tar.gz
Algorithm Hash digest
SHA256 181d37e4f2e4a45b9700c9c91d640c039eb7583b4f8895bd4df24fd60863798a
MD5 2a37edd38eafe1ecb4b981a62b5aac52
BLAKE2b-256 e6793876181dd0d004a67fdf2b439785ccf30b1820e162e67ad52b1eaa531ce0

See more details on using hashes here.

File details

Details for the file web_youtube_dl-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: web_youtube_dl-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 15.3 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

Hashes for web_youtube_dl-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 94d217ea6810200e8c4b953479640be4be199d7d372097de151c79d284347e07
MD5 af919bf58668c7af08cd9b40bd13a785
BLAKE2b-256 5606811c53b1099a4b88e0e146a5bdcc9a189ed12d4175c7de42d089610fbf97

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page