aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Library
diff options
context:
space:
mode:
authorLuis Miguel Almánzar <ruisu15@gmail.com>2014-07-03 00:01:36 -0400
committerLuis Miguel Almánzar <ruisu15@gmail.com>2014-07-03 00:01:36 -0400
commit1a371276dc92e303eba8445b2ba9c97766a052b2 (patch)
tree08610e3ca91bebb862e6c6e33a7cba06b368c7ec /MediaBrowser.Controller/Library
parent59dc591f66c20b6417aa2baa9503a154585386f9 (diff)
add multi-episode support for filenames without seasons
Diffstat (limited to 'MediaBrowser.Controller/Library')
-rw-r--r--MediaBrowser.Controller/Library/TVUtils.cs14
1 files changed, 10 insertions, 4 deletions
diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs
index 64f3a3b4b..0681a8cd1 100644
--- a/MediaBrowser.Controller/Library/TVUtils.cs
+++ b/MediaBrowser.Controller/Library/TVUtils.cs
@@ -98,19 +98,19 @@ namespace MediaBrowser.Controller.Library
private static readonly Regex[] EpisodeExpressionsWithoutSeason =
{
new Regex(
- @".*[\\\/](?<epnumber>\d{1,3})\.\w+$",
+ @".*[\\\/](?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*\.\w+$",
RegexOptions.Compiled),
// "01.avi"
new Regex(
- @".*(\\|\/)(?<epnumber>\d{1,2})\s?-\s?[^\\\/]*$",
+ @".*(\\|\/)(?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*\s?-\s?[^\\\/]*$",
RegexOptions.Compiled),
// "01 - blah.avi", "01-blah.avi"
new Regex(
- @".*(\\|\/)(?<epnumber>\d{1,2})\.[^\\\/]+$",
+ @".*(\\|\/)(?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*\.[^\\\/]+$",
RegexOptions.Compiled),
// "01.blah.avi"
new Regex(
- @".*[\\\/][^\\\/]* - (?<epnumber>\d{1,3})[^\\\/]*$",
+ @".*[\\\/][^\\\/]* - (?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*[^\\\/]*$",
RegexOptions.Compiled),
// "blah - 01.avi", "blah 2 - 01.avi", "blah - 01 blah.avi", "blah 2 - 01 blah", "blah - 01 - blah.avi", "blah 2 - 01 - blah"
};
@@ -284,6 +284,12 @@ namespace MediaBrowser.Controller.Library
if (m.Success && !string.IsNullOrEmpty(m.Groups["endingepnumber"].Value))
return ParseEpisodeNumber(m.Groups["endingepnumber"].Value);
}
+ foreach (var r in EpisodeExpressionsWithoutSeason)
+ {
+ var m = r.Match(fl);
+ if (m.Success && !string.IsNullOrEmpty(m.Groups["endingepnumber"].Value))
+ return ParseEpisodeNumber(m.Groups["endingepnumber"].Value);
+ }
return null;
}