private static SeriesPathParserResult Parse(string name, EpisodeExpression expression) { var result = new SeriesPathParserResult(); var match = expression.Regex.Match(name); if (match.Success && match.Groups.Count >= 3) { if (expression.IsNamed) { result.SeriesName = match.Groups["seriesname"].Value; result.Success = !string.IsNullOrEmpty(result.SeriesName) && !string.IsNullOrEmpty(match.Groups["seasonnumber"]?.Value); } } return(result); }
/// <summary> /// Resolve information about series from path. /// </summary> /// <param name="options"><see cref="NamingOptions"/> object passed to <see cref="SeriesPathParser"/>.</param> /// <param name="path">Path to series.</param> /// <returns>SeriesInfo.</returns> public static SeriesInfo Resolve(NamingOptions options, string path) { string seriesName = Path.GetFileName(path); SeriesPathParserResult result = SeriesPathParser.Parse(options, path); if (result.Success) { if (!string.IsNullOrEmpty(result.SeriesName)) { seriesName = result.SeriesName; } } if (!string.IsNullOrEmpty(seriesName)) { seriesName = _seriesNameRegex.Replace(seriesName, "${a} ${b}").Trim(); } return(new SeriesInfo(path) { Name = seriesName }); }