From f9c00a6145ae6492ae68509887bcae382255c12b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 19 May 2013 13:05:33 -0400 Subject: parse episode index number at resolve time --- MediaBrowser.Controller/Library/TVUtils.cs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'MediaBrowser.Controller/Library') diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs index 0b9972d0a..8bd1c270d 100644 --- a/MediaBrowser.Controller/Library/TVUtils.cs +++ b/MediaBrowser.Controller/Library/TVUtils.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Resolvers; +using System.Globalization; +using MediaBrowser.Controller.Resolvers; using System; using System.Collections.Generic; using System.IO; @@ -184,8 +185,7 @@ namespace MediaBrowser.Controller.Library } else { - if (EntityResolutionHelper.IsVideoFile(child.FullName) && - !string.IsNullOrEmpty(EpisodeNumberFromFile(child.FullName, false))) + if (EntityResolutionHelper.IsVideoFile(child.FullName) && GetEpisodeNumberFromFile(child.FullName, false).HasValue) { return true; } @@ -201,14 +201,14 @@ namespace MediaBrowser.Controller.Library /// The full path. /// if set to true [is in season]. /// System.String. - public static string EpisodeNumberFromFile(string fullPath, bool isInSeason) + public static int? GetEpisodeNumberFromFile(string fullPath, bool isInSeason) { string fl = fullPath.ToLower(); foreach (var r in EpisodeExpressions) { Match m = r.Match(fl); if (m.Success) - return m.Groups["epnumber"].Value; + return ParseEpisodeNumber(m.Groups["epnumber"].Value); } if (isInSeason) { @@ -217,13 +217,27 @@ namespace MediaBrowser.Controller.Library if (match != null) { - return match.Value; + return ParseEpisodeNumber(match.Value); } } return null; } + private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); + + private static int? ParseEpisodeNumber(string val) + { + int num; + + if (!string.IsNullOrEmpty(val) && int.TryParse(val, NumberStyles.Integer, UsCulture, out num)) + { + return num; + } + + return null; + } + /// /// Seasons the number from episode file. /// -- cgit v1.2.3