Conversation
|
✅ The title and description are good to go. Thanks! |
OzGav
left a comment
There was a problem hiding this comment.
Thanks for the new provider! Looks pretty good already. A few things below and also we need icons in colour and monochrome SVG
|
Thanks for the detailed review — it was very helpful. I’ve pushed the requested changes: the FeiNiu client errors now inherit directly from the corresponding Music Assistant error types, and the provider-side conversion layer has been removed; I’ve left native seeking unchanged for now, pending verification of the real service’s Range behaviour. One detail I’d like your opinion on is the membership refresh policy. The current implementation keeps the account-visible membership set for 15 minutes, and a normal full library sync also refreshes it. Once that membership cache itself expires, the next lookup still performs a full list refresh before continuing. This avoids scanning the library before every track, but can still cause an occasional blocking refresh after expiry. Would that be acceptable for the initial provider, or would you prefer membership refresh to be driven by sync/background work so playback never waits on a full refresh? |
|
Please comment on each conversation with your resolution and resolve it. |
OzGav
left a comment
There was a problem hiding this comment.
This is looking good. Just one thing to think about after your rework.
What does this implement/fix?
Adds an experimental, read-only provider for FeiNiu Music, the personal music-library service for fnOS.
This allows users to browse and play their FeiNiu-managed music library directly in Music Assistant, without deploying a separate protocol bridge. The provider connects to the music service over HTTP(S) using a regular music account and password; it does not require NAS administrator access.
Supported features
Provider authentication and caches are isolated per instance. Track metadata is checked against the account-specific access status returned by FeiNiu, while album, artist and playlist lookups rely on the service's native account filtering. Artwork requests are validated against the accessible owner item before the image is fetched, and server-side playback refusals are respected. The integration is read-only, with no playlist or metadata write operations.
No MA core changes or additional runtime dependencies are included.
Related issue (if applicable): None.
Types of changes
bugfixnew-featureenhancementnew-providerbreaking-changerefactordocumentationmaintenancecidependenciesChecklist
pre-commit run --all-filespasses.pytestpasses, and tests have been added/updated undertests/where applicable.music-assistant/modelsis linked.music-assistant/frontendis linked.Testing
The provider tests pass on a clean checkout without requiring live FeiNiu credentials or service access. In addition, the upstream GitHub Actions test workflow for this PR completed successfully.
Live integration testing used FeiNiu Music 1.0.1 (0.8.41) with three accounts, including a restricted-library account. Testing covered synchronization, account scoping, artwork, FLAC/MP3/OGG samples, and a 150-entry playlist.
Player-state checks covered pause/resume, seeking, completion of two full tracks, and automatic advance. Playback was assessed through player state and progress, without a listening check for that run.
Limitations