diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 9 | ||||
| -rw-r--r-- | youtube_dl/__init__.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 4 | ||||
| -rw-r--r-- | youtube_dl/options.py | 4 | 
4 files changed, 15 insertions, 3 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 6e4b6f566..ef0f71bad 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -139,6 +139,7 @@ class YoutubeDL(object):      outtmpl:           Template for output names.      restrictfilenames: Do not allow "&" and spaces in file names      ignoreerrors:      Do not stop on download errors. +    force_generic_extractor: Force downloader to use the generic extractor      nooverwrites:      Prevent overwriting files.      playliststart:     Playlist item to start at.      playlistend:       Playlist item to end at. @@ -626,13 +627,16 @@ class YoutubeDL(object):              info_dict.setdefault(key, value)      def extract_info(self, url, download=True, ie_key=None, extra_info={}, -                     process=True): +                     process=True, force_generic_extractor=False):          '''          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          ''' +        if not ie_key and force_generic_extractor: +            ie_key = 'Generic' +          if ie_key:              ies = [self.get_info_extractor(ie_key)]          else: @@ -1493,7 +1497,8 @@ class YoutubeDL(object):          for url in url_list:              try:                  # It also downloads the videos -                res = self.extract_info(url) +                res = self.extract_info( +                    url, force_generic_extractor=self.params.get('force_generic_extractor', False))              except UnavailableVideoError:                  self.report_error('unable to download video')              except MaxDownloadsReached: diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index ace17857c..215b616de 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -293,6 +293,7 @@ def _real_main(argv=None):          'autonumber_size': opts.autonumber_size,          'restrictfilenames': opts.restrictfilenames,          'ignoreerrors': opts.ignoreerrors, +        'force_generic_extractor': opts.force_generic_extractor,          'ratelimit': opts.ratelimit,          'nooverwrites': opts.nooverwrites,          'retries': opts_retries, diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 5c03fddc6..7769ffc5c 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -1014,7 +1014,9 @@ class GenericIE(InfoExtractor):              }          if not self._downloader.params.get('test', False) and not is_intentional: -            self._downloader.report_warning('Falling back on generic information extractor.') +            force = self._downloader.params.get('force_generic_extractor', False) +            self._downloader.report_warning( +                '%s on generic information extractor.' % ('Forcing' if force else 'Falling back'))          if not full_response:              request = compat_urllib_request.Request(url) diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 740458e51..6aeca61ee 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -151,6 +151,10 @@ def parseOpts(overrideArguments=None):          action='store_true', dest='list_extractor_descriptions', default=False,          help='Output descriptions of all supported extractors')      general.add_option( +        '--force-generic-extractor', +        action='store_true', dest='force_generic_extractor', default=False, +        help='Force extraction to use the generic extractor') +    general.add_option(          '--default-search',          dest='default_search', metavar='PREFIX',          help='Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for youtube-dl "large apple". Use the value "auto" to let youtube-dl guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching.')  | 
