diff --git a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/GetVideoFilesFixture.cs b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/GetVideoFilesFixture.cs index b73e09984..bb2bb4f93 100644 --- a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/GetVideoFilesFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/GetVideoFilesFixture.cs @@ -69,7 +69,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests public void should_return_video_files_only() { var path = @"C:\Test\"; - + var test = Subject.GetVideoFiles(path); Subject.GetVideoFiles(path).Should().HaveCount(4); } } diff --git a/NzbDrone.Core/MediaFiles/DiskScanService.cs b/NzbDrone.Core/MediaFiles/DiskScanService.cs index fc5aade8e..a24966c17 100644 --- a/NzbDrone.Core/MediaFiles/DiskScanService.cs +++ b/NzbDrone.Core/MediaFiles/DiskScanService.cs @@ -21,16 +21,6 @@ namespace NzbDrone.Core.MediaFiles IDiskScanService, IHandle { - private readonly HashSet _mediaExtensions; - - private const string EXTENSIONS = - //XBMC - ".m4v .3gp .nsv .ts .ty .strm .rm .rmvb .m3u .ifo .mov .qt .divx .xvid .bivx .vob .nrg .img " + - ".iso .pva .wmv .asf .asx .ogm .m2v .avi .bin .dat .dvr-ms .mpg .mpeg .mp4 .mkv .avc .vp3 " + - ".svq3 .nuv .viv .dv .fli .flv .wpl " + - //Other - ".m2ts"; - private readonly IDiskProvider _diskProvider; private readonly IMakeImportDecision _importDecisionMaker; private readonly IImportApprovedEpisodes _importApprovedEpisodes; @@ -47,8 +37,6 @@ namespace NzbDrone.Core.MediaFiles _importApprovedEpisodes = importApprovedEpisodes; _messageAggregator = messageAggregator; _logger = logger; - - _mediaExtensions = new HashSet(EXTENSIONS.Split(' ').Select(c => c.ToLower())); } private void Scan(Series series) @@ -77,7 +65,7 @@ namespace NzbDrone.Core.MediaFiles var searchOption = allDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; var filesOnDisk = _diskProvider.GetFiles(path, searchOption); - var mediaFileList = filesOnDisk.Where(c => _mediaExtensions.Contains(Path.GetExtension(c).ToLower())).ToList(); + var mediaFileList = filesOnDisk.Where(c => MediaFileExtensions.Extensions.Contains(Path.GetExtension(c).ToLower())).ToList(); _logger.Trace("{0} video files were found in {1}", mediaFileList.Count, path); return mediaFileList.ToArray(); diff --git a/NzbDrone.Core/MediaFiles/MediaFileExtensions.cs b/NzbDrone.Core/MediaFiles/MediaFileExtensions.cs new file mode 100644 index 000000000..43d2dbf82 --- /dev/null +++ b/NzbDrone.Core/MediaFiles/MediaFileExtensions.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Web; +using NzbDrone.Core.Qualities; + + +namespace NzbDrone.Core.MediaFiles +{ + public static class MediaFileExtensions + { + private static HashSet _fileExtensions; + + static MediaFileExtensions() + { + _fileExtensions = new HashSet + { + new MediaFileExtension(".m4v", Quality.SDTV), + new MediaFileExtension(".3gp", Quality.SDTV), + new MediaFileExtension(".nsv", Quality.SDTV), + new MediaFileExtension(".ty", Quality.SDTV), + new MediaFileExtension(".strm", Quality.SDTV), + new MediaFileExtension(".rm", Quality.SDTV), + new MediaFileExtension(".rmvb", Quality.SDTV), + new MediaFileExtension(".m3u", Quality.SDTV), + new MediaFileExtension(".ifo", Quality.SDTV), + new MediaFileExtension(".mov", Quality.SDTV), + new MediaFileExtension(".qt", Quality.SDTV), + new MediaFileExtension(".divx", Quality.SDTV), + new MediaFileExtension(".xvid", Quality.SDTV), + new MediaFileExtension(".bivx", Quality.SDTV), + new MediaFileExtension(".vob", Quality.SDTV), + new MediaFileExtension(".nrg", Quality.SDTV), + new MediaFileExtension(".pva", Quality.SDTV), + new MediaFileExtension(".wmv", Quality.SDTV), + new MediaFileExtension(".asf", Quality.SDTV), + new MediaFileExtension(".asx", Quality.SDTV), + new MediaFileExtension(".ogm", Quality.SDTV), + new MediaFileExtension(".m2v", Quality.SDTV), + new MediaFileExtension(".avi", Quality.SDTV), + new MediaFileExtension(".bin", Quality.SDTV), + new MediaFileExtension(".dat", Quality.SDTV), + new MediaFileExtension(".dvr-ms", Quality.SDTV), + new MediaFileExtension(".mpg", Quality.SDTV), + new MediaFileExtension(".mpeg", Quality.SDTV), + new MediaFileExtension(".mp4", Quality.SDTV), + new MediaFileExtension(".avc", Quality.SDTV), + new MediaFileExtension(".vp3", Quality.SDTV), + new MediaFileExtension(".svq3", Quality.SDTV), + new MediaFileExtension(".nuv", Quality.SDTV), + new MediaFileExtension(".viv", Quality.SDTV), + new MediaFileExtension(".dv", Quality.SDTV), + new MediaFileExtension(".fli", Quality.SDTV), + new MediaFileExtension(".flv", Quality.SDTV), + new MediaFileExtension(".wpl", Quality.SDTV), + + //DVD + new MediaFileExtension(".img", Quality.DVD), + new MediaFileExtension(".iso", Quality.DVD), + + //HD + new MediaFileExtension(".mkv", Quality.HDTV720p), + new MediaFileExtension(".ts", Quality.HDTV720p), + new MediaFileExtension(".m2ts", Quality.HDTV720p) + }; + } + + public static HashSet Extensions + { + get { return new HashSet(_fileExtensions.Select(e => e.Extension.ToLower())); } + } + + public static Quality FindQuality(string extension) + { + var mediaFileExtension = _fileExtensions.SingleOrDefault(e => e.Extension.Equals(extension, StringComparison.InvariantCultureIgnoreCase)); + + if (mediaFileExtension == null) + { + return Quality.Unknown; + } + + return mediaFileExtension.Quality; + } + } + + public class MediaFileExtension + { + public string Extension { get; set; } + public Quality Quality { get; set; } + + public MediaFileExtension(string extension, Quality quality) + { + Extension = extension; + Quality = quality; + } + } +} diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index fe1b6b6de..d5edab12a 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -228,6 +228,7 @@ + diff --git a/NzbDrone.Core/Parser/QualityParser.cs b/NzbDrone.Core/Parser/QualityParser.cs index 4627f27d0..d79bb8b7b 100644 --- a/NzbDrone.Core/Parser/QualityParser.cs +++ b/NzbDrone.Core/Parser/QualityParser.cs @@ -6,6 +6,7 @@ using System.Text; using System.Text.RegularExpressions; using NLog; using NzbDrone.Common; +using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Qualities; using NzbDrone.Core.Tv; @@ -152,35 +153,7 @@ namespace NzbDrone.Core.Parser { try { - switch (Path.GetExtension(name).ToLower()) - { - case ".avi": - case ".xvid": - case ".divx": - case ".wmv": - case ".mp4": - case ".mpg": - case ".mpeg": - case ".mov": - case ".rm": - case ".rmvb": - case ".flv": - case ".dvr-ms": - case ".ogm": - case ".strm": - - { - result.Quality = Quality.SDTV; - break; - } - case ".mkv": - case ".ts": - case ".m2ts": - { - result.Quality = Quality.HDTV720p; - break; - } - } + result.Quality = MediaFileExtensions.FindQuality(Path.GetExtension(name)); } catch (ArgumentException) {