From 1dfe6eb6edb4790d2af20754f8e6a3278ded4aaf Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 9 Jan 2019 17:51:54 -0800 Subject: [PATCH] Fixed: Importing of completed download when not a child of the download client output path --- .../MediaFiles/ImportApprovedMoviesFixture.cs | 16 ++++++++++++++++ .../MovieImport/ImportApprovedMovie.cs | 10 ++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedMoviesFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedMoviesFixture.cs index 9dfd374d5..b2ecbd004 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedMoviesFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedMoviesFixture.cs @@ -364,5 +364,21 @@ namespace NzbDrone.Core.Test.MediaFiles Mocker.GetMock().Verify(v => v.Add(It.Is(c => c.OriginalFilePath == $"{name}.mkv"))); } + + [Test] + public void should_use_folder_info_original_title_to_find_relative_path_when_file_is_not_in_download_client_item_output_directory() + { + var name = "Transformers.2007.720p.BluRay.x264-Radarr"; + var outputPath = Path.Combine(@"C:\Test\Unsorted\movie\".AsOsAgnostic(), name); + var localMovie = _approvedDecisions.First().LocalMovie; + + _downloadClientItem.OutputPath = new OsPath(Path.Combine(@"C:\Test\Unsorted\movie-Other\".AsOsAgnostic(), name)); + localMovie.FolderMovieInfo = new ParsedMovieInfo { ReleaseTitle = name }; + localMovie.Path = Path.Combine(outputPath, "subfolder", name + ".mkv"); + + Subject.Import(new List { _approvedDecisions.First() }, true, _downloadClientItem); + + Mocker.GetMock().Verify(v => v.Add(It.Is(c => c.OriginalFilePath == $"subfolder\\{name}.mkv".AsOsAgnostic()))); + } } } diff --git a/src/NzbDrone.Core/MediaFiles/MovieImport/ImportApprovedMovie.cs b/src/NzbDrone.Core/MediaFiles/MovieImport/ImportApprovedMovie.cs index e511fde8a..fb608b6a1 100644 --- a/src/NzbDrone.Core/MediaFiles/MovieImport/ImportApprovedMovie.cs +++ b/src/NzbDrone.Core/MediaFiles/MovieImport/ImportApprovedMovie.cs @@ -178,12 +178,18 @@ namespace NzbDrone.Core.MediaFiles.MovieImport private string GetOriginalFilePath(DownloadClientItem downloadClientItem, LocalMovie localMovie) { + var path = localMovie.Path; + if (downloadClientItem != null) { - return downloadClientItem.OutputPath.Directory.ToString().GetRelativePath(localMovie.Path); + var outputDirectory = downloadClientItem.OutputPath.Directory.ToString(); + + if (outputDirectory.IsParentPath(path)) + { + return outputDirectory.GetRelativePath(path); + } } - var path = localMovie.Path; var folderMovieInfo = localMovie.FolderMovieInfo; if (folderMovieInfo != null)