Files
movienight-backend/plugins/jellyfin
google-labs-jules[bot]anddevitq e0b922b39d Final UI polish and API accessibility fixes for Jellyfin 10.11+
- Fixed 401 Unauthorized errors by switching to standard [Authorize] attributes.
- Improved rating dialog visibility with better background opacity and blur.
- Centered numbers on rating buttons using flexbox.
- Enhanced "Add Movie" dialog with better contrast and spacing.
- Added "Mark Viewed" and "Sync" buttons with status feedback.
- Ensured full compatibility with Jellyfin's hash-based routing.

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-05-22 07:37:12 +00:00
..
2026-05-20 02:39:57 +03:00
2026-05-20 02:39:57 +03:00
2026-05-20 02:39:57 +03:00

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/sync
  • GET /api/integrations/jellyfin/sync-state
  • POST /api/integrations/jellyfin/events

Event requests use JSON with:

  • event_id
  • event_type
  • occurred_at
  • jellyfin_user_id
  • item_id
  • payload_version
  • payload

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.