diff --git a/src/Radarr.Api.V3/Collections/CollectionController.cs b/src/Radarr.Api.V3/Collections/CollectionController.cs index 240c187ff..d7ec94409 100644 --- a/src/Radarr.Api.V3/Collections/CollectionController.cs +++ b/src/Radarr.Api.V3/Collections/CollectionController.cs @@ -4,6 +4,7 @@ using NzbDrone.Common.Extensions; using NzbDrone.Core.Configuration; using NzbDrone.Core.Datastore.Events; +using NzbDrone.Core.ImportLists.ImportExclusions; using NzbDrone.Core.Languages; using NzbDrone.Core.Messaging.Commands; using NzbDrone.Core.Messaging.Events; @@ -30,6 +31,7 @@ public class CollectionController : RestControllerWithSignalR MapToResource(List coll { // Avoid calling for naming spec on every movie in filenamebuilder var namingConfig = _namingService.GetConfig(); - var existingMoviesTmdbIds = _movieService.AllMovieWithCollectionsTmdbIds(); var configLanguage = (Language)_configService.MovieInfoLanguage; + var existingMoviesTmdbIds = _movieService.AllMovieWithCollectionsTmdbIds(); + var listExclusions = _importExclusionService.GetAllExclusions(); + var allCollectionMovies = _movieMetadataService.GetMoviesWithCollections() .GroupBy(x => x.CollectionTmdbId) .ToDictionary(x => x.Key, x => (IEnumerable)x); @@ -175,7 +181,9 @@ private IEnumerable MapToResource(List coll var movieResource = movie.ToResource(translation); movieResource.Folder = _fileNameBuilder.GetMovieFolder(new Movie { MovieMetadata = movie }, namingConfig); - if (!existingMoviesTmdbIds.Contains(movie.TmdbId)) + var isExcluded = listExclusions.Any(e => e.TmdbId == movie.TmdbId); + + if (!existingMoviesTmdbIds.Contains(movie.TmdbId) && !isExcluded) { resource.MissingMovies++; } @@ -191,10 +199,13 @@ private IEnumerable MapToResource(List coll private CollectionResource MapToResource(MovieCollection collection) { var resource = collection.ToResource(); - var existingMoviesTmdbIds = _movieService.AllMovieWithCollectionsTmdbIds(); + var namingConfig = _namingService.GetConfig(); var configLanguage = (Language)_configService.MovieInfoLanguage; + var existingMoviesTmdbIds = _movieService.AllMovieWithCollectionsTmdbIds(); + var listExclusions = _importExclusionService.GetAllExclusions(); + foreach (var movie in _movieMetadataService.GetMoviesByCollectionTmdbId(collection.TmdbId)) { var translations = _movieTranslationService.GetAllTranslationsForMovieMetadata(movie.Id); @@ -203,7 +214,9 @@ private CollectionResource MapToResource(MovieCollection collection) var movieResource = movie.ToResource(translation); movieResource.Folder = _fileNameBuilder.GetMovieFolder(new Movie { MovieMetadata = movie }, namingConfig); - if (!existingMoviesTmdbIds.Contains(movie.TmdbId)) + var isExcluded = listExclusions.Any(e => e.TmdbId == movie.TmdbId); + + if (!existingMoviesTmdbIds.Contains(movie.TmdbId) && !isExcluded) { resource.MissingMovies++; } diff --git a/src/Radarr.Api.V3/Collections/CollectionMovieResource.cs b/src/Radarr.Api.V3/Collections/CollectionMovieResource.cs index 9c0af0452..4dbf27b16 100644 --- a/src/Radarr.Api.V3/Collections/CollectionMovieResource.cs +++ b/src/Radarr.Api.V3/Collections/CollectionMovieResource.cs @@ -20,6 +20,7 @@ public class CollectionMovieResource public Ratings Ratings { get; set; } public List Genres { get; set; } public string Folder { get; set; } + public bool IsExcluded { get; set; } } public static class CollectionMovieResourceMapper