'Returns None iff the file should be downloaded'

def _match_entry(self, info_dict, incomplete):

    video_title = info_dict.get(u'title', info_dict.get(u'id', u'video'))
    if (u'title' in info_dict):
        title = info_dict[u'title']
        matchtitle = self.params.get(u'matchtitle', False)
        if matchtitle:
            if (not re.search(matchtitle, title, re.IGNORECASE)):
                return ((((u'"' + title) + u'"    title    did    not    match    pattern    "') + matchtitle) + u'"')
        rejecttitle = self.params.get(u'rejecttitle', False)
        if rejecttitle:
            if re.search(rejecttitle, title, re.IGNORECASE):
                return ((((u'"' + title) + u'"    title    matched    reject    pattern    "') + rejecttitle) + u'"')
    date = info_dict.get(u'upload_date')
    if (date is not None):
        dateRange = self.params.get(u'daterange', DateRange())
        if (date not in dateRange):
            return (u'%s    upload    date    is    not    in    range    %s' % (date_from_str(date).isoformat(), dateRange))
    view_count = info_dict.get(u'view_count')
    if (view_count is not None):
        min_views = self.params.get(u'min_views')
        if ((min_views is not None) and (view_count < min_views)):
            return (u'Skipping    %s,    because    it    has    not    reached    minimum    view    count    (%d/%d)' % (video_title, view_count, min_views))
        max_views = self.params.get(u'max_views')
        if ((max_views is not None) and (view_count > max_views)):
            return (u'Skipping    %s,    because    it    has    exceeded    the    maximum    view    count    (%d/%d)' % (video_title, view_count, max_views))
    if age_restricted(info_dict.get(u'age_limit'), self.params.get(u'age_limit')):
        return (u'Skipping    "%s"    because    it    is    age    restricted' % video_title)
    if self.in_download_archive(info_dict):
        return (u'%s    has    already    been    recorded    in    archive' % video_title)
    if (not incomplete):
        match_filter = self.params.get(u'match_filter')
        if (match_filter is not None):
            ret = match_filter(info_dict)
            if (ret is not None):
                return ret
    return None
