- Integrated "Recommend Film" button and Rating UI into Jellyfin web interface via MutationObserver. - Implemented full library sync (metadata + user state) in MovieNightSyncService. - Updated MovieNightBackendClient to support sync, recommendations, ratings, and viewed status. - Added proxy endpoints to MovieNightController for frontend-backend communication. - Refined sync logic to handle large libraries and ensured .NET 9.0 compatibility. Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
MovieNight Jellyfin Plugin
Thin Jellyfin server plugin for bridging Jellyfin playback/sync signals to the MovieNight backend.
Build
cd plugins/jellyfin/Jellyfin.Plugin.MovieNight
dotnet publish -c Release
Install the published net9.0 plugin files into the Jellyfin data directory under plugins/MovieNight/, then restart Jellyfin. This build targets Jellyfin 10.11.x.
Backend Contract Used
Current implemented calls:
POST /api/integrations/jellyfin/syncGET /api/integrations/jellyfin/sync-statePOST /api/integrations/jellyfin/events
Event requests use JSON with:
event_idevent_typeoccurred_atjellyfin_user_iditem_idpayload_versionpayload
The plugin sends X-MovieNight-Plugin-Token when configured. Completed Jellyfin playback stop events are sent as playback.stopped. Transient event push failures are retried three times with the same event_id.
The config page test action posts a small synthetic event to /api/integrations/jellyfin/events and treats 200 as success and 401 as token/config failure.