Add Yandex Music provider (#3002)
* Add Yandex Music provider
Implement a new music provider for Yandex Music streaming service using the
unofficial yandex-music-api library. Features include:
- Library sync (artists, albums, tracks, playlists)
- Library editing (add/remove tracks, albums, artists)
- Search across all media types
- Artist albums and top tracks
- HTTP streaming with quality selection (320kbps MP3 / FLAC)
- Token-based authentication
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix Yandex Music provider config entries
Remove duplicate token field that was causing the Save button to remain
disabled during provider setup.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix Yandex Music provider based on PR review feedback
- Move SUPPORTED_FEATURES to __init__.py and pass to setup()
- Remove code duplication in get_config_entries
- Remove label_instructions (use documentation instead)
- Replace RuntimeError with ProviderUnavailableError
- Replace generic Exception catches with InvalidDataError
- Remove non-existent AlbumType.PODCAST
- Fix audio_format to respect quality config setting (MP3/FLAC)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add yandex-music to requirements_all.txt
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Update manifest.json
* Improve Yandex Music provider based on PR review
- Use ContentType.UNKNOWN for unknown codecs instead of assuming MP3
- Add PLAYLIST_ID_SPLITTER constant and remove unused cache TTL constants
- Optimize search to use specific type when only one media type requested
- Remove unused imports
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix mypy type errors in Yandex Music provider
- Add cast for users_playlists_list return type in api_client.py
- Add type annotations for _select_best_quality method in streaming.py
- Convert quality config value to str | None before passing to method
- Remove non-existent MediaItemMetadata attributes (track_count, has_lyrics)
- Use spread operator instead of append for Sequence types in search results
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Enable CI workflow for feature branches
Allow test workflow to run on feature/* branches to validate changes
before pushing to upstream PR.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix ruff TC006 error - use list() instead of cast()
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Remove CI workflow changes unrelated to Yandex Music provider
Reverts changes to .github/workflows/test.yml as requested in PR review.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add Yandex Music provider icons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Update music_assistant/providers/yandex_music/manifest.json
Co-authored-by: OzGav <gavnosp@hotmail.com>
---------
Co-authored-by: Михаил Невский <renso@MacBook-Pro-Mihail.local>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
Co-authored-by: OzGav <gavnosp@hotmail.com>