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.1.0.tar.gz (12.9 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.1.0-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: elizato_dl-1.1.0.tar.gz
  • Upload date:
  • Size: 12.9 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.1.0.tar.gz
Algorithm Hash digest
SHA256 54b58c49ff201ef42a90411a24d05247e2caabaab757b9fa69d253b8d8eb24b2
MD5 1a50bcedeedf3da97738c052f266c73b
BLAKE2b-256 bf187aac13f3848bb36b09cff11e4a2fd1be6f24c2e1b57aa72bf9a3be4e369d

See more details on using hashes here.

Provenance

The following attestation bundles were made for elizato_dl-1.1.0.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: elizato_dl-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.4 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 90d5bc80aa9ed21b17012048ca4e03cf067b250afaa870ba41bcb4d5d48dcd58
MD5 8ca106b35da6d26845190355979415ca
BLAKE2b-256 e86afc1055c908d5c1e704ff9aa96dd406026f44668a517405d519f8a25b212a

See more details on using hashes here.

Provenance

The following attestation bundles were made for elizato_dl-1.1.0-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