'Returns a list with a dictionary for each video we find.
If \'download\', also downloads the videos.
extra_info is a dict containing the extra values to add to each result'

def extract_info(self, url, download=True, ie_key=None, extra_info={}, process=True, force_generic_extractor=False):

    if ((not ie_key) and force_generic_extractor):
        ie_key = u'Generic'
    if ie_key:
        ies = [self.get_info_extractor(ie_key)]
    else:
        ies = self._ies
    for ie in ies:
        if (not ie.suitable(url)):
            continue
        ie = self.get_info_extractor(ie.ie_key())
        if (not ie.working()):
            self.report_warning(u'The    program    functionality    for    this    site    has    been    marked    as    broken,    and    will    probably    not    work.')
        try:
            ie_result = ie.extract(url)
            if (ie_result is None):
                break
            if isinstance(ie_result, list):
                ie_result = {u'_type': u'compat_list', u'entries': ie_result}
            self.add_default_extra_info(ie_result, ie, url)
            if process:
                return self.process_ie_result(ie_result, download, extra_info)
            else:
                return ie_result
        except GeoRestrictedError as e:
            msg = e.msg
            if e.countries:
                msg += (u'\nThis    video    is    available    in    %s.' % u',    '.join(map(ISO3166Utils.short2full, e.countries)))
            msg += u'\nYou    might    want    to    use    a    VPN    or    a    proxy    server    (with    --proxy)    to    workaround.'
            self.report_error(msg)
            break
        except ExtractorError as e:
            self.report_error(compat_str(e), e.format_traceback())
            break
        except MaxDownloadsReached:
            raise
        except Exception as e:
            if self.params.get(u'ignoreerrors', False):
                self.report_error(error_to_compat_str(e), tb=encode_compat_str(traceback.format_exc()))
                break
            else:
                raise
    else:
        self.report_error((u'no    suitable    InfoExtractor    for    URL    %s' % url))
