using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading; using System.Threading.Tasks; using Jellyfin.Database.Implementations.ModelConfiguration; using Jellyfin.Plugin.MediaCleaner; using Jellyfin.Plugin.MediaCleaner.Models; using Jellyfin.Plugin.MediaCleaner.ScheduledTasks; using MediaBrowser.Controller.Library; using Microsoft.Extensions.Logging; namespace Jellyfin.Plugin.MediaCleaner.Data; public class MediaCleanerState(ILogger logger, ILibraryManager libraryManager) { private readonly Lock _lock = new(); private IEnumerable _mediaInfo = []; private readonly StaleMediaScanner _staleMediaScanner = new(logger, libraryManager); public async Task UpdateState() { _mediaInfo = await _staleMediaScanner.ScanStaleMedia().ConfigureAwait(false); } public IEnumerable GetSeriesInfo() { lock (_lock) { return _mediaInfo.OfType(); } } public IEnumerable GetMovieInfo() { lock (_lock) { return _mediaInfo.OfType(); } } }