music-assistant-server

Branch:dev-lidarr-plugin

Commit Details

Yandex Music: My Wave Browse folder and locale-based names (#3122)

* Yandex Music: add My Wave (Моя волна) Browse folder

- Add ROTOR_STATION_MY_WAVE constant (user:onyourwave)
- Add get_my_wave_tracks() to api_client using rotor_station_tracks API
- Add My Wave folder to Browse root (first in list)
- When opening My Wave, return tracks from Rotor API as Track items
- Order: Моя волна, Мои исполнители, Мои альбомы, Мне нравится, Мои плейлисты
- On API errors, log and return [] to keep Browse working

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

* Yandex Music: locale-based Browse folder names (EN/RU)

- Add BROWSE_NAMES_RU and BROWSE_NAMES_EN in constants (My Favorites for tracks)
- In browse(), use Russian names when locale starts with ru, else English
- Fallback to English if metadata.locale unavailable
- Test: assert first root folder name is from locale mapping

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

* fix: sort imports in yandex_music provider (I001)

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

* Yandex Music: My Wave — browse, recommendations, similar tracks, virtual playlist, rotor feedback

- My Wave in Browse: root folder (up to 3 batches) and Load more pagination
- Recommendations (Discover): My Wave section with first batch
- Similar tracks (radio mode): Rotor station track:{id} for radio queue
- Virtual playlist My Wave in library (get_playlist / get_playlist_tracks with page)
- My Wave listed first in get_library_playlists
- Rotor feedback: radioStarted, trackStarted, trackFinished, skip
- Reconnect and retry on Server disconnected in api_client

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

* fix(yandex_music): resolve ruff/mypy — duplicate methods, line length, type for browse tracks

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

* refactor(yandex_music): use constants instead of string literals, extract locale helper

Replace all "my_wave" string literals with MY_WAVE_PLAYLIST_ID constant
and extract _get_browse_names() helper to deduplicate locale detection
logic across browse(), get_playlist(), and recommendations().

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

---------

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

Author

Mikhail Nevskiy<[email protected]>
February 10, 2026 at 05:31 PM UTC

Committer

February 10, 2026 at 05:31 PM UTC
369additions
19deletions
8files changed

Parent commits

Changes

8 files
+369-19

Changed Files (8)

music_assistant/providers/yandex_music/
tests/providers/yandex_music/
music_assistant/providers/yandex_music/__init__.py
music_assistant/providers/yandex_music/api_client.py
+2-1
music_assistant/providers/yandex_music/constants.py
music_assistant/providers/yandex_music/provider.py
+328-10
music_assistant/providers/yandex_music/streaming.py
+14-8
tests/providers/yandex_music/test_api_client.py
tests/providers/yandex_music/test_integration.py
+1
tests/providers/yandex_music/test_my_wave.py
+24