'For a given file try to find the showid, season, and episode.
:return: A (show, season, episodes, quality, version) tuple'

def _find_info(self):

    show = season = quality = version = None
    episodes = []
    attempt_list = [self._history_lookup, (lambda : self._analyze_name(self.nzb_name)), (lambda : self._analyze_name(self.file_name)), (lambda : self._analyze_name(self.folder_name)), (lambda : self._analyze_name(self.file_path)), (lambda : self._analyze_name(((self.folder_name + u'    ') + self.file_name)))]
    for cur_attempt in attempt_list:
        try:
            (cur_show, cur_season, cur_episodes, cur_quality, cur_version) = cur_attempt()
        except (InvalidNameException, InvalidShowException) as e:
            sickrage.srCore.srLogger.debug(u'Unable    to    parse,    skipping:    {}'.format(e.message))
            continue
        if (not cur_show):
            continue
        else:
            show = cur_show
        if (cur_quality and (not (self.in_history and quality))):
            quality = cur_quality
        if (cur_version is not None):
            version = cur_version
        if (cur_season is not None):
            season = cur_season
        if cur_episodes:
            episodes = cur_episodes
        if ((season == (-1)) and show and episodes):
            self._log(u'Looks    like    this    is    an    air-by-date    or    sports    show,    attempting    to    convert    the    date    to    season/episode', sickrage.srCore.srLogger.DEBUG)
            airdate = episodes[0].toordinal()
            dbData = [x[u'doc'] for x in sickrage.srCore.mainDB.db.get_many(u'tv_episodes', show.indexerid, with_doc=True) if ((x[u'doc'][u'indexer'] == show.indexer) and (x[u'doc'][u'airdate'] == airdate) and (x[u'doc'][u'season'] != 0))]
            if dbData:
                season = int(dbData[0][u'season'])
                episodes = [int(dbData[0][u'episode'])]
            else:
                dbData = [x[u'doc'] for x in sickrage.srCore.mainDB.db.get_many(u'tv_episodes', show.indexerid, with_doc=True) if ((x[u'doc'][u'indexer'] == show.indexer) and (x[u'doc'][u'airdate'] == airdate))]
                if dbData:
                    season = int(dbData[0][u'season'])
                    episodes = [int(dbData[0][u'episode'])]
                else:
                    self._log(((((u'Unable    to    find    episode    with    date    ' + str(episodes[0])) + u'    for    show    ') + str(show.indexerid)) + u',    skipping'), sickrage.srCore.srLogger.DEBUG)
                    episodes = []
                    continue
        elif ((season is None) and show):
            if ((len({x[u'doc'][u'season'] for x in sickrage.srCore.mainDB.db.get_many(u'tv_episodes', show.indexerid, with_doc=True) if ((x[u'doc'][u'season'] != 0) and (x[u'doc'][u'indexer'] == show.indexer))}) == 1) and (season is None)):
                season = 1
                self._log(u"Don't    have    a    season    number,    but    this    show    appears    to    only    have    1    season,    setting    season    number    to    1...", sickrage.srCore.srLogger.DEBUG)
        if (show and season and episodes):
            return (show, season, episodes, quality, version)
    return (show, season, episodes, quality, version)
