Ejemplo n.º 1
0
    /** 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);
    }