Refactored sonarr controller to be able to return anime or tv series based on the media found in the server. Also updated models
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
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.Helpers;
|
||||
using Jellyfin.Plugin.MediaCleaner.Models;
|
||||
using Jellyfin.Plugin.MediaCleaner.ScheduledTasks;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Jellyfin.Plugin.MediaCleaner.Enums;
|
||||
using System.Net.Http;
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Globalization;
|
||||
|
||||
namespace Jellyfin.Plugin.MediaCleaner.Data;
|
||||
|
||||
@@ -24,15 +25,54 @@ public class MediaCleanerState(ILogger<StaleMediaScanner> logger, ILibraryManage
|
||||
_mediaInfo = await _staleMediaScanner.ScanStaleMedia().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public IEnumerable<SeriesInfo> GetSeriesInfo()
|
||||
public async Task<IEnumerable<SeriesInfo>> GetTvSeriesInfo()
|
||||
{
|
||||
// Filter only TV
|
||||
// Get all series on tv sonarr server
|
||||
HttpHelper tvHttpHelper = new HttpHelper(ServerType.Sonarr);
|
||||
var tvSeriesResponse = await tvHttpHelper.SendHttpRequestAsync(HttpMethod.Get,"/api/v3/series").ConfigureAwait(false);
|
||||
var tvSeries = JsonSerializer.Deserialize<IEnumerable<SonarrSeries>>(tvSeriesResponse.GetRawText());
|
||||
|
||||
if(tvSeries == null)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
lock (_lock)
|
||||
{
|
||||
return _mediaInfo.OfType<SeriesInfo>();
|
||||
var allSeries = _mediaInfo.OfType<SeriesInfo>();
|
||||
|
||||
var tvSeriesInfo = allSeries
|
||||
.Where(series => tvSeries.Any(tv => tv.TvdbId == int.Parse(series.TvdbId, CultureInfo.InvariantCulture)));
|
||||
|
||||
return [.. tvSeriesInfo];
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<MovieInfo> GetMovieInfo()
|
||||
public async Task<IEnumerable<SeriesInfo>> GetAnimeSeriesInfo()
|
||||
{
|
||||
// Get all series on anime sonarr server
|
||||
HttpHelper animeHttpHelper = new HttpHelper(ServerType.SonarrAnime);
|
||||
var animeSeriesResponse = await animeHttpHelper.SendHttpRequestAsync(HttpMethod.Get,"/api/v3/series").ConfigureAwait(false);
|
||||
var animeSeries = JsonSerializer.Deserialize<List<SonarrSeries>>(animeSeriesResponse.GetRawText());
|
||||
|
||||
if(animeSeries == null)
|
||||
{
|
||||
return Enumerable.Empty<SeriesInfo>();
|
||||
}
|
||||
|
||||
lock (_lock)
|
||||
{
|
||||
var allSeries = _mediaInfo.OfType<SeriesInfo>();
|
||||
|
||||
var animeSeriesInfo = allSeries
|
||||
.Where(series => animeSeries.Any(anime => anime.TvdbId == int.Parse(series.TvdbId, CultureInfo.InvariantCulture)));
|
||||
|
||||
return animeSeriesInfo;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<MovieInfo> GetMovieInfo()
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user