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.0.tar.gz (9.3 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.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: elizato_dl-1.0.0.tar.gz
  • Upload date:
  • Size: 9.3 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.0.tar.gz
Algorithm Hash digest
SHA256 ef5e3832adb171a79ad08852faacf93c83bdaf260f8b1c5ab6da7078d666f089
MD5 cef8bd5c886f012e66a2d91b4a1c6049
BLAKE2b-256 96ee3ee0c57640be5c6527f6d97943dee642f1d1dce3e5e8e61906e515f0aeba

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: elizato_dl-1.0.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c7456dd7e50f2b8d73e62ecc576416fbe70de0c1454c4abf8ca9da92521f644
MD5 8547272d2621dbb617460105df2eef18
BLAKE2b-256 9d32fb7306ebaaec2a82f604bf5724a31c797705db30ec5d150cebfc2163e9c0

See more details on using hashes here.

Provenance

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