'Parses :data: for an episode identifier.
If found, returns a dict with keys for season, episode, end_episode and the regexp match object
If no episode id is found returns False'

def parse_episode(self, data):

    for ep_re in self.ep_regexps:
        match = re.search(ep_re, data)
        if match:
            log.debug(u'found    episode    number    with    regexp    %s    (%s)', ep_re.pattern, match.groups())
            matches = match.groups()
            if (len(matches) >= 2):
                season = matches[0]
                episode = matches[1]
            elif self.allow_seasonless:
                season = 1
                episode = matches[0]
            else:
                return False
            try:
                season = int(season)
                if (not episode.isdigit()):
                    try:
                        idx = self.english_numbers.index(str(episode).lower())
                        episode = (1 + idx)
                    except ValueError:
                        episode = self.roman_to_int(episode)
                else:
                    episode = int(episode)
            except ValueError:
                log.critical(u'Invalid    episode    number    match    %s    returned    with    regexp    `%s`    for    %s', match.groups(), ep_re.pattern, self.data)
                raise
            end_episode = None
            if ((len(matches) == 3) and matches[2]):
                end_episode = int(matches[2])
                if ((end_episode <= episode) or (end_episode > (episode + 12))):
                    end_episode = None
            return {u'season': season, u'episode': episode, u'end_episode': end_episode, u'match': match}
    return False
