music-assistant-server

Branch:dev-lidarr-plugin

Commit Details

Fix Yandex Music provider for lossless streaming support (#3093)

* yandex_music: Add lossless streaming via get-file-info API and unit tests

Improve Yandex Music provider with proper lossless (FLAC) streaming support
and comprehensive test coverage.

## Changes

### Lossless Streaming (api_client.py, streaming.py)
- Add `get_track_file_info_lossless()` API method using `/get-file-info`
  endpoint with quality=lossless parameter
- Prefer flac-mp4/aac-mp4 codecs (Yandex API 2025 format)
- Implement retry logic: try transports=encraw first, fallback to
  transports=raw on 401 Unauthorized
- When lossless requested, try get-file-info first (returns FLAC),
  fallback to download-info if unavailable

### Provider improvements (provider.py)
- Minor variable naming fix in get_track()

### Documentation (README.md)
- Add provider README with OAuth token instructions
- Document audio quality settings and lossless troubleshooting

### Tests
- Add unit tests for parsers (artists, albums, tracks, playlists)
- Add unit tests for streaming quality selection logic
- Add snapshot tests for consistent parsing output
- Add fixtures and stubs in conftest.py
- Add integration and e2e test scaffolding

https://claude.ai/code/session_01S4Eth5mUC7hLd3K3JxX7Cy

* Delete tests/providers/yandex_music/test_e2e_server.py

* Update Yandex Music documentation URL

---------

Co-authored-by: Claude <[email protected]>
Forgejo

Author

Mikhail Nevskiy<[email protected]>
February 5, 2026 at 01:25 PM UTC

Committer

February 5, 2026 at 01:25 PM UTC
229additions
13deletions
17files changed

Parent commits

Changes

17 files
+229-13

Changed Files (17)

music_assistant/providers/yandex_music/
tests/providers/yandex_music/
tests/providers/yandex_music/__snapshots__/
tests/providers/yandex_music/fixtures/albums/
tests/providers/yandex_music/fixtures/artists/
tests/providers/yandex_music/fixtures/playlists/
tests/providers/yandex_music/fixtures/tracks/
music_assistant/providers/yandex_music/api_client.py
+20-1
music_assistant/providers/yandex_music/manifest.json
music_assistant/providers/yandex_music/provider.py
music_assistant/providers/yandex_music/streaming.py
+70-12
tests/providers/yandex_music/__init__.py
tests/providers/yandex_music/__snapshots__/test_parsers.ambr
tests/providers/yandex_music/conftest.py
tests/providers/yandex_music/fixtures/albums/minimal.json
tests/providers/yandex_music/fixtures/artists/minimal.json
tests/providers/yandex_music/fixtures/artists/with_cover.json
tests/providers/yandex_music/fixtures/playlists/minimal.json
tests/providers/yandex_music/fixtures/playlists/other_user.json
tests/providers/yandex_music/fixtures/tracks/minimal.json
tests/providers/yandex_music/fixtures/tracks/with_artist_and_album.json
tests/providers/yandex_music/test_integration.py
tests/providers/yandex_music/test_parsers.py
tests/providers/yandex_music/test_streaming.py
+139