/** Search for episode number. */ private void SearchForEpisodeNumber() { // List all unknown tokens that contain a number var tokens = new List<int>(); for (var i = 0; i < Tokens.Count; i++) { var token = Tokens[i]; if (token.Category == Token.TokenCategory.Unknown && ParserHelper.IndexOfFirstDigit(token.Content) != -1) { tokens.Add(i); } } if (tokens.Count == 0) return; IsEpisodeKeywordsFound = !Empty(Element.ElementCategory.ElementEpisodeNumber); // If a token matches a known episode pattern, it has to be the episode number if (ParseNumber.SearchForEpisodePatterns(tokens)) return; // We have previously found an episode number via keywords if (!Empty(Element.ElementCategory.ElementEpisodeNumber)) return; // From now on, we're only interested in numeric tokens tokens.RemoveAll(r => !StringHelper.IsNumericString(Tokens[r].Content)); // e.g. "01 (176)", "29 (04)" if (ParseNumber.SearchForEquivalentNumbers(tokens)) return; // e.g. " - 08" if (ParseNumber.SearchForSeparatedNumbers(tokens)) return; // "e.g. "[12]", "(2006)" if (ParseNumber.SearchForIsolatedNumbers(tokens)) return; // Consider using the last number as a last resort ParseNumber.SearchForLastNumber(tokens); }