youtube-downloader / README.md
prasanthntu's picture
Update README.md (#2)
1f76a43 verified

A newer version of the Gradio SDK is available: 5.21.0

Upgrade
metadata
title: Youtube Downloader
emoji: 🦀
colorFrom: pink
colorTo: gray
sdk: gradio
sdk_version: 5.12.0
python_version: 3.11.5
app_file: app.py
pinned: false

YouTube Downloader

This application uses

  • yt_dlp - For downloading Audio/Video from YouTube and YoutTube Music.
  • HF gradio - For UI.

Gradio UI screenshot - Sample 1

Running locally

Installation

  • First, install python 3.11.5 (preferrably in a virtual environment).
  • Then, install by running pip install gradio==5.9.1
  • Finally, install remaining libraries by running pip install -r requirements.txt

Start the service

gradio app.py # For iterative developments

or

python app.py

View in browser

Hit the browser at http://127.0.0.1:7860/

Running in Hugging Face Spaces

Cookies setup details

If running locally, the code will work right away. This setup is only needed if running in hugging face (HF) spaces or other deployments to avoid bot related errors as shown below.

ERROR - Download error: AAq06bS8UZM: Sign in to confirm you’re not a bot. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies. Also see  https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies  for tips on effectively exporting YouTube cookies

Using this approach in publicly deployed services is discouraged, as the YouTube algorithm may disable the entire YouTube account from which the cookies are downloaded after continued use.

  1. Download the YouTube Cookies locally
    • Follow the instruction provided here to download the YouTube cookies.
    • Rename the downloaded cookie as cookies.firefox-private.txt and place it in the current working directory
  2. Convert cookie file content to .env file locally
    • Simple copy paste will not work due to special characters
    • So, we will use the cookies_to_env function.
      • Uncomment the # Convert cookie file to env and save locally section and run the code
    • Remember to comment the code once the .env file is updated.
  3. Set up or Update the Secrets in HF
    • Copy the .env content (only the value, and not the key) and paste it inside the HF Secrets (Private) > FIREFOX_COOKIES in Hugging Face space.
  4. Deploy the changes to HF space, and Voila!

.env file structure

FIREFOX_COOKIES="<Formatted_Cookie_Content_Goes_Here>"
USE_FIREFOX_COOKIES="False" # Set to "True" to use cookies

Additional resources

  • Check out the configuration (and README metadata) reference here

Potential Improvements

  • Making the code async.
  • Add support for playlists.
  • Overcome youtube bot issue for publicly deployed service.