From 1a1cfba795689f5c74fac9cd88d75074c657276c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 20 Jul 2013 10:57:48 -0400 Subject: faster file extension comparisons --- .../Resolvers/EntityResolutionHelper.cs | 32 ++++++++++++++++------ 1 file changed, 24 insertions(+), 8 deletions(-) (limited to 'MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs') diff --git a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs index 78c9b133b..d57c354f7 100644 --- a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs +++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs @@ -1,11 +1,11 @@ -using System.Text.RegularExpressions; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.IO; +using MediaBrowser.Controller.Library; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using MediaBrowser.Controller.Library; +using System.Text.RegularExpressions; namespace MediaBrowser.Controller.Resolvers { @@ -46,6 +46,8 @@ namespace MediaBrowser.Controller.Resolvers ".mts" }; + private static readonly Dictionary VideoFileExtensionsDictionary = VideoFileExtensions.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); + private static readonly Regex MultiFileRegex = new Regex( @"(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck]|d)[ _.-]*[0-9]+)(.*?)(\.[^.]+)$", RegexOptions.Compiled | RegexOptions.IgnoreCase); @@ -67,7 +69,7 @@ namespace MediaBrowser.Controller.Resolvers /// /// The audio file extensions /// - private static readonly string[] AudioFileExtensions = new[] { + private static readonly Dictionary AudioFileExtensions = new[] { ".mp3", ".flac", ".wma", @@ -79,7 +81,8 @@ namespace MediaBrowser.Controller.Resolvers ".ape", ".ogg", ".oga" - }; + + }.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); /// /// Determines whether [is audio file] [the specified args]. @@ -88,7 +91,14 @@ namespace MediaBrowser.Controller.Resolvers /// true if [is audio file] [the specified args]; otherwise, false. public static bool IsAudioFile(string path) { - return AudioFileExtensions.Contains(Path.GetExtension(path), StringComparer.OrdinalIgnoreCase); + var extension = Path.GetExtension(path); + + if (string.IsNullOrEmpty(extension)) + { + return false; + } + + return AudioFileExtensions.ContainsKey(extension); } /// @@ -98,8 +108,14 @@ namespace MediaBrowser.Controller.Resolvers /// true if [is video file] [the specified path]; otherwise, false. public static bool IsVideoFile(string path) { - var extension = Path.GetExtension(path) ?? String.Empty; - return VideoFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase); + var extension = Path.GetExtension(path); + + if (string.IsNullOrEmpty(extension)) + { + return false; + } + + return VideoFileExtensionsDictionary.ContainsKey(extension); } /// -- cgit v1.2.3