Files
jellyfin-plugin-mediacleaner/Jellyfin.Plugin.MediaCleaner/Data/MediaCleanerState.cs

50 lines
1.3 KiB
C#

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
{
private readonly Lock _lock = new();
private IEnumerable<MediaInfo> _mediaInfo = [];
private ILogger<StaleMediaScanner> _logger;
private readonly StaleMediaScanner _staleMediaScanner;
public MediaCleanerState(ILogger<StaleMediaScanner> logger, ILibraryManager libraryManager)
{
_logger = logger;
_staleMediaScanner = new(logger, libraryManager);
}
public async Task UpdateState()
{
_mediaInfo = await _staleMediaScanner.ScanStaleMedia().ConfigureAwait(false);
}
public IEnumerable<SeriesInfo> GetSeriesInfo()
{
lock (_lock)
{
return _mediaInfo.OfType<SeriesInfo>();
}
}
public IEnumerable<MovieInfo> GetMovieInfo()
{
lock (_lock)
{
return _mediaInfo.OfType<MovieInfo>();
}
}
}