mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +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. |     outtmpl:           Template for output names. | ||||||
|     restrictfilenames: Do not allow "&" and spaces in file names |     restrictfilenames: Do not allow "&" and spaces in file names | ||||||
|     ignoreerrors:      Do not stop on download errors. |     ignoreerrors:      Do not stop on download errors. | ||||||
|  |     force_generic_extractor: Force downloader to use the generic extractor | ||||||
|     nooverwrites:      Prevent overwriting files. |     nooverwrites:      Prevent overwriting files. | ||||||
|     playliststart:     Playlist item to start at. |     playliststart:     Playlist item to start at. | ||||||
|     playlistend:       Playlist item to end at. |     playlistend:       Playlist item to end at. | ||||||
| @@ -626,13 +627,16 @@ class YoutubeDL(object): | |||||||
|             info_dict.setdefault(key, value) |             info_dict.setdefault(key, value) | ||||||
|  |  | ||||||
|     def extract_info(self, url, download=True, ie_key=None, extra_info={}, |     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. |         Returns a list with a dictionary for each video we find. | ||||||
|         If 'download', also downloads the videos. |         If 'download', also downloads the videos. | ||||||
|         extra_info is a dict containing the extra values to add to each result |         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: |         if ie_key: | ||||||
|             ies = [self.get_info_extractor(ie_key)] |             ies = [self.get_info_extractor(ie_key)] | ||||||
|         else: |         else: | ||||||
| @@ -1493,7 +1497,8 @@ class YoutubeDL(object): | |||||||
|         for url in url_list: |         for url in url_list: | ||||||
|             try: |             try: | ||||||
|                 # It also downloads the videos |                 # 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: |             except UnavailableVideoError: | ||||||
|                 self.report_error('unable to download video') |                 self.report_error('unable to download video') | ||||||
|             except MaxDownloadsReached: |             except MaxDownloadsReached: | ||||||
|   | |||||||
| @@ -293,6 +293,7 @@ def _real_main(argv=None): | |||||||
|         'autonumber_size': opts.autonumber_size, |         'autonumber_size': opts.autonumber_size, | ||||||
|         'restrictfilenames': opts.restrictfilenames, |         'restrictfilenames': opts.restrictfilenames, | ||||||
|         'ignoreerrors': opts.ignoreerrors, |         'ignoreerrors': opts.ignoreerrors, | ||||||
|  |         'force_generic_extractor': opts.force_generic_extractor, | ||||||
|         'ratelimit': opts.ratelimit, |         'ratelimit': opts.ratelimit, | ||||||
|         'nooverwrites': opts.nooverwrites, |         'nooverwrites': opts.nooverwrites, | ||||||
|         'retries': opts_retries, |         'retries': opts_retries, | ||||||
|   | |||||||
| @@ -1014,7 +1014,9 @@ class GenericIE(InfoExtractor): | |||||||
|             } |             } | ||||||
|  |  | ||||||
|         if not self._downloader.params.get('test', False) and not is_intentional: |         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: |         if not full_response: | ||||||
|             request = compat_urllib_request.Request(url) |             request = compat_urllib_request.Request(url) | ||||||
|   | |||||||
| @@ -150,6 +150,10 @@ def parseOpts(overrideArguments=None): | |||||||
|         '--extractor-descriptions', |         '--extractor-descriptions', | ||||||
|         action='store_true', dest='list_extractor_descriptions', default=False, |         action='store_true', dest='list_extractor_descriptions', default=False, | ||||||
|         help='Output descriptions of all supported extractors') |         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( |     general.add_option( | ||||||
|         '--default-search', |         '--default-search', | ||||||
|         dest='default_search', metavar='PREFIX', |         dest='default_search', metavar='PREFIX', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M.
					Sergey M.