|
|
@ -31,6 +31,9 @@ namespace NzbDrone.Core
|
|
|
|
private static readonly Regex NormalizeRegex = new Regex(@"((^|\W)(a|an|the|and|or|of)($|\W))|\W|\b(?!(?:19\d{2}|20\d{2}))\d+\b",
|
|
|
|
private static readonly Regex NormalizeRegex = new Regex(@"((^|\W)(a|an|the|and|or|of)($|\W))|\W|\b(?!(?:19\d{2}|20\d{2}))\d+\b",
|
|
|
|
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
|
|
|
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static readonly Regex SimpleTitleRegex = new Regex(@"480[i|p]|720[i|p]|1080[i|p]|[x|h]264|\\|\/|\<|\>|\?|\*|\:|\|",
|
|
|
|
|
|
|
|
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// Parses a post title into list of episodes it contains
|
|
|
|
/// Parses a post title into list of episodes it contains
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
@ -39,11 +42,10 @@ namespace NzbDrone.Core
|
|
|
|
internal static EpisodeParseResult ParseEpisodeInfo(string title)
|
|
|
|
internal static EpisodeParseResult ParseEpisodeInfo(string title)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Logger.Trace("Parsing string '{0}'", title);
|
|
|
|
Logger.Trace("Parsing string '{0}'", title);
|
|
|
|
|
|
|
|
var simpleTitle = SimpleTitleRegex.Replace(title, String.Empty);
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var regex in ReportTitleRegex)
|
|
|
|
foreach (var regex in ReportTitleRegex)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var simpleTitle = Regex.Replace(title, @"480[i|p]|720[i|p]|1080[i|p]|[x|h]264|\\|\/|\<|\>|\?|\*|\:|\|", String.Empty, RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Use only the filename, not the entire path
|
|
|
|
//Use only the filename, not the entire path
|
|
|
|
var match = regex.Matches(new FileInfo(simpleTitle).Name);
|
|
|
|
var match = regex.Matches(new FileInfo(simpleTitle).Name);
|
|
|
|
|
|
|
|
|
|
|
@ -51,14 +53,14 @@ namespace NzbDrone.Core
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var seriesName = NormalizeTitle(match[0].Groups["title"].Value);
|
|
|
|
var seriesName = NormalizeTitle(match[0].Groups["title"].Value);
|
|
|
|
|
|
|
|
|
|
|
|
var airyear = 0;
|
|
|
|
int airyear;
|
|
|
|
Int32.TryParse(match[0].Groups["airyear"].Value, out airyear);
|
|
|
|
Int32.TryParse(match[0].Groups["airyear"].Value, out airyear);
|
|
|
|
|
|
|
|
|
|
|
|
EpisodeParseResult parsedEpisode;
|
|
|
|
EpisodeParseResult parsedEpisode;
|
|
|
|
|
|
|
|
|
|
|
|
if (airyear < 1)
|
|
|
|
if (airyear < 1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var season = 0;
|
|
|
|
int season;
|
|
|
|
Int32.TryParse(match[0].Groups["season"].Value, out season);
|
|
|
|
Int32.TryParse(match[0].Groups["season"].Value, out season);
|
|
|
|
|
|
|
|
|
|
|
|
parsedEpisode = new EpisodeParseResult
|
|
|
|
parsedEpisode = new EpisodeParseResult
|
|
|
|