Skip to main content

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-dlp command-line tool (does all the heavy lifting for YouTube integration)
  • mpv media player

Setup

  1. Install system dependencies:

    # Ubuntu/Debian
    sudo apt install yt-dlp mpv
    
    # macOS
    brew install yt-dlp mpv
    
  2. 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

  1. Enable YouTube Data API v3

  2. Create an API Key

    • Go to API Credentials
    • Click "Create Credentials" → "API key"
    • Copy the generated API key
  3. 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
  4. 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
    
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rytmuz-0.2.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

rytmuz-0.2.0-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

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

Hashes for rytmuz-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6e5bf8f1704c4ba2cfae94e28683848168a7776d48555ddaa2bf1c04b2ab9742
MD5 e60e00804dfc4caa0745fd454fd04409
BLAKE2b-256 b9ad20347cb04adcae425a18ff2d2adfd21704dc7cdc5a709f416c30fd8747b3

See more details on using hashes here.

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

Hashes for rytmuz-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d0d627e2cbcdcf9a02c6d068189a5253d39908ee70db841e707adc1c448e98ef
MD5 ec32540a3ac71e39898eb2bf1acff21e
BLAKE2b-256 04ca18e681742dec66a0909ad287238925a2a3f2cbb94f1d9acceeee7646f9b3

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