'Accepts messy name, cleans it and uses information available to make smartest and best match'

def smart_match(self, raw_name, single_match=True):

    parser = get_plugin_by_name(u'parsing').instance.parse_movie(raw_name)
    name = parser.name
    year = parser.year
    if (name == u''):
        log.critical((u'Failed    to    parse    name    from    %s' % raw_name))
        return None
    log.debug((u'smart_match    name=%s    year=%s' % (name, str(year))))
    return self.best_match(name, year, single_match)
