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:
- Install the Get cookies.txt LOCALLY Chrome extension
- Go to youtube.com while logged in
- Click the extension → Export → save as
cookies.txtin your working directory - 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 +
.lrcfile 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54b58c49ff201ef42a90411a24d05247e2caabaab757b9fa69d253b8d8eb24b2
|
|
| MD5 |
1a50bcedeedf3da97738c052f266c73b
|
|
| BLAKE2b-256 |
bf187aac13f3848bb36b09cff11e4a2fd1be6f24c2e1b57aa72bf9a3be4e369d
|
Provenance
The following attestation bundles were made for elizato_dl-1.1.0.tar.gz:
Publisher:
publish.yml on elizatowinston-dev/elizato-dl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elizato_dl-1.1.0.tar.gz -
Subject digest:
54b58c49ff201ef42a90411a24d05247e2caabaab757b9fa69d253b8d8eb24b2 - Sigstore transparency entry: 1563529246
- Sigstore integration time:
-
Permalink:
elizatowinston-dev/elizato-dl@6e9be7f79bdc23edce5363d97db036b5d6f5954d -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/elizatowinston-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6e9be7f79bdc23edce5363d97db036b5d6f5954d -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90d5bc80aa9ed21b17012048ca4e03cf067b250afaa870ba41bcb4d5d48dcd58
|
|
| MD5 |
8ca106b35da6d26845190355979415ca
|
|
| BLAKE2b-256 |
e86afc1055c908d5c1e704ff9aa96dd406026f44668a517405d519f8a25b212a
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elizato_dl-1.1.0-py3-none-any.whl -
Subject digest:
90d5bc80aa9ed21b17012048ca4e03cf067b250afaa870ba41bcb4d5d48dcd58 - Sigstore transparency entry: 1563529332
- Sigstore integration time:
-
Permalink:
elizatowinston-dev/elizato-dl@6e9be7f79bdc23edce5363d97db036b5d6f5954d -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/elizatowinston-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6e9be7f79bdc23edce5363d97db036b5d6f5954d -
Trigger Event:
release
-
Statement type: