diff --git a/src/NzbDrone.Core/Extras/ExtraService.cs b/src/NzbDrone.Core/Extras/ExtraService.cs index d1a29d5ab..c19e94f66 100644 --- a/src/NzbDrone.Core/Extras/ExtraService.cs +++ b/src/NzbDrone.Core/Extras/ExtraService.cs @@ -23,6 +23,7 @@ namespace NzbDrone.Core.Extras public class ExtraService : IExtraService, IHandle, IHandle, + IHandle, IHandle { private readonly IMediaFileService _mediaFileService; @@ -51,7 +52,7 @@ namespace NzbDrone.Core.Extras { ImportExtraFiles(localMovie, movieFile, isReadOnly); - CreateAfterImport(localMovie.Movie, movieFile); + CreateAfterMovieImport(localMovie.Movie, movieFile); } public void ImportExtraFiles(LocalMovie localMovie, MovieFile movieFile, bool isReadOnly) @@ -119,7 +120,7 @@ namespace NzbDrone.Core.Extras } } - private void CreateAfterImport(Movie movie, MovieFile movieFile) + private void CreateAfterMovieImport(Movie movie, MovieFile movieFile) { foreach (var extraFileManager in _extraFileManagers) { @@ -128,6 +129,19 @@ namespace NzbDrone.Core.Extras } public void Handle(MediaCoversUpdatedEvent message) + { + if (message.Updated) + { + var movie = message.Movie; + + foreach (var extraFileManager in _extraFileManagers) + { + extraFileManager.CreateAfterMediaCoverUpdate(movie); + } + } + } + + public void Handle(MovieScannedEvent message) { var movie = message.Movie; var movieFiles = GetMovieFiles(movie.Id); @@ -144,7 +158,7 @@ namespace NzbDrone.Core.Extras foreach (var extraFileManager in _extraFileManagers) { - extraFileManager.CreateAfterMovieImport(movie, message.MovieFolder); + extraFileManager.CreateAfterMovieFolder(movie, message.MovieFolder); } } diff --git a/src/NzbDrone.Core/Extras/Files/ExtraFileManager.cs b/src/NzbDrone.Core/Extras/Files/ExtraFileManager.cs index bcbcf3e5c..1c4bff9f1 100644 --- a/src/NzbDrone.Core/Extras/Files/ExtraFileManager.cs +++ b/src/NzbDrone.Core/Extras/Files/ExtraFileManager.cs @@ -14,9 +14,10 @@ namespace NzbDrone.Core.Extras.Files public interface IManageExtraFiles { int Order { get; } + IEnumerable CreateAfterMediaCoverUpdate(Movie movie); IEnumerable CreateAfterMovieScan(Movie movie, List movieFiles); IEnumerable CreateAfterMovieImport(Movie movie, MovieFile movieFile); - IEnumerable CreateAfterMovieImport(Movie movie, string movieFolder); + IEnumerable CreateAfterMovieFolder(Movie movie, string movieFolder); IEnumerable MoveFilesAfterRename(Movie movie, List movieFiles); ExtraFile Import(Movie movie, MovieFile movieFile, string path, string extension, bool readOnly); } @@ -41,9 +42,10 @@ namespace NzbDrone.Core.Extras.Files } public abstract int Order { get; } + public abstract IEnumerable CreateAfterMediaCoverUpdate(Movie movie); public abstract IEnumerable CreateAfterMovieScan(Movie movie, List movieFiles); public abstract IEnumerable CreateAfterMovieImport(Movie movie, MovieFile movieFile); - public abstract IEnumerable CreateAfterMovieImport(Movie movie, string movieFolder); + public abstract IEnumerable CreateAfterMovieFolder(Movie movie, string movieFolder); public abstract IEnumerable MoveFilesAfterRename(Movie movie, List movieFiles); public abstract ExtraFile Import(Movie movie, MovieFile movieFile, string path, string extension, bool readOnly); diff --git a/src/NzbDrone.Core/Extras/Metadata/MetadataService.cs b/src/NzbDrone.Core/Extras/Metadata/MetadataService.cs index 6cb904ad4..5c37973c9 100644 --- a/src/NzbDrone.Core/Extras/Metadata/MetadataService.cs +++ b/src/NzbDrone.Core/Extras/Metadata/MetadataService.cs @@ -56,6 +56,31 @@ namespace NzbDrone.Core.Extras.Metadata public override int Order => 0; + public override IEnumerable CreateAfterMediaCoverUpdate(Movie movie) + { + var metadataFiles = _metadataFileService.GetFilesByMovie(movie.Id); + _cleanMetadataService.Clean(movie); + + if (!_diskProvider.FolderExists(movie.Path)) + { + _logger.Info("Movie folder does not exist, skipping metadata image creation"); + return Enumerable.Empty(); + } + + var files = new List(); + + foreach (var consumer in _metadataFactory.Enabled()) + { + var consumerFiles = GetMetadataFilesForConsumer(consumer, metadataFiles); + + files.AddRange(ProcessMovieImages(consumer, movie, consumerFiles)); + } + + _metadataFileService.Upsert(files); + + return files; + } + public override IEnumerable CreateAfterMovieScan(Movie movie, List movieFiles) { var metadataFiles = _metadataFileService.GetFilesByMovie(movie.Id); @@ -100,7 +125,7 @@ namespace NzbDrone.Core.Extras.Metadata return files; } - public override IEnumerable CreateAfterMovieImport(Movie movie, string movieFolder) + public override IEnumerable CreateAfterMovieFolder(Movie movie, string movieFolder) { var metadataFiles = _metadataFileService.GetFilesByMovie(movie.Id); diff --git a/src/NzbDrone.Core/Extras/Others/OtherExtraService.cs b/src/NzbDrone.Core/Extras/Others/OtherExtraService.cs index 73be18bf9..fc85c066d 100644 --- a/src/NzbDrone.Core/Extras/Others/OtherExtraService.cs +++ b/src/NzbDrone.Core/Extras/Others/OtherExtraService.cs @@ -29,6 +29,11 @@ namespace NzbDrone.Core.Extras.Others public override int Order => 2; + public override IEnumerable CreateAfterMediaCoverUpdate(Movie movie) + { + return Enumerable.Empty(); + } + public override IEnumerable CreateAfterMovieScan(Movie movie, List movieFiles) { return Enumerable.Empty(); @@ -39,7 +44,7 @@ namespace NzbDrone.Core.Extras.Others return Enumerable.Empty(); } - public override IEnumerable CreateAfterMovieImport(Movie movie, string movieFolder) + public override IEnumerable CreateAfterMovieFolder(Movie movie, string movieFolder) { return Enumerable.Empty(); } diff --git a/src/NzbDrone.Core/Extras/Subtitles/SubtitleService.cs b/src/NzbDrone.Core/Extras/Subtitles/SubtitleService.cs index 7d869e08d..1f409a31a 100644 --- a/src/NzbDrone.Core/Extras/Subtitles/SubtitleService.cs +++ b/src/NzbDrone.Core/Extras/Subtitles/SubtitleService.cs @@ -35,6 +35,11 @@ namespace NzbDrone.Core.Extras.Subtitles public override int Order => 1; + public override IEnumerable CreateAfterMediaCoverUpdate(Movie movie) + { + return Enumerable.Empty(); + } + public override IEnumerable CreateAfterMovieScan(Movie movie, List movieFiles) { return Enumerable.Empty(); @@ -45,7 +50,7 @@ namespace NzbDrone.Core.Extras.Subtitles return Enumerable.Empty(); } - public override IEnumerable CreateAfterMovieImport(Movie movie, string movieFolder) + public override IEnumerable CreateAfterMovieFolder(Movie movie, string movieFolder) { return Enumerable.Empty(); }