ParseEpisodeInfo will now handle repeating Episode Naming Format (S01E01E02 or S01E01-02), It will not handle ranges (S01E01-06)

Changed port back to 8989.
This commit is contained in:
Mark McDowall 2011-03-30 08:42:36 -07:00
parent 499279e2ac
commit fd3d94c9b0
4 changed files with 29 additions and 14 deletions

View File

@ -148,7 +148,7 @@
<virtualDirectory path="/" physicalPath="%NZBDRONE_PATH%\NZBDrone.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8111:" />
<binding protocol="http" bindingInformation="*:8989:" />
</bindings>
</site>
<siteDefaults>

View File

@ -13,7 +13,6 @@ namespace NzbDrone.Core.Test
public class ParserTest
{
[Test]
[Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1)]
[Row("Two.and.a.Half.Me.103.720p.HDTV.X264-DIMENSION", 1, 3)]
[Row("Two.and.a.Half.Me.113.720p.HDTV.X264-DIMENSION", 1, 13)]
[Row("Two.and.a.Half.Me.1013.720p.HDTV.X264-DIMENSION", 10, 13)]
@ -35,6 +34,18 @@ namespace NzbDrone.Core.Test
Assert.AreEqual(episode, result[0].EpisodeNumber);
}
[Test]
[Row("The.Office.US.S03E01E02.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1, 2)]
[Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1, 6)]
public void episode_parse_multi(string path, int season, int episodeOne, int episodeTwo)
{
var result = Parser.ParseEpisodeInfo(path);
Assert.Count(2, result);
Assert.AreEqual(season, result[0].SeasonNumber);
Assert.AreEqual(episodeOne, result[0].EpisodeNumber);
Assert.AreEqual(episodeTwo, result[1].EpisodeNumber);
}
[Test]
[Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", QualityTypes.BDRip)]
[Row("WEEDS.S03E01-06.DUAL.BDRip.AC3.-HELLYWOOD", QualityTypes.BDRip)]

View File

@ -18,7 +18,7 @@ namespace NzbDrone.Core
private static readonly Regex[] ReportTitleRegex = new[]
{
new Regex(@"(?<title>.+?)?\W?(?<year>\d+?)?\WS?(?<season>\d+)(?:\-|\.|[a-z])(?<episode>\d+)\W(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
new Regex(@"(?<title>.+?)?\W?(?<year>\d+?)?\WS?(?<season>\d+)((?:\-|\.|[a-z])(?<episode>\d+))+\W(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
new Regex(@"(?<title>.+?)?\W?(?<year>\d+?)?\WS?(?<season>\d+)(?<episode>\d{2})\W(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled) //Supports 103/113 naming
};
@ -58,18 +58,22 @@ namespace NzbDrone.Core
foreach (Match matchGroup in match)
{
var parsedEpisode = new EpisodeParseResult
{
SeriesTitle = seriesName,
SeasonNumber = Convert.ToInt32(matchGroup.Groups["season"].Value),
EpisodeNumber = Convert.ToInt32(matchGroup.Groups["episode"].Value),
Year = year
};
var seasonNumber = Convert.ToInt32(matchGroup.Groups["season"].Value);
foreach (Capture episode in matchGroup.Groups["episode"].Captures)
{
var parsedEpisode = new EpisodeParseResult
{
SeriesTitle = seriesName,
SeasonNumber = seasonNumber,
EpisodeNumber = Convert.ToInt32(episode.Value),
Year = year
};
result.Add(parsedEpisode);
Logger.Trace("Episode Parsed. {0}", parsedEpisode);
result.Add(parsedEpisode);
Logger.Trace("Episode Parsed. {0}", parsedEpisode);
}
}
break; //Break out of the for loop, we don't want to process every REGEX for each item otherwise we'll get duplicates
}

View File

@ -4,6 +4,6 @@
<supportedRuntime version="v4.0" />
</startup>
<appSettings>
<add key="port" value="8111" />
<add key="port" value="8989" />
</appSettings>
</configuration>