1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-04-19 21:46:50 -04:00

Fixed: Clean Library being to agressive when lists are having failures.

Fixes #2455
This commit is contained in:
Leonardo Galli
2018-01-30 18:29:07 +01:00
parent 74e0db2829
commit 95ca863697
4 changed files with 46 additions and 23 deletions
@@ -54,21 +54,22 @@ namespace NzbDrone.Core.NetImport
}
public List<Movie> Fetch(int listId, bool onlyEnableAuto = false)
public NetImportFetchResult Fetch(int listId, bool onlyEnableAuto = false)
{
return MovieListSearch(listId, onlyEnableAuto);
}
public List<Movie> FetchAndFilter(int listId, bool onlyEnableAuto)
{
var movies = MovieListSearch(listId, onlyEnableAuto);
var movies = MovieListSearch(listId, onlyEnableAuto).Movies;
return _movieService.FilterExistingMovies(movies);
return _movieService.FilterExistingMovies(movies.ToList());
}
public List<Movie> MovieListSearch(int listId, bool onlyEnableAuto = false)
public NetImportFetchResult MovieListSearch(int listId, bool onlyEnableAuto = false)
{
var movies = new List<Movie>();
var anyFailure = false;
var importLists = _netImportFactory.GetAvailableProviders();
@@ -81,24 +82,31 @@ namespace NzbDrone.Core.NetImport
foreach (var list in lists)
{
movies.AddRange(list.Fetch());
var result = list.Fetch();
movies.AddRange(result.Movies);
anyFailure |= result.AnyFailure;
}
_logger.Debug("Found {0} movies from list(s) {1}", movies.Count, string.Join(", ", lists.Select(l => l.Definition.Name)));
return movies.DistinctBy(x => {
if (x.TmdbId != 0)
{
return x.TmdbId.ToString();
}
return new NetImportFetchResult
{
Movies = movies.DistinctBy(x =>
{
if (x.TmdbId != 0)
{
return x.TmdbId.ToString();
}
if (x.ImdbId.IsNotNullOrWhiteSpace())
{
return x.ImdbId;
}
if (x.ImdbId.IsNotNullOrWhiteSpace())
{
return x.ImdbId;
}
return x.Title;
}).ToList();
return x.Title;
}).ToList(),
AnyFailure = anyFailure
};
}
@@ -112,9 +120,13 @@ namespace NzbDrone.Core.NetImport
return;
}
var listedMovies = Fetch(0, true);
var result = Fetch(0, true);
var listedMovies = result.Movies.ToList();
CleanLibrary(listedMovies);
if (!result.AnyFailure)
{
CleanLibrary(listedMovies);
}
listedMovies = listedMovies.Where(x => !_movieService.MovieExists(x)).ToList();
if (listedMovies.Any())