|
|
|
@ -5,6 +5,7 @@ using System.Linq;
|
|
|
|
|
using NLog;
|
|
|
|
|
using NzbDrone.Common.Disk;
|
|
|
|
|
using NzbDrone.Core.Configuration;
|
|
|
|
|
using NzbDrone.Core.Download;
|
|
|
|
|
using NzbDrone.Core.Extras.Files;
|
|
|
|
|
using NzbDrone.Core.MediaCover;
|
|
|
|
|
using NzbDrone.Core.MediaFiles;
|
|
|
|
@ -25,13 +26,15 @@ namespace NzbDrone.Core.Extras
|
|
|
|
|
IHandle<MediaCoversUpdatedEvent>,
|
|
|
|
|
IHandle<EpisodeFolderCreatedEvent>,
|
|
|
|
|
IHandle<SeriesScannedEvent>,
|
|
|
|
|
IHandle<SeriesRenamedEvent>
|
|
|
|
|
IHandle<SeriesRenamedEvent>,
|
|
|
|
|
IHandle<DownloadsProcessedEvent>
|
|
|
|
|
{
|
|
|
|
|
private readonly IMediaFileService _mediaFileService;
|
|
|
|
|
private readonly IEpisodeService _episodeService;
|
|
|
|
|
private readonly IDiskProvider _diskProvider;
|
|
|
|
|
private readonly IConfigService _configService;
|
|
|
|
|
private readonly List<IManageExtraFiles> _extraFileManagers;
|
|
|
|
|
private readonly Dictionary<int, Series> _seriesWithImportedFiles;
|
|
|
|
|
|
|
|
|
|
public ExtraService(IMediaFileService mediaFileService,
|
|
|
|
|
IEpisodeService episodeService,
|
|
|
|
@ -45,6 +48,7 @@ namespace NzbDrone.Core.Extras
|
|
|
|
|
_diskProvider = diskProvider;
|
|
|
|
|
_configService = configService;
|
|
|
|
|
_extraFileManagers = extraFileManagers.OrderBy(e => e.Order).ToList();
|
|
|
|
|
_seriesWithImportedFiles = new Dictionary<int, Series>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ImportEpisode(LocalEpisode localEpisode, EpisodeFile episodeFile, bool isReadOnly)
|
|
|
|
@ -100,6 +104,11 @@ namespace NzbDrone.Core.Extras
|
|
|
|
|
|
|
|
|
|
private void CreateAfterEpisodeImport(Series series, EpisodeFile episodeFile)
|
|
|
|
|
{
|
|
|
|
|
lock (_seriesWithImportedFiles)
|
|
|
|
|
{
|
|
|
|
|
_seriesWithImportedFiles.TryAdd(series.Id, series);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (var extraFileManager in _extraFileManagers)
|
|
|
|
|
{
|
|
|
|
|
extraFileManager.CreateAfterEpisodeImport(series, episodeFile);
|
|
|
|
@ -161,6 +170,26 @@ namespace NzbDrone.Core.Extras
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Handle(DownloadsProcessedEvent message)
|
|
|
|
|
{
|
|
|
|
|
var allSeries = new List<Series>();
|
|
|
|
|
|
|
|
|
|
lock (_seriesWithImportedFiles)
|
|
|
|
|
{
|
|
|
|
|
allSeries.AddRange(_seriesWithImportedFiles.Values);
|
|
|
|
|
|
|
|
|
|
_seriesWithImportedFiles.Clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (var series in allSeries)
|
|
|
|
|
{
|
|
|
|
|
foreach (var extraFileManager in _extraFileManagers)
|
|
|
|
|
{
|
|
|
|
|
extraFileManager.CreateAfterEpisodesImported(series);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<EpisodeFile> GetEpisodeFiles(int seriesId)
|
|
|
|
|
{
|
|
|
|
|
var episodeFiles = _mediaFileService.GetFilesBySeries(seriesId);
|
|
|
|
|