This file provides guidance to Claude Code (claude.ai/code) when working with this repository.
OmniShuffle is a command-line music shuffler that unifies Spotify, Pandora, and YouTube Music into a single streaming experience with pianobar-style controls and Last.fm scrobbling support.
omnishuffle/- Main Python packageomnishuffle/sources/- Music source integrations (Spotify, Pandora, YouTube)omnishuffle/player.py- MPV-based playback with MPRIS supportomnishuffle/main.py- CLI interface with keyboard controlsomnishuffle/config.py- Configuration management
omnishuffle/
├── __init__.py
├── config.py # Configuration loading/saving
├── main.py # CLI entry point and keyboard controls
├── player.py # MPV player wrapper with MPRIS
└── sources/
├── __init__.py
├── base.py # Abstract base class for sources
├── spotify.py # Spotify integration via spotipy
├── pandora.py # Pandora integration via pydora
└── youtube.py # YouTube Music via ytmusicapi
pipx install -e . # Install in development mode
omnishuffle # Run the playerConfig file: ~/.config/omnishuffle/config.json
- Uses MPV for playback (supports MPRIS for Last.fm scrobbling via rescrobbled)
- Spotify tracks are played via YouTube search (no Spotify Premium required)
- Pandora requires Tor proxy for non-US users
- YouTube works without authentication
- 2 space indents
- One logical change per commit
- Keep commit messages concise (one line), use sentence case
- Update CHANGELOG.md for user-facing changes
- Use present tense in commits and CHANGELOG.md
- Use sentence case for headings (not Title Case)
- Never use bold text as headings, use proper heading levels instead
- Always add an empty line after headings
- No formatting in CHANGELOG.md except
inline codeand when absolute necessary - Use * as bullets in CHANGELOG.md
- No Claude watermark in commits
- No emojis in commits or code
- Keep CHANGELOG.md date up to date when adding entries
- Use ISO date format in CHANGELOG.md headings:
### x.y.z: yyyy-MM-dd