Interactive music search and download tool with Deezer integration. Browse artists, view their profiles, and download albums directly from the command line.
- Artist Search & Profiles: Search artists and view detailed profiles with top songs
- Complete Album Collections: Browse ALL albums from any artist (sorted by popularity)
- Direct Album Downloads: Download any album by simply typing its number
- Smart Sorting: Artists sorted by fan count for better discovery
- Multi-Mode Search: Switch between tracks, albums, and artists instantly
- Audio Previews: 30-second track previews with playback controls
- Multiple Downloads: Select multiple items with ranges like
[1,3-5,8] - Intuitive Navigation: Browse artist profiles with
backcommand support - Visual Feedback: Color-coded interface with progress indicators
- Smart Detection: Avoids re-downloading existing files
- Quality Downloads: Automatic quality fallback (320kbps β 128kbps β available)
- Batch Operations: Efficient album downloads with progress tracking
- ARL Authentication: Secure authentication using Deezer ARL tokens
- Cross-Platform: Works on Windows, macOS, and Linux
pip install dmx-music# Install directly from GitHub
nix run github:cargaona/dmx
# Or add to your flake inputs
{
inputs.dmx.url = "github:cargaona/dmx";
}git clone https://github.com/cargaona/dmx.git
cd dmx
pip install -e .-
Get your ARL token from Deezer (check browser cookies)
-
Configure dmx:
dmx config set arl YOUR_ARL_TOKEN_HERE dmx config set quality 320 dmx config set output ~/Music
-
Start interactive mode:
dmx
-
Search and download:
[tracks] > lady gaga disease [tracks] > 1 # Download first result
Featured in v0.1.0: Complete artist profile browsing with album downloads
# Switch to artists mode
[tracks] > m artists
# Search for artists (sorted by fan count)
[artists] > pez
# View artist profile
[artists] > 2 # Select Pez with 10,580 fans
# Browse ALL artist albums (72 total)
[Pez Albums] > l # List all albums
# Download any album directly
[Pez Albums] > 15 # Download album #15
# Navigate back
[Pez Albums] > back
[artists] > π€ Artist Profile
Pez
72 albums β’ 10,580 fans
π΅ Top Songs:
Aire al Fin
El Manto ElΓ©ctrico β’ 3:13
πΏ Albums (Enter number to download):
1 Goodbye Dear, Ok Chicago. (11 tracks)
2 Ion (13 tracks)
[... 70 more albums ...]
Commands: [number] = download album | [1,3,5] = download multiple | t<number> = preview top track | 'back' = return to artist search
dmxCommands available in interactive mode:
<query>- Search for trackssa <query>- Search albumsst <query>- Search artists<number>- Download by number[1,3-5,8]- Download multiple items/rangesallor*- Download all current resultsp <number>- Play 30-second preview of trackt<number>- Play preview of artist's top trackplay- Play/pause current previewstop- Stop current previewm tracks|albums|artists- Switch model- List current resultsstatus- Show system statusq- Quit
# Search
dmx search "artist song"
dmx search -a "album name"
dmx search -t "artist name"
# Download by URL
dmx download "https://www.deezer.com/track/123456"
dmx download "https://www.deezer.com/album/123456"
# Configuration
dmx config list
dmx config set quality 320
dmx config set output ~/Music
# System status
dmx statusConfiguration is stored in ~/.config/dmx/config.json.
arl- Your Deezer ARL token (required for downloads)quality- Audio quality:128,320, orFLACoutput- Download directory (default:~/Downloads/Music)
- Open Deezer in your browser
- Log in to your account
- Open Developer Tools (F12)
- Go to Application/Storage β Cookies
- Find the
arlcookie value - Copy the value and use it with
dmx config set arl YOUR_TOKEN
Note: You need a Deezer Premium subscription for high-quality downloads.
# Interactive search
dmx
# Search for a specific song
[tracks] > bruno mars finesse
1 Finesse (Remix; feat. Cardi B)
by Bruno Mars β’ Finesse (feat. Cardi B) (Remix) β’ 3:37
# Download it
[tracks] > 1
β Downloaded: Bruno Mars - Finesse (Remix; feat. Cardi B).mp3# Switch to album mode
[tracks] > m albums
# Search for album
[albums] > lady gaga mayhem
1 MAYHEM
by Lady Gaga β’ 14 tracks
# Download entire album
[albums] > 1
β Downloaded 14 files
# Download multiple items (also works with tracks/artists)
[tracks] > [1,3-5,8] # Downloads items 1, 3, 4, 5, and 8
[tracks] > all # Downloads all current results# Play 30-second preview of a track
[tracks] > p 1
π΅ Playing preview: Song Title by Artist
Preview started. Use 'play' to pause/resume, 'stop' to stop.
# Control playback
[tracks] > play # Pause/resume
[tracks] > stop # Stop preview
# Preview artist's top tracks (in artist profile)
[Artist Albums] > t1 # Preview first top track
[Artist Albums] > t2 # Preview second top track# Download specific track
dmx download "https://www.deezer.com/track/123456"
# Download entire album
dmx download "https://www.deezer.com/album/123456"Downloaded files are organized as:
~/Downloads/Music/
βββ Artist - Album/
β βββ 01 - Track Name.mp3
β βββ 02 - Another Track.mp3
β βββ ...
βββ Artist - Single Track.mp3
- Python 3.8+
- Valid Deezer ARL token
- Internet connection
- Optional: pygame (for audio previews) -
pip install pygame
# Enter development shell
nix develop
# Install in development mode
python -m pip install -e .
# Run tests
pytest# Clone repository
git clone https://github.com/cargaona/dmx.git
cd dmx
# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/macOS
# or
venv\\Scripts\\activate # Windows
# Install dependencies
pip install -e .
# Run tests
pytestMIT License - see LICENSE for details.
Contributions are welcome! Please feel free to submit issues and pull requests.