Files
movienight-backend/plugins/jellyfin
google-labs-jules[bot]anddevitq 2d62468639 Fix UI/API integration and enhance .strm creation logic
- Fixed 401 Unauthorized errors by using standard [Authorize] attribute.
- Improved rating dialog visibility (opacity/blur) and button text centering.
- Enhanced "Add Movie" with Year and IMDb ID fields in the UI.
- Implemented Jellyfin-standard folder structure for .strm files: "Name (Year) [imdbid-ttX]/Name (Year) [imdbid-ttX].strm".
- Added "Mark Viewed" and "Sync" buttons with status feedback.
- Ensured full compatibility with Jellyfin 10.11+ selectors and hash routing.

Co-authored-by: devitq <118541411+devitq@users.noreply.github.com>
2026-05-22 08:20:20 +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.