Skip to main content

MadhavMusicCLI 🎵

A Termux-first terminal music player — stream YouTube, manage playlists, view lyrics, all inside your terminal.

PyPI Python 3.9+ License: MIT

✨ Features

Feature Details
🎵 YouTube Streaming Search & stream via yt-dlpno 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 pygame for 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

madhavmusiccli-0.1.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

madhavmusiccli-0.1.0-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file madhavmusiccli-0.1.0.tar.gz.

File metadata

  • Download URL: madhavmusiccli-0.1.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for madhavmusiccli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fa1fef9fbd264a5b342608e840b2efe22e5a66e24c05a6256828d16011fb6c36
MD5 ee582169ea19cc3e0325243912221359
BLAKE2b-256 4740ca234567fe9acde563e8e4123d34eea30b1955442c8d9a57e8d959ba2e2a

See more details on using hashes here.

File details

Details for the file madhavmusiccli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: madhavmusiccli-0.1.0-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

Hashes for madhavmusiccli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b221a073003f240af5812c1a7b0d07c758d36e4e545c87cb5279bde25f0e8b2
MD5 c93569449f01d8af5c5bc5dc0c7110c7
BLAKE2b-256 b0c2a86fb315a7749921a9f282fa868591c5768877461c3c43df9840882eecff

See more details on using hashes here.

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