music-assistant-server

Branch:dev-lidarr-plugin

Commit Details

fix(yandex_music): fix playlist loading and missing album cover art (#3099)

* fix(yandex_music): fix playlist tracks not loading in UI

- Return empty list for page > 0 since Yandex Music API returns all
  tracks in a single call; without this the controller pagination loop
  never terminates
- Add fetch_tracks_async() fallback when API returns playlist metadata
  without tracks
- Raise ResourceTemporarilyUnavailable instead of returning empty list
  when tracks are expected but unavailable, preventing cache of empty
  results
- Fetch full track details in batches of 50 to reduce timeout risk
- Retry get_tracks once on NetworkError in api_client
- Raise ResourceTemporarilyUnavailable on NetworkError in get_playlist
  to prevent caching None as empty result
- Suppress yandex_music library DEBUG logs to avoid huge API dumps

Co-authored-by: Cursor <[email protected]>

* chore: apply ruff fixes and update snapshot

- Remove unused noqa comment (RUF100) in provider.py
- Update test_parsers snapshot for upstream model changes (year/style fields)

Co-authored-by: Cursor <[email protected]>

* fix(yandex_music): fix missing album cover art in library

- In parse_track(), use parse_album() instead of ItemMapping for the
  track's album reference so albums are created with full metadata
  (including cover_uri) when tracks are synced to the library
- In get_liked_albums(), fetch full album details via client.albums()
  in batches of 50, since the users_likes_albums endpoint returns
  minimal data without cover_uri

Co-authored-by: Cursor <[email protected]>

* chore(yandex_music): regenerate parser snapshots after models bump

Co-authored-by: Cursor <[email protected]>

* Update music_assistant/providers/yandex_music/api_client.py

Co-authored-by: Copilot <[email protected]>

* Update music_assistant/providers/yandex_music/provider.py

Co-authored-by: Copilot <[email protected]>

* Add tests for api_client batching/retry and playlist edge cases

Cover the 3 unresolved Copilot review comments from PR #3099:
- get_liked_albums() batch fetching and NetworkError fallback
- get_tracks() retry-on-NetworkError logic
- get_playlist_tracks() page>0, fetch_tracks_async fallback, empty batch error

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Михаил Невский <[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
Forgejo

Author

Mikhail Nevskiy<[email protected]>
February 9, 2026 at 08:42 AM UTC

Committer

February 9, 2026 at 08:42 AM UTC
125additions
4deletions
6files changed

Parent commits

Changes

6 files
+125-4

Changed Files (6)

music_assistant/providers/yandex_music/
tests/providers/yandex_music/__snapshots__/
tests/providers/yandex_music/
music_assistant/providers/yandex_music/api_client.py
+43-4
music_assistant/providers/yandex_music/parsers.py
music_assistant/providers/yandex_music/provider.py
+9
tests/providers/yandex_music/__snapshots__/test_parsers.ambr
tests/providers/yandex_music/test_api_client.py
tests/providers/yandex_music/test_integration.py
+73