diff --git a/src/NzbDrone.Core/Extras/ExtraService.cs b/src/NzbDrone.Core/Extras/ExtraService.cs index d1a29d5aba..c19e94f661 100644 --- a/src/NzbDrone.Core/Extras/ExtraService.cs +++ b/src/NzbDrone.Core/Extras/ExtraService.cs @@ -23,6 +23,7 @@ public interface IExtraService public class ExtraService : IExtraService, IHandle, IHandle, + IHandle, IHandle { private readonly IMediaFileService _mediaFileService; @@ -51,7 +52,7 @@ public void ImportMovie(LocalMovie localMovie, MovieFile movieFile, bool isReadO { 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 @@ public void ImportExtraFiles(LocalMovie localMovie, MovieFile movieFile, bool is } } - private void CreateAfterImport(Movie movie, MovieFile movieFile) + private void CreateAfterMovieImport(Movie movie, MovieFile movieFile) { foreach (var extraFileManager in _extraFileManagers) { @@ -128,6 +129,19 @@ private void CreateAfterImport(Movie movie, MovieFile movieFile) } 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 @@ public void Handle(MovieFolderCreatedEvent message) 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 bcbcf3e5cd..1c4bff9f18 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 @@ public ExtraFileManager(IConfigService configService, } 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 6cb904ad4f..5c37973c9e 100644 --- a/src/NzbDrone.Core/Extras/Metadata/MetadataService.cs +++ b/src/NzbDrone.Core/Extras/Metadata/MetadataService.cs @@ -56,6 +56,31 @@ public MetadataService(IConfigService configService, 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 @@ public override IEnumerable CreateAfterMovieImport(Movie movie, Movie 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 73be18bf99..fc85c066d2 100644 --- a/src/NzbDrone.Core/Extras/Others/OtherExtraService.cs +++ b/src/NzbDrone.Core/Extras/Others/OtherExtraService.cs @@ -29,6 +29,11 @@ public OtherExtraService(IConfigService configService, 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 @@ public override IEnumerable CreateAfterMovieImport(Movie movie, Movie 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 7d869e08d3..1f409a31a7 100644 --- a/src/NzbDrone.Core/Extras/Subtitles/SubtitleService.cs +++ b/src/NzbDrone.Core/Extras/Subtitles/SubtitleService.cs @@ -35,6 +35,11 @@ public SubtitleService(IConfigService configService, 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 @@ public override IEnumerable CreateAfterMovieImport(Movie movie, Movie return Enumerable.Empty(); } - public override IEnumerable CreateAfterMovieImport(Movie movie, string movieFolder) + public override IEnumerable CreateAfterMovieFolder(Movie movie, string movieFolder) { return Enumerable.Empty(); }