Skip to main content

YouTube Music playlist downloader with album art, metadata and lyrics

Project description

elizato-dl 🎵

A command-line tool that downloads YouTube Music playlists as MP3s (or FLAC, M4A, WAV, OPUS) with full album art, metadata tags, and synced lyrics — so your music library actually looks the way it's supposed to.

Made by Elizato Winston — first year Software Engineering student at the University of Buea 🇨🇲


Why this exists

Every music downloader I tried either stripped the album art, lost the metadata or just dumped a messy pile of files on my laptop. As a graphic designer, that was unacceptable. So I built the solution myself.


Installation

pip install elizato-dl

Requirements: Python 3.10+, ffmpeg on your PATH


Quick Start

# Download a playlist as MP3 with lyrics
elizato-dl download "https://music.youtube.com/playlist?list=PL..." --cookies cookies.txt --lyrics

# Download as FLAC
elizato-dl download "https://music.youtube.com/playlist?list=PL..." -f flac --cookies cookies.txt

# Save metadata to a manifest file first, then download
elizato-dl fetch "https://music.youtube.com/playlist?list=PL..." --cookies cookies.txt
elizato-dl download manifest.json --cookies cookies.txt --lyrics

Cookie Setup (Required)

YouTube requires authentication to serve audio streams. You need to export your browser cookies:

  1. Install the Get cookies.txt LOCALLY Chrome extension
  2. Go to youtube.com while logged in
  3. Click the extension → Export → save as cookies.txt in your working directory
  4. Pass it with --cookies cookies.txt

Cookies expire — if you get 403 errors, re-export them.


Commands

download

elizato-dl download <URL or manifest.json> [options]

Options:
  -o, --output DIR        Output directory (default: ./music)
  -f, --format FORMAT     Audio format: mp3, m4a, opus, flac, wav (default: mp3)
  --lyrics                Fetch and embed synced lyrics after download
  --no-thumbnail          Skip embedding album art
  --cookies FILE          Path to cookies.txt
  --browser BROWSER       Read cookies from browser (must be closed)

fetch

elizato-dl fetch <URL> [options]

Options:
  -o, --output FILE       Output manifest file (default: manifest.json)
  --cookies FILE          Path to cookies.txt

What you get

Each downloaded track includes:

  • 🎵 Highest quality audio available
  • 🖼️ Album art embedded in the file
  • 🏷️ Full metadata tags (artist, album, title, year)
  • 📝 Synced lyrics embedded + .lrc file saved alongside (with --lyrics)

Support the project

If elizato-dl saved you time, feel free to donate:

BTC (BEP20): 0x0cEDD7d8f78B45fbA25B05Ada32eB37F7c193590


License

MIT — free to use, modify and distribute.

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

elizato_dl-1.0.1.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elizato_dl-1.0.1-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file elizato_dl-1.0.1.tar.gz.

File metadata

  • Download URL: elizato_dl-1.0.1.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for elizato_dl-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a746f497ae578606fa677a47c1dc52ee3b3ff45a3aed26b8387bc0f926401d85
MD5 db4c8d87d4f5a17f5e4fa387e1e1eafc
BLAKE2b-256 ca5c898166841bb1a26600c0819117e190104a0dbbca86bac49f3ba8175e95a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for elizato_dl-1.0.1.tar.gz:

Publisher: publish.yml on elizatowinston-dev/elizato-dl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file elizato_dl-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: elizato_dl-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for elizato_dl-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9c3068316027817f8bdd58c5ed5830063d18dc4eb7bfa1e20f74dea5a0ff93a2
MD5 75f7de7c878b455f50760b3c511d1996
BLAKE2b-256 22ce65fd079d700c544f8f5d57a18c3e19997c2b9d5f82efa749d57fa5186181

See more details on using hashes here.

Provenance

The following attestation bundles were made for elizato_dl-1.0.1-py3-none-any.whl:

Publisher: publish.yml on elizatowinston-dev/elizato-dl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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