From 1de8e31468cc297d3369fa88c1c8642311b0445e Mon Sep 17 00:00:00 2001 From: Thomas Gander Date: Tue, 10 Mar 2026 07:43:53 -0600 Subject: [PATCH] Updated state to scan library first before looking for stale media to ensure data in table is accurate --- .../Controllers/StateController.cs | 6 +++++- .../Data/MediaCleanerState.cs | 16 +++++++++++++++- Jellyfin.Plugin.MediaCleaner/Pages/home.html | 2 +- Jellyfin.Plugin.MediaCleaner/Pages/home.js | 2 -- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Jellyfin.Plugin.MediaCleaner/Controllers/StateController.cs b/Jellyfin.Plugin.MediaCleaner/Controllers/StateController.cs index 28f9684..00e14a4 100644 --- a/Jellyfin.Plugin.MediaCleaner/Controllers/StateController.cs +++ b/Jellyfin.Plugin.MediaCleaner/Controllers/StateController.cs @@ -32,7 +32,11 @@ public class StateController(MediaCleanerState state) : Controller public IActionResult GetMovieInfo() => Ok(_state.GetMovieInfo()); [HttpGet("updateState")] - public IActionResult GetUpdateState() => Ok(_state.UpdateState()); + public async Task GetUpdateState() + { + await _state.UpdateState().ConfigureAwait(false); + return Ok(); + } [HttpGet("getMoviesTitle")] public IActionResult GetMoviesTitle() => diff --git a/Jellyfin.Plugin.MediaCleaner/Data/MediaCleanerState.cs b/Jellyfin.Plugin.MediaCleaner/Data/MediaCleanerState.cs index f2b9b26..96cae11 100644 --- a/Jellyfin.Plugin.MediaCleaner/Data/MediaCleanerState.cs +++ b/Jellyfin.Plugin.MediaCleaner/Data/MediaCleanerState.cs @@ -11,18 +11,32 @@ using System.Net.Http; using System; using System.Text.Json; using System.Globalization; +using MediaBrowser.Model.Tasks; +using Microsoft.AspNetCore.Mvc; namespace Jellyfin.Plugin.MediaCleaner.Data; -public class MediaCleanerState(ILogger logger, ILibraryManager libraryManager) +public class MediaCleanerState(ILogger logger, ILibraryManager libraryManager, ITaskManager taskManager) { private readonly Lock _lock = new(); private IEnumerable _mediaInfo = []; private readonly StaleMediaScanner _staleMediaScanner = new(logger, libraryManager); + // private readonly ILibraryManager _libraryManager = libraryManager; + private readonly ITaskManager _taskManager = taskManager; public async Task UpdateState() { + // First re-scan library and then scan for stale media. + IScheduledTaskWorker? refreshLibraryWorker = _taskManager.ScheduledTasks.FirstOrDefault(task => task.ScheduledTask.Key == "RefreshLibrary"); + + if(refreshLibraryWorker != null) + { + await _taskManager.Execute(refreshLibraryWorker, new TaskOptions()).ConfigureAwait(false); + } + _mediaInfo = await _staleMediaScanner.ScanStaleMedia().ConfigureAwait(false); + + return; } public async Task> GetTvSeriesInfo() diff --git a/Jellyfin.Plugin.MediaCleaner/Pages/home.html b/Jellyfin.Plugin.MediaCleaner/Pages/home.html index 8ee7deb..416114f 100644 --- a/Jellyfin.Plugin.MediaCleaner/Pages/home.html +++ b/Jellyfin.Plugin.MediaCleaner/Pages/home.html @@ -3,7 +3,7 @@
-
Loading...
+
Loading... This may take some time whilst we scan your library and retrieve data from Radarr and Sonarr to accurately fill tables.