A kid-friendly YouTube music player for the terminal
Project description
RYTMUZ
A simple, audio-only YouTube music player built with Python, Textualize, yt-dlp, and mpv.
Features
- Audio-only: Audio playback only, no video distractions
- Easy search: Always-available search field with Ctrl+S hotkey
- Recent songs: Quick access to recently played songs with Ctrl+R
- Simple controls: Play/pause, seek ±10s, volume adjustment
- Smart caching: Fast replay of recent songs
- Visual feedback: Thumbnails displayed with terminal graphics
- Focused listening: Minimal interface for distraction-free music listening
Requirements
- Python 3.10+
yt-dlpcommand-line tool - recent version required (does all the heavy lifting for YouTube integration)mpvmedia playerlibjpeglibrary (for image decoding with Pillow - thumbnail display)
Setup
-
Install system dependencies:
# Ubuntu/Debian # Note: apt yt-dlp is often outdated, install via uv instead sudo apt install mpv libjpeg62-turbo uv tool install yt-dlp # macOS brew install yt-dlp mpv jpeg
-
Run the app:
# Using uvx (recommended - no installation needed) uvx rytmuz # Or install with uv for persistent use uv tool install rytmuz rytmuz # Or using pipx pipx run rytmuz # Or install with pipx for persistent use pipx install rytmuz rytmuz
Optional: Improve Search Results with YouTube API
By default, rytmuz uses yt-dlp for searching, which provides basic keyword-based results. For better music-specific filtering (using YouTube's music topic and category filters), you can set up a free YouTube Data API v3 key:
Benefits
- Music-focused results: Filters to music content using YouTube's music category
- Better relevance: Uses YouTube's content categorization, not just keywords
- Safe search: Moderate safe search filtering enabled
- Free tier: Up to 100 searches per day at no cost
Setup Steps
-
Enable YouTube Data API v3
- Go to Google Cloud Console API Library
- Click "Enable" (you may need to create a project first)
-
Create an API Key
- Go to API Credentials
- Click "Create Credentials" → "API key"
- Copy the generated API key
-
Restrict the API Key (recommended for security)
- Click on your new API key to edit it
- Under "API restrictions", select "Restrict key"
- Choose "YouTube Data API v3" from the list
- Save
-
Set the environment variable
export YOUTUBE_API_KEY="your-api-key-here" # Or add to your shell profile (~/.bashrc, ~/.zshrc, etc.) echo 'export YOUTUBE_API_KEY="your-api-key-here"' >> ~/.bashrc
-
Run rytmuz - It will automatically use the API key if available
Usage
- Help: Press F1 or click the ? button to see all keyboard shortcuts and controls
- Search: Type in the search box and press Enter, or press Ctrl+S to focus search
- Play song: Click on a search result or press Enter when focused
- Recent songs: Click the ⏱ Recent button or press Ctrl+R
- Quit: Press Ctrl+C
Design Decisions
- No queueing: Immediate playback on selection (may add later)
- No auto-next: Stops after song ends (may add later)
- Minimal playback UI: No progress bar or timeline to keep focus on the music, not the interface
- Audio-only: No visualization to encourage focused listening
- Fast replay: Cached data enables instant playback for favorite songs
Project details
Release history Release notifications | RSS feed
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 rytmuz-0.2.1.tar.gz.
File metadata
- Download URL: rytmuz-0.2.1.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18439139291987b76af2448787f82dddda9d957c627f877fa342870913fa5e4f
|
|
| MD5 |
4f8a9eff75d57b8cbc075d63ebcc405e
|
|
| BLAKE2b-256 |
ae19d63171df9bd7592915b40ef20ae0812fa90f3843968955e07c54e1a7e595
|
File details
Details for the file rytmuz-0.2.1-py3-none-any.whl.
File metadata
- Download URL: rytmuz-0.2.1-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74cd64314b70b3a78e184bd61af6a757c85c93526ba6d310e8734762d0a4cbf8
|
|
| MD5 |
64d052cecae0514f833a906d3e7548b4
|
|
| BLAKE2b-256 |
148750b4d875c8bae7ad40d55f6e4f9beb0f499b3cfc48afc9ad9759cfad637d
|