A kid-friendly YouTube music player for the terminal
Project description
RYTMUZ
A kid-friendly YouTube music player built with Python, Textualize, yt-dlp, and mpv.
Features
- Music-only focus: 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
- Kid-friendly: Safe search enabled, focused on music discovery
Requirements
- Python 3.10+
yt-dlpcommand-line tool (does all the heavy lifting for YouTube integration)mpvmedia player
Setup
-
Install system dependencies:
# Ubuntu/Debian sudo apt install yt-dlp mpv # macOS brew install yt-dlp mpv
-
Run the app:
# Using uvx (recommended - no installation needed) uvx 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
- Safer for kids: More predictable, music-oriented results
- 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 auto-advance at a later point)
- Minimal playback UI: No progress bar or timeline to keep focus on the music, not the interface
- Audio-only: No visualization to encourage listening and dancing vs screen time
- Fast replay: Cached URLs enable 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.0.tar.gz.
File metadata
- Download URL: rytmuz-0.2.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"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 |
6e5bf8f1704c4ba2cfae94e28683848168a7776d48555ddaa2bf1c04b2ab9742
|
|
| MD5 |
e60e00804dfc4caa0745fd454fd04409
|
|
| BLAKE2b-256 |
b9ad20347cb04adcae425a18ff2d2adfd21704dc7cdc5a709f416c30fd8747b3
|
File details
Details for the file rytmuz-0.2.0-py3-none-any.whl.
File metadata
- Download URL: rytmuz-0.2.0-py3-none-any.whl
- Upload date:
- Size: 24.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"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 |
d0d627e2cbcdcf9a02c6d068189a5253d39908ee70db841e707adc1c448e98ef
|
|
| MD5 |
ec32540a3ac71e39898eb2bf1acff21e
|
|
| BLAKE2b-256 |
04ca18e681742dec66a0909ad287238925a2a3f2cbb94f1d9acceeee7646f9b3
|