From 3542b263c7a0ad6d73420c028dcec0f90348973e Mon Sep 17 00:00:00 2001 From: Qstick Date: Wed, 7 Jun 2023 20:12:59 -0500 Subject: [PATCH] Fixed: Don't die on movie refresh when collection has been deleted from TMDB Fixes #8664 --- .../Collections/AddMovieCollectionService.cs | 14 +++++++------- .../Movies/Collections/MovieCollectionService.cs | 5 +++++ src/NzbDrone.Core/Movies/RefreshMovieService.cs | 7 +++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/NzbDrone.Core/Movies/Collections/AddMovieCollectionService.cs b/src/NzbDrone.Core/Movies/Collections/AddMovieCollectionService.cs index eadec0c90..d1a1359de 100644 --- a/src/NzbDrone.Core/Movies/Collections/AddMovieCollectionService.cs +++ b/src/NzbDrone.Core/Movies/Collections/AddMovieCollectionService.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using FluentValidation; -using FluentValidation.Results; using NLog; using NzbDrone.Common.EnsureThat; using NzbDrone.Core.Exceptions; @@ -42,6 +39,12 @@ public MovieCollection AddMovieCollection(MovieCollection newCollection) } newCollection = AddSkyhookData(newCollection); + + if (newCollection == null) + { + return null; + } + newCollection = SetPropertiesAndValidate(newCollection); _logger.Info("Adding Collection {0}[{1}]", newCollection.Title, newCollection.TmdbId); @@ -63,10 +66,7 @@ private MovieCollection AddSkyhookData(MovieCollection newCollection) { _logger.Error("TmdbId {0} was not found, it may have been removed from TMDb.", newCollection.TmdbId); - throw new ValidationException(new List - { - new ValidationFailure("TmdbId", $"A collection with this ID was not found.", newCollection.TmdbId) - }); + return null; } collection.ApplyChanges(newCollection); diff --git a/src/NzbDrone.Core/Movies/Collections/MovieCollectionService.cs b/src/NzbDrone.Core/Movies/Collections/MovieCollectionService.cs index 3b8ee368a..501473253 100644 --- a/src/NzbDrone.Core/Movies/Collections/MovieCollectionService.cs +++ b/src/NzbDrone.Core/Movies/Collections/MovieCollectionService.cs @@ -122,6 +122,11 @@ public void HandleAsync(MoviesDeletedEvent message) var collection = FindByTmdbId(collectionTmdbId); + if (collection == null) + { + continue; + } + _repo.Delete(collection.Id); _eventAggregator.PublishEvent(new CollectionDeletedEvent(collection)); diff --git a/src/NzbDrone.Core/Movies/RefreshMovieService.cs b/src/NzbDrone.Core/Movies/RefreshMovieService.cs index 17b8b58be..b779b3cd2 100644 --- a/src/NzbDrone.Core/Movies/RefreshMovieService.cs +++ b/src/NzbDrone.Core/Movies/RefreshMovieService.cs @@ -144,8 +144,11 @@ private Movie RefreshMovieInfo(int movieId) RootFolderPath = _folderService.GetBestRootFolderPath(movie.Path).TrimEnd('/', '\\', ' ') }); - movieMetadata.CollectionTmdbId = newCollection.TmdbId; - movieMetadata.CollectionTitle = newCollection.Title; + if (newCollection != null) + { + movieMetadata.CollectionTmdbId = newCollection.TmdbId; + movieMetadata.CollectionTitle = newCollection.Title; + } } movieMetadata.AlternativeTitles = _titleService.UpdateTitles(movieInfo.AlternativeTitles, movieMetadata);