From 5c46c75ce727108dec44630c8f4238f48fa3378a Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 5 Jul 2023 08:44:51 +0300 Subject: [PATCH] Fix cleaning library in ImportListSyncService --- .../ImportListMovieService.cs | 2 +- .../ImportLists/ImportListSyncService.cs | 25 +++++++++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieService.cs b/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieService.cs index 846200587..f41498481 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieService.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieService.cs @@ -50,7 +50,7 @@ namespace NzbDrone.Core.ImportLists.ImportListMovies _importListMovieRepository.InsertMany(listMovies.Where(l => l.Id == 0).ToList()); _importListMovieRepository.UpdateMany(listMovies.Where(l => l.Id > 0).ToList()); - _importListMovieRepository.DeleteMany(existingListMovies.Where(l => !listMovies.Any(x => x.TmdbId == l.TmdbId)).ToList()); + _importListMovieRepository.DeleteMany(existingListMovies.Where(l => listMovies.All(x => x.TmdbId != l.TmdbId)).ToList()); return listMovies; } diff --git a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs index 73a61e414..e59d28698 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs @@ -20,6 +20,7 @@ namespace NzbDrone.Core.ImportLists private readonly IAddMovieService _addMovieService; private readonly IConfigService _configService; private readonly IImportExclusionsService _exclusionService; + private readonly IImportListMovieService _listMovieService; public ImportListSyncService(IImportListFactory importListFactory, IFetchAndParseImportList listFetcherAndParser, @@ -27,6 +28,7 @@ namespace NzbDrone.Core.ImportLists IAddMovieService addMovieService, IConfigService configService, IImportExclusionsService exclusionService, + IImportListMovieService listMovieService, Logger logger) { _importListFactory = importListFactory; @@ -34,6 +36,7 @@ namespace NzbDrone.Core.ImportLists _movieService = movieService; _addMovieService = addMovieService; _exclusionService = exclusionService; + _listMovieService = listMovieService; _logger = logger; _configService = configService; } @@ -57,10 +60,11 @@ namespace NzbDrone.Core.ImportLists return; } - // if (!result.AnyFailure) - // { - // CleanLibrary(result.Movies.ToList()); - // } + if (!result.AnyFailure) + { + CleanLibrary(); + } + ProcessReports(result); } @@ -79,7 +83,7 @@ namespace NzbDrone.Core.ImportLists } // Check to see if movie excluded - var excludedMovie = listExclusions.Where(s => s.TmdbId == report.TmdbId).SingleOrDefault(); + var excludedMovie = listExclusions.SingleOrDefault(s => s.TmdbId == report.TmdbId); if (excludedMovie != null) { @@ -171,17 +175,20 @@ namespace NzbDrone.Core.ImportLists } } - private void CleanLibrary(List listMovies) + private void CleanLibrary() { - var moviesToUpdate = new List(); - if (_configService.ListSyncLevel == "disabled") { return; } + var listMovies = _listMovieService.GetAllListMovies(); + // TODO use AllMovieTmdbIds here? var moviesInLibrary = _movieService.GetAllMovies(); + + var moviesToUpdate = new List(); + foreach (var movie in moviesInLibrary) { var movieExists = listMovies.Any(c => c.TmdbId == movie.TmdbId || c.ImdbId == movie.ImdbId); @@ -206,8 +213,6 @@ namespace NzbDrone.Core.ImportLists _logger.Info("{0} was in your library, but not found in your lists --> Removing from library and deleting files", movie); _movieService.DeleteMovie(movie.Id, true); break; - default: - break; } } }