diff --git a/src/NzbDrone.Core.Test/MediaFiles/MovieImport/DetectSampleFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/MovieImport/DetectSampleFixture.cs index 8a34f95a74..71eaa3e1fd 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/MovieImport/DetectSampleFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/MovieImport/DetectSampleFixture.cs @@ -61,6 +61,36 @@ public void should_return_false_for_strm() Mocker.GetMock().Verify(c => c.GetRunTime(It.IsAny()), Times.Never()); } + [Test] + public void should_return_false_for_iso() + { + _localMovie.Path = @"C:\Test\some movie (2000).iso"; + + ShouldBeNotSample(); + + Mocker.GetMock().Verify(c => c.GetRunTime(It.IsAny()), Times.Never()); + } + + [Test] + public void should_return_false_for_img() + { + _localMovie.Path = @"C:\Test\some movie (2000).img"; + + ShouldBeNotSample(); + + Mocker.GetMock().Verify(c => c.GetRunTime(It.IsAny()), Times.Never()); + } + + [Test] + public void should_return_false_for_m2ts() + { + _localMovie.Path = @"C:\Test\some movie (2000).m2ts"; + + ShouldBeNotSample(); + + Mocker.GetMock().Verify(c => c.GetRunTime(It.IsAny()), Times.Never()); + } + [Test] public void should_use_runtime() { diff --git a/src/NzbDrone.Core/MediaFiles/MediaFileExtensions.cs b/src/NzbDrone.Core/MediaFiles/MediaFileExtensions.cs index e63ed07091..3965374641 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaFileExtensions.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaFileExtensions.cs @@ -10,7 +10,7 @@ public static class MediaFileExtensions static MediaFileExtensions() { - _fileExtensions = new Dictionary + _fileExtensions = new Dictionary(StringComparer.OrdinalIgnoreCase) { //Unknown { ".webm", Quality.Unknown }, @@ -75,9 +75,9 @@ static MediaFileExtensions() public static Quality GetQualityForExtension(string extension) { - if (_fileExtensions.ContainsKey(extension)) + if (_fileExtensions.TryGetValue(extension, out var quality)) { - return _fileExtensions[extension]; + return quality; } return Quality.Unknown; diff --git a/src/NzbDrone.Core/MediaFiles/MovieImport/DetectSample.cs b/src/NzbDrone.Core/MediaFiles/MovieImport/DetectSample.cs index 8dc4f7c11c..ed1caf2ce8 100644 --- a/src/NzbDrone.Core/MediaFiles/MovieImport/DetectSample.cs +++ b/src/NzbDrone.Core/MediaFiles/MovieImport/DetectSample.cs @@ -1,8 +1,10 @@ using System; using System.IO; +using System.Linq; using NLog; using NzbDrone.Core.MediaFiles.MediaInfo; using NzbDrone.Core.Movies; +using NzbDrone.Core.Qualities; namespace NzbDrone.Core.MediaFiles.MovieImport { @@ -32,16 +34,25 @@ public DetectSampleResult IsSample(Movie movie, string path, bool isSpecial) var extension = Path.GetExtension(path); - if (extension != null && extension.Equals(".flv", StringComparison.InvariantCultureIgnoreCase)) + if (extension != null) { - _logger.Debug("Skipping sample check for .flv file"); - return DetectSampleResult.NotSample; - } + if (extension.Equals(".flv", StringComparison.InvariantCultureIgnoreCase)) + { + _logger.Debug("Skipping sample check for .flv file"); + return DetectSampleResult.NotSample; + } - if (extension != null && extension.Equals(".strm", StringComparison.InvariantCultureIgnoreCase)) - { - _logger.Debug("Skipping sample check for .strm file"); - return DetectSampleResult.NotSample; + if (extension.Equals(".strm", StringComparison.InvariantCultureIgnoreCase)) + { + _logger.Debug("Skipping sample check for .strm file"); + return DetectSampleResult.NotSample; + } + + if (new string[] { ".iso", ".img", ".m2ts" }.Contains(extension, StringComparer.OrdinalIgnoreCase)) + { + _logger.Debug($"Skipping sample check for DVD/BR image file '{path}'"); + return DetectSampleResult.NotSample; + } } // TODO: Use MediaInfo from the import process, no need to re-process the file again here