From b7f53f7e262ff9e1d1c0c3663b047441f8d8781e Mon Sep 17 00:00:00 2001 From: Visne <39844191+Visne@users.noreply.github.com> Date: Tue, 3 Oct 2023 05:39:23 +0200 Subject: [PATCH] WIP --- src/NzbDrone.Core/Extras/ExtraService.cs | 39 ++++++----------- .../TrackImport/ImportApprovedTracks.cs | 42 +++++++++---------- 2 files changed, 33 insertions(+), 48 deletions(-) diff --git a/src/NzbDrone.Core/Extras/ExtraService.cs b/src/NzbDrone.Core/Extras/ExtraService.cs index c86acc38a..d6805ec65 100644 --- a/src/NzbDrone.Core/Extras/ExtraService.cs +++ b/src/NzbDrone.Core/Extras/ExtraService.cs @@ -11,13 +11,12 @@ using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles.Events; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Music; -using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.Extras { public interface IExtraService { - void ImportTrack(LocalTrack localTrack, TrackFile trackFile, bool isReadOnly); + void ImportExtraFiles(string sourceFolder, TrackFile trackFile, bool isReadOnly); } public class ExtraService : IExtraService, @@ -51,30 +50,24 @@ namespace NzbDrone.Core.Extras _logger = logger; } - public void ImportTrack(LocalTrack localTrack, TrackFile trackFile, bool isReadOnly) - { - ImportExtraFiles(localTrack, trackFile, isReadOnly); - - CreateAfterTrackImport(localTrack.Artist, trackFile); - } - - public void ImportExtraFiles(LocalTrack localTrack, TrackFile trackFile, bool isReadOnly) + public void ImportExtraFiles(string sourceFolder, TrackFile trackFile, bool isReadOnly) { if (!_configService.ImportExtraFiles) { return; } - var sourcePath = localTrack.Path; - var sourceFolder = _diskProvider.GetParentFolder(sourcePath); - var sourceFileName = Path.GetFileNameWithoutExtension(sourcePath); + var sourceFileName = Path.GetFileNameWithoutExtension(trackFile.Path); var files = _diskProvider.GetFiles(sourceFolder, false); - var wantedExtensions = _configService.ExtraFileExtensions.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) - .Select(e => e.Trim(' ', '.')) - .ToList(); + var wantedExtensions = _configService.ExtraFileExtensions + .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) + .Select(e => e.Trim(' ', '.')) + .ToList(); - var matchingFilenames = files.Where(f => Path.GetFileNameWithoutExtension(f).StartsWith(sourceFileName, StringComparison.InvariantCultureIgnoreCase)).ToList(); + var matchingFilenames = files.Where(f => + Path.GetFileNameWithoutExtension(f) + .StartsWith(sourceFileName, StringComparison.InvariantCultureIgnoreCase)).ToList(); var filteredFilenames = new List(); var hasNfo = false; @@ -105,10 +98,10 @@ namespace NzbDrone.Core.Extras try { - foreach (var extraFileManager in _extraFileManagers) + foreach (var extraFileManager1 in _extraFileManagers) { var extension = Path.GetExtension(matchingFilename); - var extraFile = extraFileManager.Import(localTrack.Artist, trackFile, matchingFilename, extension, isReadOnly); + var extraFile = extraFileManager1.Import(trackFile.Artist, trackFile, matchingFilename, extension, isReadOnly); if (extraFile != null) { @@ -123,14 +116,6 @@ namespace NzbDrone.Core.Extras } } - private void CreateAfterTrackImport(Artist artist, TrackFile trackFile) - { - foreach (var extraFileManager in _extraFileManagers) - { - extraFileManager.CreateAfterTrackImport(artist, trackFile); - } - } - public void Handle(MediaCoversUpdatedEvent message) { if (message.Updated) diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs index ba54e10c8..a23442c79 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/ImportApprovedTracks.cs @@ -9,6 +9,7 @@ using NzbDrone.Common.Instrumentation.Extensions; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Download; using NzbDrone.Core.Extras; +using NzbDrone.Core.Extras.Files; using NzbDrone.Core.MediaFiles.Events; using NzbDrone.Core.Messaging.Commands; using NzbDrone.Core.Messaging.Events; @@ -43,6 +44,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport private readonly IReleaseService _releaseService; private readonly IEventAggregator _eventAggregator; private readonly IManageCommandQueue _commandQueueManager; + private readonly List _extraFileManagers; private readonly Logger _logger; public ImportApprovedTracks(IUpgradeMediaFiles trackFileUpgrader, @@ -60,6 +62,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport IReleaseService releaseService, IEventAggregator eventAggregator, IManageCommandQueue commandQueueManager, + IEnumerable extraFileManagers, Logger logger) { _trackFileUpgrader = trackFileUpgrader; @@ -77,6 +80,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport _releaseService = releaseService; _eventAggregator = eventAggregator; _commandQueueManager = commandQueueManager; + _extraFileManagers = extraFileManagers.OrderBy(e => e.Order).ToList(); _logger = logger; } @@ -143,6 +147,13 @@ namespace NzbDrone.Core.MediaFiles.TrackImport var albumReleasesDict = new Dictionary>(albumDecisions.Count); var trackImportedEvents = new List(qualifiedImports.Count); + var copyOnly = importMode switch + { + ImportMode.Move => false, + ImportMode.Copy => true, + _ => downloadClientItem is { CanMoveFiles: false }, + }; + foreach (var importDecision in qualifiedImports.OrderBy(e => e.Item.Tracks.Select(track => track.AbsoluteTrackNumber).MinOrDefault()) .ThenByDescending(e => e.Item.Size)) { @@ -197,21 +208,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport Tracks = localTrack.Tracks }; - bool copyOnly; - switch (importMode) - { - default: - case ImportMode.Auto: - copyOnly = downloadClientItem != null && !downloadClientItem.CanMoveFiles; - break; - case ImportMode.Move: - copyOnly = false; - break; - case ImportMode.Copy: - copyOnly = true; - break; - } - if (!localTrack.ExistingFile) { trackFile.SceneName = localTrack.SceneName; @@ -235,12 +231,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport filesToAdd.Add(trackFile); importResults.Add(new ImportResult(importDecision)); - - if (!localTrack.ExistingFile) - { - _extraService.ImportTrack(localTrack, trackFile, copyOnly); - } - allImportedTrackFiles.Add(trackFile); allOldTrackFiles.AddRange(oldFiles); @@ -281,6 +271,16 @@ namespace NzbDrone.Core.MediaFiles.TrackImport } } + // _extraService.ImportExtraFiles(sourceFolder, track, copyOnly); + + foreach (var track in allImportedTrackFiles) + { + foreach (var extraFileManager in _extraFileManagers) + { + extraFileManager.CreateAfterTrackImport(track.Artist, track); + } + } + var watch = new System.Diagnostics.Stopwatch(); watch.Start(); _mediaFileService.AddMany(filesToAdd);