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.2.0.tar.gz (13.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.2.0-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: elizato_dl-1.2.0.tar.gz
  • Upload date:
  • Size: 13.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.2.0.tar.gz
Algorithm Hash digest
SHA256 a2d5b6bcb9f33acbf86f661bcbb351c2482ad1e39da6b4af61028f7e59a61c74
MD5 d839c17bdf7f29d9eede17429e31bb86
BLAKE2b-256 964538369a25ca080ff84dd49a74205a390bc62f6572fedf7927638a702e8ca7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: elizato_dl-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b34a65e6b50371546e0757be6cde808acb3d5682b0801498fdbea8a15305129
MD5 12c68666e711e4d9f05d3e87e3e056bf
BLAKE2b-256 7b11eb12342e02d90ad44d5da35905eff85f099ed63ceb59429035de4bdb7df3

See more details on using hashes here.

Provenance

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