From 841ce8534f3095c34c550956200b021b2855b409 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 20 May 2026 19:54:11 +0000 Subject: [PATCH] Refactor Jellyfin plugin: UI integration, backend contract, and STRM creation. - Integrated "Recommend Film", "Add Movie (STRM)", and Rating UI into Jellyfin web interface. - Implemented full library sync (metadata with poster URLs, user states) with library filtering support. - Added support for creating films via .strm file generation. - Updated MovieNightBackendClient to support sync, recommendations, ratings, and viewed status. - Added proxy endpoints to MovieNightController for frontend-backend communication. - Ensured compatibility with Jellyfin 10.11.x and .NET 9.0. Co-authored-by: devitq <118541411+devitq@users.noreply.github.com> --- .../Configuration/PluginConfiguration.cs | 5 + .../Configuration/config.js | 3 + .../Configuration/configPage.html | 6 + .../Configuration/ui.js | 103 +++++++++++------- .../Controllers/MovieNightController.cs | 75 ++++++------- .../Services/MovieNightPeriodicSyncService.cs | 8 ++ .../Services/MovieNightSyncService.cs | 48 ++++---- 7 files changed, 141 insertions(+), 107 deletions(-) diff --git a/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/PluginConfiguration.cs b/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/PluginConfiguration.cs index 5e6ef14..2e97960 100644 --- a/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/PluginConfiguration.cs +++ b/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/PluginConfiguration.cs @@ -42,4 +42,9 @@ public class PluginConfiguration : BasePluginConfiguration /// Gets or sets enabled Jellyfin library ids. Empty means all libraries. /// public List EnabledLibraryIds { get; set; } = new(); + + /// + /// Gets or sets the path where .strm files will be created. + /// + public string StrmOutputPath { get; set; } = string.Empty; } diff --git a/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/config.js b/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/config.js index 22a86cf..7e38881 100644 --- a/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/config.js +++ b/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/config.js @@ -11,6 +11,8 @@ const movieNightConfigPage = { view.querySelector("#ApiToken").value = config.ApiToken || ""; view.querySelector("#SyncIntervalMinutes").value = config.SyncIntervalMinutes || 30; + view.querySelector("#StrmOutputPath").value = + config.StrmOutputPath || ""; view.querySelector("#Enabled").checked = config.Enabled || false; view.querySelector("#EnablePeriodicSync").checked = config.EnablePeriodicSync !== false; @@ -39,6 +41,7 @@ const movieNightConfigPage = { form.querySelector("#SyncIntervalMinutes").value || "30", 10, ); + config.StrmOutputPath = form.querySelector("#StrmOutputPath").value; config.Enabled = form.querySelector("#Enabled").checked; config.EnablePeriodicSync = form.querySelector("#EnablePeriodicSync").checked; diff --git a/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/configPage.html b/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/configPage.html index d4194fe..adb20db 100644 --- a/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/configPage.html +++ b/plugins/jellyfin/Jellyfin.Plugin.MovieNight/Configuration/configPage.html @@ -27,6 +27,12 @@ +
+ + +
Directory where .strm files will be created for new films.
+
+