diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs index d7504a86e4..67d78fa894 100644 --- a/MediaBrowser.Controller/Library/TVUtils.cs +++ b/MediaBrowser.Controller/Library/TVUtils.cs @@ -45,49 +45,49 @@ namespace MediaBrowser.Controller.Library private static readonly Regex[] EpisodeExpressions = new[] { new Regex( - @".*\\[sS]?(?\d{1,4})[xX](?\d{1,3})[^\\]*$", + @".*(\\|\/)[sS]?(?\d{1,4})[xX](?\d{1,3})[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\[sS](?\d{1,4})[x,X]?[eE](?\d{1,3})[^\\]*$", + @".*(\\|\/)[sS](?\d{1,4})[x,X]?[eE](?\d{1,3})[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))[^\\]*$", + @".*(\\|\/)(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\\/])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?[^\\]*)[sS](?\d{1,4})[xX\.]?[eE](?\d{1,3})[^\\]*$", + @".*(\\|\/)(?[^\\\/]*)[sS](?\d{1,4})[xX\.]?[eE](?\d{1,3})[^\\\/]*$", RegexOptions.Compiled) }; private static readonly Regex[] MultipleEpisodeExpressions = new[] { new Regex( - @".*\\[sS]?(?\d{1,4})[xX](?\d{1,3})((-| - )\d{1,4}[eExX](?\d{1,3}))+[^\\]*$", + @".*(\\|\/)[sS]?(?\d{1,4})[xX](?\d{1,3})((-| - )\d{1,4}[eExX](?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\[sS]?(?\d{1,4})[xX](?\d{1,3})((-| - )\d{1,4}[xX][eE](?\d{1,3}))+[^\\]*$", + @".*(\\|\/)[sS]?(?\d{1,4})[xX](?\d{1,3})((-| - )\d{1,4}[xX][eE](?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\[sS]?(?\d{1,4})[xX](?\d{1,3})((-| - )?[xXeE](?\d{1,3}))+[^\\]*$", + @".*(\\|\/)[sS]?(?\d{1,4})[xX](?\d{1,3})((-| - )?[xXeE](?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\[sS]?(?\d{1,4})[xX](?\d{1,3})(-[xE]?[eE]?(?\d{1,3}))+[^\\]*$", + @".*(\\|\/)[sS]?(?\d{1,4})[xX](?\d{1,3})(-[xE]?[eE]?(?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))((-| - )\d{1,4}[xXeE](?\d{1,3}))+[^\\]*$", + @".*(\\|\/)(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\\/])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))((-| - )\d{1,4}[xXeE](?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))((-| - )\d{1,4}[xX][eE](?\d{1,3}))+[^\\]*$", + @".*(\\|\/)(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\\/])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))((-| - )\d{1,4}[xX][eE](?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))((-| - )?[xXeE](?\d{1,3}))+[^\\]*$", + @".*(\\|\/)(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\\/])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))((-| - )?[xXeE](?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))(-[xX]?[eE]?(?\d{1,3}))+[^\\]*$", + @".*(\\|\/)(?((?![sS]?\d{1,4}[xX]\d{1,3})[^\\\/])*)?([sS]?(?\d{1,4})[xX](?\d{1,3}))(-[xX]?[eE]?(?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?[^\\]*)[sS](?\d{1,4})[xX\.]?[eE](?\d{1,3})((-| - )?[xXeE](?\d{1,3}))+[^\\]*$", + @".*(\\|\/)(?[^\\\/]*)[sS](?\d{1,4})[xX\.]?[eE](?\d{1,3})((-| - )?[xXeE](?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled), new Regex( - @".*\\(?[^\\]*)[sS](?\d{1,4})[xX\.]?[eE](?\d{1,3})(-[xX]?[eE]?(?\d{1,3}))+[^\\]*$", + @".*(\\|\/)(?[^\\\/]*)[sS](?\d{1,4})[xX\.]?[eE](?\d{1,3})(-[xX]?[eE]?(?\d{1,3}))+[^\\\/]*$", RegexOptions.Compiled) }; @@ -97,19 +97,19 @@ namespace MediaBrowser.Controller.Library private static readonly Regex[] EpisodeExpressionsInASeasonFolder = new[] { new Regex( - @".*\\(?\d{1,2})\s?-\s?[^\\]*$", + @".*(\\|\/)(?\d{1,2})\s?-\s?[^\\\/]*$", RegexOptions.Compiled), // 01 - blah.avi, 01-blah.avi new Regex( - @".*\\(?\d{1,2})[^\d\\]*[^\\]*$", + @".*(\\|\/)(?\d{1,2})[^\d\\]*[^\\\/]*$", RegexOptions.Compiled), // 01.avi, 01.blah.avi "01 - 22 blah.avi" new Regex( - @".*\\(?\d)(?\d{1,2})[^\d\\]+[^\\]*$", + @".*(\\|\/)(?\d)(?\d{1,2})[^\d\\]+[^\\\/]*$", RegexOptions.Compiled), // 01.avi, 01.blah.avi new Regex( - @".*\\\D*\d+(?\d{2})", + @".*(\\|\/)\D*\d+(?\d{2})", RegexOptions.Compiled) // hell0 - 101 - hello.avi diff --git a/MediaBrowser.Tests/Resolvers/TvUtilTests.cs b/MediaBrowser.Tests/Resolvers/TvUtilTests.cs index 0b472956a6..0786ced661 100644 --- a/MediaBrowser.Tests/Resolvers/TvUtilTests.cs +++ b/MediaBrowser.Tests/Resolvers/TvUtilTests.cs @@ -211,7 +211,7 @@ namespace MediaBrowser.Tests.Resolvers Assert.AreEqual(2009, TVUtils.GetSeasonNumberFromEpisodeFile(@"Season 2009\Elementary - S2009E23-E24-E26 - The Woman.mp4")); Assert.AreEqual(2009, TVUtils.GetSeasonNumberFromEpisodeFile(@"Season 2009\S2009E23-E24-E26 - The Woman.mp4")); Assert.AreEqual(25, TVUtils.GetSeasonNumberFromEpisodeFile(@"Season 25\The Simpsons.S25E09.Steal this episode.mp4")); - + Assert.AreEqual(25, TVUtils.GetSeasonNumberFromEpisodeFile(@"The Simpsons\The Simpsons.S25E09.Steal this episode.mp4")); } } }