mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	Merge pull request #5961 from dstftw/force-generic-extractor
Add --force-generic-extractor
This commit is contained in:
		| @@ -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: | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -150,6 +150,10 @@ def parseOpts(overrideArguments=None): | ||||
|         '--extractor-descriptions', | ||||
|         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', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M.
					Sergey M.