Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time

dzr logo

DZR: the command line player ci

⚠️ For legal reasons this project

  • does not contain any track decryption key
  • does not cache any tracks on your machine




  • mpv for playback (because of PLAYER="mpv -" default env variable)
  • curl for HTTP query
  • jq for API parsing
  • dialog for TUI
  • openssl (or openssl-tool in Android) for track decryption


  • Linux and {Free,Open}BSD
  • Android (using Termux from F-droid)
  • Window 10 (running dzr as CGI server from WSL and browsing from Windows)


From the AUR (Arch Linux)

yay -S dzr

From GURU (Gentoo)

emerge --ask dzr

From sources

Save source into a dzr-master folder, then copy into /usr/local/bin :

curl -sL | tar xzf -
sudo mv dzr-master/dzr* /usr/local/bin

Usage Examples

dzr             # welcome screen
dzr /artist/860 # browse

Automatic ID3v2 Tagging

Use dzr-id3 to rename (as $ARTIST - $TITLE.mp3) and tag a given MP3 using it deezer track id

# the following examples are all equivalent
dzr-id3 1043317462 daylight.mp3
dzr-id3 /track/1043317462 daylight.mp3
dzr-id3 daylight.mp3

Real time Lyrics

Use dzr-srt to extract lyrics of the current track and pass it to mpv as --sub-file :

PLAYER='mpv --sub-file=<(dzr-srt $id) -' dzr /track/14408104

HTTP/Web interface

In addition to it command line interface, dzr also support being invoked from a cgi server :

mkdir -p cgi-bin
cp dzr* ./cgi-bin/
python3 -m http.server --cgi

You shall then be able to play any track over HTTP (ex: )

A basic web interface is also available on

Feel free to create your own frontend an publish it as a new repository (not as a dzr fork) with the dzr tag.