MadhavMusicCLI 🎵
A Termux-first terminal music player — stream YouTube, manage playlists, view lyrics, all inside your terminal.
✨ Features
| Feature | Details |
|---|---|
| 🎵 YouTube Streaming | Search & stream via yt-dlp — no API key needed |
| 📱 Termux/Android | Touch-friendly, compact layout, auto-detects termux-media-player |
| 💾 Local Music | Scans MP3, FLAC, OGG, WAV, M4A, OPUS from your device |
| 📋 Queue & Playlists | Build queues, manage listening order |
| 🎤 Lyrics | Synced lyrics via syncedlyrics |
| 📜 History | Persistent listening history |
| 🎨 4 Themes | Default · Dracula · Nord · Gruvbox |
| ⌨️ Keyboard-first | Full keyboard & touch navigation |
| 🔌 Plugin System | Add providers via Python entry-points |
🚀 Installation
Termux (Android) — Recommended
# 1. Install Python + audio tools
pkg install python mpv
# 2. (Optional) Install Termux:API app from F-Droid for termux-media-player support
# 3. Install MadhavMusicCLI
pip install madhavmusiccli
# 4. Launch!
music
Linux / macOS / Windows
pip install madhavmusiccli
music
Note: On desktop, install
pygamefor audio:pip install madhavmusiccli pygame
🎮 Usage
music # launch with auto-detected music folder
music --library ~/Music # specify music directory
music --theme dracula # start with Dracula theme
music --version # show version
⌨️ Key Bindings
| Key | Action |
|---|---|
Ctrl+Q |
Quit |
Ctrl+P |
Play / Pause |
Ctrl+N |
Next track |
Ctrl+B |
Previous track |
Ctrl+S |
Search YouTube |
Ctrl+L |
Lyrics panel |
Ctrl+H |
History panel |
Ctrl+T |
Cycle theme |
Space |
Play / Pause |
← → |
Seek ±5 seconds |
↑ ↓ |
Navigate list |
Enter |
Play selected |
F1 |
Help |
🔌 Audio Backends (Auto-detected)
MadhavMusicCLI automatically picks the best backend:
| Priority | Backend | Platform |
|---|---|---|
| 1 | termux-media-player |
Termux/Android (Termux:API) |
| 2 | mpv |
All platforms (pkg install mpv) |
| 3 | pygame |
Desktop (Linux/macOS/Windows) |
| 4 | ffplay |
All platforms (ffmpeg) |
🔌 Plugin System
Add custom music providers via pyproject.toml entry-points:
[project.entry-points."madhavmusiccli.providers"]
myprovider = "mypkg.provider:MyProvider"
Subclass MusicProvider from madhavmusiccli.plugins.base.
🛠️ Development
git clone <your-repo>
cd CLI_music
pip install -e ".[dev]"
pytest -q
music
📦 Upload to PyPI
See PYPI_UPLOAD.md for full instructions.
upload_pypi.bat --test # TestPyPI first
upload_pypi.bat # real PyPI
📄 License
MIT — see LICENSE
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 madhavmusiccli-0.1.1.tar.gz.
File metadata
- Download URL: madhavmusiccli-0.1.1.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5da645533dcd66ab7ca0446abd6f36199a9247329c204a997cb4f16f1af2ca49
|
|
| MD5 |
6025ceaf83d3dc043a3f06b986a5fd4a
|
|
| BLAKE2b-256 |
213fc002ec3423c1d378afc690ea035b4bd61585a5e4a433f51c53fdec21ea57
|
File details
Details for the file madhavmusiccli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: madhavmusiccli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 27.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a75dc55548aeb5a124d221b9eeb66807ae6a33dc671fdce6eec8c8ba9cbc615
|
|
| MD5 |
5a6df8282b0333c9277483c8b358b579
|
|
| BLAKE2b-256 |
cfcddbde912f71c4ce37f50042f34bc7ba9603b788cbe94fe56084dd78bfb16e
|