music-assistant-server

Branch:dev-lidarr-plugin

Commit Details

Add Zvuk Music provider (#3090)

* Add zvuk_music provider scaffold (manifest, constants, icons)

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

* Add Zvuk Music API client wrapper

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

* Add Zvuk Music model parsers

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

* Add ZvukMusicProvider implementation

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

* Update zvuk_music icons to official 2024 logo

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

* Add Zvuk Music provider integration tests

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

* Replace Zvuk Music integration tests with unit tests

Remove integration tests that required real API tokens and a running MA
server. Add comprehensive unit tests for parsers using mock objects,
covering all parser functions (parse_artist, parse_album, parse_track,
parse_playlist) with various scenarios.

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

* Address PR #3090 review: decorator, duration, allow_seek

- Refactor API error handling into @handle_zvuk_errors(not_found_return=...)
  decorator (api_client.py)
- Add duration from get_track() and allow_seek=True in get_stream_details
  (provider.py)

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

* docs(zvuk): clarify why get_track is needed for duration in get_stream_details

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

---------

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

Author

Mikhail Nevskiy<[email protected]>
February 10, 2026 at 07:01 AM UTC

Committer

February 10, 2026 at 07:01 AM UTC
536additions
0deletions
11files changed

Parent commits

Changes

11 files
+536-0

Changed Files (11)

music_assistant/providers/zvuk_music/
tests/providers/zvuk_music/
music_assistant/providers/zvuk_music/__init__.py
music_assistant/providers/zvuk_music/api_client.py
music_assistant/providers/zvuk_music/constants.py
music_assistant/providers/zvuk_music/icon.svg
music_assistant/providers/zvuk_music/icon_monochrome.svg
music_assistant/providers/zvuk_music/manifest.json
music_assistant/providers/zvuk_music/parsers.py
music_assistant/providers/zvuk_music/provider.py
requirements_all.txt
tests/providers/zvuk_music/__init__.py
tests/providers/zvuk_music/test_parsers.py
+536