Fixed: Manual importing to nested series folders

pull/7281/head
Bogdan 5 months ago committed by Mark McDowall
parent ea0bfed700
commit a6735e7a3f

@ -12,6 +12,7 @@ using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Organizer; using NzbDrone.Core.Organizer;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Tv; using NzbDrone.Core.Tv;
using NzbDrone.Test.Common; using NzbDrone.Test.Common;
@ -51,6 +52,11 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeFileMovingServiceTests
.Returns(@"C:\Test\TV\Series\Season 01".AsOsAgnostic()); .Returns(@"C:\Test\TV\Series\Season 01".AsOsAgnostic());
var rootFolder = @"C:\Test\TV\".AsOsAgnostic(); var rootFolder = @"C:\Test\TV\".AsOsAgnostic();
Mocker.GetMock<IRootFolderService>()
.Setup(s => s.GetBestRootFolderPath(It.IsAny<string>()))
.Returns(rootFolder);
Mocker.GetMock<IDiskProvider>() Mocker.GetMock<IDiskProvider>()
.Setup(s => s.FolderExists(rootFolder)) .Setup(s => s.FolderExists(rootFolder))
.Returns(true); .Returns(true);

@ -12,6 +12,7 @@ using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Organizer; using NzbDrone.Core.Organizer;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Tv; using NzbDrone.Core.Tv;
namespace NzbDrone.Core.MediaFiles namespace NzbDrone.Core.MediaFiles
@ -32,6 +33,7 @@ namespace NzbDrone.Core.MediaFiles
private readonly IDiskProvider _diskProvider; private readonly IDiskProvider _diskProvider;
private readonly IMediaFileAttributeService _mediaFileAttributeService; private readonly IMediaFileAttributeService _mediaFileAttributeService;
private readonly IImportScript _scriptImportDecider; private readonly IImportScript _scriptImportDecider;
private readonly IRootFolderService _rootFolderService;
private readonly IEventAggregator _eventAggregator; private readonly IEventAggregator _eventAggregator;
private readonly IConfigService _configService; private readonly IConfigService _configService;
private readonly Logger _logger; private readonly Logger _logger;
@ -43,6 +45,7 @@ namespace NzbDrone.Core.MediaFiles
IDiskProvider diskProvider, IDiskProvider diskProvider,
IMediaFileAttributeService mediaFileAttributeService, IMediaFileAttributeService mediaFileAttributeService,
IImportScript scriptImportDecider, IImportScript scriptImportDecider,
IRootFolderService rootFolderService,
IEventAggregator eventAggregator, IEventAggregator eventAggregator,
IConfigService configService, IConfigService configService,
Logger logger) Logger logger)
@ -54,6 +57,7 @@ namespace NzbDrone.Core.MediaFiles
_diskProvider = diskProvider; _diskProvider = diskProvider;
_mediaFileAttributeService = mediaFileAttributeService; _mediaFileAttributeService = mediaFileAttributeService;
_scriptImportDecider = scriptImportDecider; _scriptImportDecider = scriptImportDecider;
_rootFolderService = rootFolderService;
_eventAggregator = eventAggregator; _eventAggregator = eventAggregator;
_configService = configService; _configService = configService;
_logger = logger; _logger = logger;
@ -180,11 +184,16 @@ namespace NzbDrone.Core.MediaFiles
var episodeFolder = Path.GetDirectoryName(filePath); var episodeFolder = Path.GetDirectoryName(filePath);
var seasonFolder = _buildFileNames.BuildSeasonPath(series, seasonNumber); var seasonFolder = _buildFileNames.BuildSeasonPath(series, seasonNumber);
var seriesFolder = series.Path; var seriesFolder = series.Path;
var rootFolder = new OsPath(seriesFolder).Directory.FullPath; var rootFolder = _rootFolderService.GetBestRootFolderPath(seriesFolder);
if (rootFolder.IsNullOrWhiteSpace())
{
throw new RootFolderNotFoundException($"Root folder was not found, '{seriesFolder}' is not a subdirectory of a defined root folder.");
}
if (!_diskProvider.FolderExists(rootFolder)) if (!_diskProvider.FolderExists(rootFolder))
{ {
throw new RootFolderNotFoundException(string.Format("Root folder '{0}' was not found.", rootFolder)); throw new RootFolderNotFoundException($"Root folder '{rootFolder}' was not found.");
} }
var changed = false; var changed = false;

Loading…
Cancel
Save