mirror of
https://github.com/Sonarr/Sonarr
synced 2025-02-24 07:01:29 +00:00
Fixed: Manual importing to nested series folders
This commit is contained in:
parent
ea0bfed700
commit
a6735e7a3f
2 changed files with 17 additions and 2 deletions
|
@ -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…
Reference in a new issue