Fixed: Generating Kodi episode metadata files when scanning series folder

(cherry picked from commit 23dc7794f14c99558b7d40729d6c63f8ae747a1e)
This commit is contained in:
Taloth Saldono 2020-09-30 22:37:45 +01:00 committed by Qstick
parent a085dd38a6
commit bf0617f999
5 changed files with 59 additions and 8 deletions

View File

@ -24,6 +24,7 @@ namespace NzbDrone.Core.Extras
public class ExtraService : IExtraService,
IHandle<MediaCoversUpdatedEvent>,
IHandle<TrackFolderCreatedEvent>,
IHandle<ArtistScannedEvent>,
IHandle<ArtistRenamedEvent>
{
private readonly IMediaFileService _mediaFileService;
@ -55,7 +56,7 @@ namespace NzbDrone.Core.Extras
{
ImportExtraFiles(localTrack, trackFile, isReadOnly);
CreateAfterImport(localTrack.Artist, trackFile);
CreateAfterTrackImport(localTrack.Artist, trackFile);
}
public void ImportExtraFiles(LocalTrack localTrack, TrackFile trackFile, bool isReadOnly)
@ -123,7 +124,7 @@ namespace NzbDrone.Core.Extras
}
}
private void CreateAfterImport(Artist artist, TrackFile trackFile)
private void CreateAfterTrackImport(Artist artist, TrackFile trackFile)
{
foreach (var extraFileManager in _extraFileManagers)
{
@ -132,6 +133,19 @@ namespace NzbDrone.Core.Extras
}
public void Handle(MediaCoversUpdatedEvent message)
{
if (message.Updated)
{
var artist = message.Artist;
foreach (var extraFileManager in _extraFileManagers)
{
extraFileManager.CreateAfterMediaCoverUpdate(artist);
}
}
}
public void Handle(ArtistScannedEvent message)
{
var artist = message.Artist;
@ -150,7 +164,7 @@ namespace NzbDrone.Core.Extras
foreach (var extraFileManager in _extraFileManagers)
{
extraFileManager.CreateAfterTrackImport(artist, album, message.ArtistFolder, message.AlbumFolder);
extraFileManager.CreateAfterTrackFolder(artist, album, message.ArtistFolder, message.AlbumFolder);
}
}

View File

@ -14,9 +14,10 @@ namespace NzbDrone.Core.Extras.Files
public interface IManageExtraFiles
{
int Order { get; }
IEnumerable<ExtraFile> CreateAfterMediaCoverUpdate(Artist artist);
IEnumerable<ExtraFile> CreateAfterArtistScan(Artist artist, List<TrackFile> trackFiles);
IEnumerable<ExtraFile> CreateAfterTrackImport(Artist artist, TrackFile trackFile);
IEnumerable<ExtraFile> CreateAfterTrackImport(Artist artist, Album album, string artistFolder, string albumFolder);
IEnumerable<ExtraFile> CreateAfterTrackFolder(Artist artist, Album album, string artistFolder, string albumFolder);
IEnumerable<ExtraFile> MoveFilesAfterRename(Artist artist, List<TrackFile> trackFiles);
ExtraFile Import(Artist artist, TrackFile trackFile, string path, string extension, bool readOnly);
}
@ -41,9 +42,10 @@ namespace NzbDrone.Core.Extras.Files
}
public abstract int Order { get; }
public abstract IEnumerable<ExtraFile> CreateAfterMediaCoverUpdate(Artist artist);
public abstract IEnumerable<ExtraFile> CreateAfterArtistScan(Artist artist, List<TrackFile> trackFiles);
public abstract IEnumerable<ExtraFile> CreateAfterTrackImport(Artist artist, TrackFile trackFile);
public abstract IEnumerable<ExtraFile> CreateAfterTrackImport(Artist artist, Album album, string artistFolder, string albumFolder);
public abstract IEnumerable<ExtraFile> CreateAfterTrackFolder(Artist artist, Album album, string artistFolder, string albumFolder);
public abstract IEnumerable<ExtraFile> MoveFilesAfterRename(Artist artist, List<TrackFile> trackFiles);
public abstract ExtraFile Import(Artist artist, TrackFile trackFile, string path, string extension, bool readOnly);

View File

@ -33,6 +33,11 @@ namespace NzbDrone.Core.Extras.Lyrics
public override int Order => 1;
public override IEnumerable<ExtraFile> CreateAfterMediaCoverUpdate(Artist artist)
{
return Enumerable.Empty<ExtraFile>();
}
public override IEnumerable<ExtraFile> CreateAfterArtistScan(Artist artist, List<TrackFile> trackFiles)
{
return Enumerable.Empty<LyricFile>();
@ -43,7 +48,7 @@ namespace NzbDrone.Core.Extras.Lyrics
return Enumerable.Empty<LyricFile>();
}
public override IEnumerable<ExtraFile> CreateAfterTrackImport(Artist artist, Album album, string artistFolder, string albumFolder)
public override IEnumerable<ExtraFile> CreateAfterTrackFolder(Artist artist, Album album, string artistFolder, string albumFolder)
{
return Enumerable.Empty<LyricFile>();
}

View File

@ -59,6 +59,31 @@ namespace NzbDrone.Core.Extras.Metadata
public override int Order => 0;
public override IEnumerable<ExtraFile> CreateAfterMediaCoverUpdate(Artist artist)
{
var metadataFiles = _metadataFileService.GetFilesByArtist(artist.Id);
_cleanMetadataService.Clean(artist);
if (!_diskProvider.FolderExists(artist.Path))
{
_logger.Info("Artist folder does not exist, skipping metadata image creation");
return Enumerable.Empty<MetadataFile>();
}
var files = new List<MetadataFile>();
foreach (var consumer in _metadataFactory.Enabled())
{
var consumerFiles = GetMetadataFilesForConsumer(consumer, metadataFiles);
files.AddRange(ProcessArtistImages(consumer, artist, consumerFiles));
}
_metadataFileService.Upsert(files);
return files;
}
public override IEnumerable<ExtraFile> CreateAfterArtistScan(Artist artist, List<TrackFile> trackFiles)
{
var metadataFiles = _metadataFileService.GetFilesByArtist(artist.Id);
@ -114,7 +139,7 @@ namespace NzbDrone.Core.Extras.Metadata
return files;
}
public override IEnumerable<ExtraFile> CreateAfterTrackImport(Artist artist, Album album, string artistFolder, string albumFolder)
public override IEnumerable<ExtraFile> CreateAfterTrackFolder(Artist artist, Album album, string artistFolder, string albumFolder)
{
var metadataFiles = _metadataFileService.GetFilesByArtist(artist.Id);

View File

@ -29,6 +29,11 @@ namespace NzbDrone.Core.Extras.Others
public override int Order => 2;
public override IEnumerable<ExtraFile> CreateAfterMediaCoverUpdate(Artist artist)
{
return Enumerable.Empty<ExtraFile>();
}
public override IEnumerable<ExtraFile> CreateAfterArtistScan(Artist artist, List<TrackFile> trackFiles)
{
return Enumerable.Empty<ExtraFile>();
@ -39,7 +44,7 @@ namespace NzbDrone.Core.Extras.Others
return Enumerable.Empty<ExtraFile>();
}
public override IEnumerable<ExtraFile> CreateAfterTrackImport(Artist artist, Album album, string artistFolder, string albumFolder)
public override IEnumerable<ExtraFile> CreateAfterTrackFolder(Artist artist, Album album, string artistFolder, string albumFolder)
{
return Enumerable.Empty<ExtraFile>();
}