From 6131a994970119863da9f79e06c782ef008f5baf Mon Sep 17 00:00:00 2001 From: Qstick Date: Tue, 21 Jul 2020 21:53:31 -0400 Subject: [PATCH] Fixed: Skip Flat Extra Files (Plex Naming) on Import Fixes #3914 --- .../DiskScanServiceTests/ScanFixture.cs | 18 ++++++++++++++++++ .../MediaFiles/DiskScanService.cs | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/DiskScanServiceTests/ScanFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/DiskScanServiceTests/ScanFixture.cs index c03c1a117..fb2c54f45 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/DiskScanServiceTests/ScanFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/DiskScanServiceTests/ScanFixture.cs @@ -422,6 +422,24 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests .Verify(v => v.GetImportDecisions(It.Is>(l => l.Count == 2), _series, false), Times.Once()); } + [Test] + public void should_exclude_inline_extra_files() + { + GivenSeriesFolder(); + + GivenFiles(new List + { + Path.Combine(_series.Path, "Series Title S01E01.mkv").AsOsAgnostic(), + Path.Combine(_series.Path, "Deleted Scenes-deleted.mkv").AsOsAgnostic(), + Path.Combine(_series.Path, "The World of Pandora-other.mkv").AsOsAgnostic() + }); + + Subject.Scan(_series); + + Mocker.GetMock() + .Verify(v => v.GetImportDecisions(It.Is>(l => l.Count == 1), _series), Times.Once()); + } + [Test] public void should_exclude_osx_metadata_files() { diff --git a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs index 2b862ad05..a036e33c0 100644 --- a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs +++ b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs @@ -71,6 +71,7 @@ namespace NzbDrone.Core.MediaFiles private static readonly Regex ExcludedExtrasSubFolderRegex = new Regex(@"(?:\\|\/|^)(?:extras|extrafanart|behind the scenes|deleted scenes|featurettes|interviews|scenes|samples|shorts|trailers)(?:\\|\/)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex ExcludedSubFoldersRegex = new Regex(@"(?:\\|\/|^)(?:@eadir|\.@__thumb|plex versions|\.[^\\/]+)(?:\\|\/)", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static readonly Regex ExcludedExtraFilesRegex = new Regex(@"(-(trailer|other|behindthescenes|deleted|featurette|interview|scene|short)\.[^.]+$)", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex ExcludedFilesRegex = new Regex(@"^\._|^Thumbs\.db$", RegexOptions.Compiled | RegexOptions.IgnoreCase); public void Scan(Series series) @@ -226,7 +227,9 @@ namespace NzbDrone.Core.MediaFiles if (filterExtras) { - filteredPaths = filteredPaths.Where(path => !ExcludedExtrasSubFolderRegex.IsMatch(basePath.GetRelativePath(path))).ToList(); + filteredPaths = filteredPaths.Where(path => !ExcludedExtrasSubFolderRegex.IsMatch(basePath.GetRelativePath(path))) + .Where(path => !ExcludedExtraFilesRegex.IsMatch(Path.GetFileName(path))) + .ToList(); } return filteredPaths;