mirror of
https://github.com/lidarr/Lidarr
synced 2024-12-27 10:07:10 +00:00
Added parsing and tests for Full Season Releases (no episode information)
This commit is contained in:
parent
a338b9fee5
commit
21e14fbb84
2 changed files with 29 additions and 10 deletions
|
@ -123,6 +123,19 @@ public void episode_daily_parse(string postTitle, string title, int year, int mo
|
|||
Assert.IsNull(result.Episodes);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
[Row("30.Rock.Season.04.HDTV.XviD-DIMENSION", "30.Rock", 4)]
|
||||
[Row("Parks.and.Recreation.S02.720p.x264-DIMENSION", "Parks.and.Recreation", 2)]
|
||||
[Row("The.Office.US.S03.720p.x264-DIMENSION", "The.Office.US", 3)]
|
||||
public void full_season_release_parse(string postTitle, string title, int season)
|
||||
{
|
||||
var result = Parser.ParseEpisodeInfo(postTitle);
|
||||
Assert.AreEqual(season, result.SeasonNumber);
|
||||
Assert.AreEqual(Parser.NormalizeTitle(title), result.CleanTitle);
|
||||
Assert.AreEqual(0, result.Episodes.Count);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Row("Conan", "conan")]
|
||||
[Row("The Tonight Show With Jay Leno", "tonightshowwithjayleno")]
|
||||
|
|
|
@ -19,10 +19,11 @@ public static class Parser
|
|||
new Regex(@"^(?<title>.*?)?(?:\W?S?(?<season>\d{1,2}(?!\d+))(?:(?:\-|\.|[ex]|\s|\sto\s){1,2}(?<episode>\d{1,2}(?!\d+)))+)+\W?(?!\\)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
new Regex(@"^(?<title>.+?)?\W?(?:\W(?<season>\d+)(?<episode>\d{2}))+\W?(?!\\)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
//Supports 103/113 naming
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled), //Supports 103/113 naming
|
||||
new Regex(@"^(?<title>.*?)?(?:\W?S?(?<season>\d{1,2}(?!\d+))(?:(?:\-|\.|[ex]|\s|to)+(?<episode>\d+))+)+\W?(?!\\)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled)
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||
new Regex(@"^(?<title>.*?)\W(?:S|Season\W?)?(?<season>\d{1,2}(?!\d+))+\W?(?!\\)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled) //Supports Season only releases
|
||||
};
|
||||
|
||||
private static readonly Regex[] SeasonReportTitleRegex = new[]
|
||||
|
@ -75,13 +76,18 @@ internal static EpisodeParseResult ParseEpisodeInfo(string title)
|
|||
|
||||
foreach (Match matchGroup in match)
|
||||
{
|
||||
var count = matchGroup.Groups["episode"].Captures.Count;
|
||||
var first = Convert.ToInt32(matchGroup.Groups["episode"].Captures[0].Value);
|
||||
var last = Convert.ToInt32(matchGroup.Groups["episode"].Captures[count - 1].Value);
|
||||
|
||||
for (int i = first; i <= last; i++)
|
||||
{
|
||||
parsedEpisode.Episodes.Add(i);
|
||||
var count = matchGroup.Groups["episode"].Captures.Count;
|
||||
|
||||
//Allows use to return a list of 0 episodes (We can handle that as a full season release)
|
||||
if (count > 0)
|
||||
{
|
||||
var first = Convert.ToInt32(matchGroup.Groups["episode"].Captures[0].Value);
|
||||
var last = Convert.ToInt32(matchGroup.Groups["episode"].Captures[count - 1].Value);
|
||||
|
||||
for (int i = first; i <= last; i++)
|
||||
{
|
||||
parsedEpisode.Episodes.Add(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue