- Resolved 401 Unauthorized errors by replacing non-existent AuthorizationPolicies with standard [Authorize] attributes. - Modernized UI integration using updated selectors for Jellyfin 10.11+ (.mainDetailButtons). - Replaced browser prompts with custom, theme-appropriate dialogs for Rating and Adding Movies. - Added "Mark Viewed in MovieNight" functionality and UI button. - Added "Sync Library" button and "Last Sync" status display to the Home page. - Fixed Add Movie (STRM) integration and added support for optional stream URLs. - Improved script reliability with a throttled MutationObserver. 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.