mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	Updated to release 2020.11.21.1
This commit is contained in:
		| @@ -830,34 +830,23 @@ class YoutubeDL(object): | ||||
|                                     'and will probably not work.') | ||||
|  | ||||
|             try: | ||||
|                 try: | ||||
|                     temp_id = ie.extract_id(url) if callable(getattr(ie, 'extract_id', None)) else ie._match_id(url) | ||||
|                 except (AssertionError, IndexError, AttributeError): | ||||
|                     temp_id = None | ||||
|                 if temp_id is not None and self.in_download_archive({'id': temp_id, 'ie_key': ie_key}): | ||||
|                     self.to_screen("[%s] %s: has already been recorded in archive" % ( | ||||
|                                    ie_key, temp_id)) | ||||
|                     break | ||||
|                 temp_id = ie.extract_id(url) if callable(getattr(ie, 'extract_id', None)) else ie._match_id(url) | ||||
|             except (AssertionError, IndexError, AttributeError): | ||||
|                 temp_id = None | ||||
|             if temp_id is not None and self.in_download_archive({'id': temp_id, 'ie_key': ie_key}): | ||||
|                 self.to_screen("[%s] %s: has already been recorded in archive" % ( | ||||
|                                ie_key, temp_id)) | ||||
|                 break | ||||
|  | ||||
|                 ie_result = ie.extract(url) | ||||
|                 if ie_result is None:  # Finished already (backwards compatibility; listformats and friends should be moved here) | ||||
|                     break | ||||
|                 if isinstance(ie_result, list): | ||||
|                     # Backwards compatibility: old IE result format | ||||
|                     ie_result = { | ||||
|                         '_type': 'compat_list', | ||||
|                         'entries': ie_result, | ||||
|                     } | ||||
|                 if info_dict: | ||||
|                     if info_dict.get('id'): | ||||
|                         ie_result['id'] = info_dict['id'] | ||||
|                     if info_dict.get('title'): | ||||
|                         ie_result['title'] = info_dict['title'] | ||||
|                 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 | ||||
|             return self.__extract_info(url, ie, download, extra_info, process, info_dict) | ||||
|  | ||||
|         else: | ||||
|             self.report_error('no suitable InfoExtractor for URL %s' % url) | ||||
|  | ||||
|     def __handle_extraction_exceptions(func): | ||||
|         def wrapper(self, *args, **kwargs): | ||||
|             try: | ||||
|                 return func(self, *args, **kwargs) | ||||
|             except GeoRestrictedError as e: | ||||
|                 msg = e.msg | ||||
|                 if e.countries: | ||||
| @@ -865,20 +854,38 @@ class YoutubeDL(object): | ||||
|                         map(ISO3166Utils.short2full, e.countries)) | ||||
|                 msg += '\nYou might want to use a VPN or a proxy server (with --proxy) to workaround.' | ||||
|                 self.report_error(msg) | ||||
|                 break | ||||
|             except ExtractorError as e:  # An error we somewhat expected | ||||
|                 self.report_error(compat_str(e), e.format_traceback()) | ||||
|                 break | ||||
|             except MaxDownloadsReached: | ||||
|                 raise | ||||
|             except Exception as e: | ||||
|                 if self.params.get('ignoreerrors', False): | ||||
|                     self.report_error(error_to_compat_str(e), tb=encode_compat_str(traceback.format_exc())) | ||||
|                     break | ||||
|                 else: | ||||
|                     raise | ||||
|         return wrapper | ||||
|  | ||||
|     @__handle_extraction_exceptions | ||||
|     def __extract_info(self, url, ie, download, extra_info, process, info_dict): | ||||
|         ie_result = ie.extract(url) | ||||
|         if ie_result is None:  # Finished already (backwards compatibility; listformats and friends should be moved here) | ||||
|             return | ||||
|         if isinstance(ie_result, list): | ||||
|             # Backwards compatibility: old IE result format | ||||
|             ie_result = { | ||||
|                 '_type': 'compat_list', | ||||
|                 'entries': ie_result, | ||||
|             } | ||||
|         if info_dict: | ||||
|             if info_dict.get('id'): | ||||
|                 ie_result['id'] = info_dict['id'] | ||||
|             if info_dict.get('title'): | ||||
|                 ie_result['title'] = info_dict['title'] | ||||
|         self.add_default_extra_info(ie_result, ie, url) | ||||
|         if process: | ||||
|             return self.process_ie_result(ie_result, download, extra_info) | ||||
|         else: | ||||
|             self.report_error('no suitable InfoExtractor for URL %s' % url) | ||||
|             return ie_result | ||||
|  | ||||
|     def add_default_extra_info(self, ie_result, ie, url): | ||||
|         self.add_extra_info(ie_result, { | ||||
| @@ -1057,9 +1064,8 @@ class YoutubeDL(object): | ||||
|                         self.to_screen('[download] ' + reason) | ||||
|                         continue | ||||
|  | ||||
|                 entry_result = self.process_ie_result(entry, | ||||
|                                                       download=download, | ||||
|                                                       extra_info=extra) | ||||
|                 entry_result = self.__process_iterable_entry(entry, download, extra) | ||||
|                 # TODO: skip failed (empty) entries? | ||||
|                 playlist_results.append(entry_result) | ||||
|             ie_result['entries'] = playlist_results | ||||
|             self.to_screen('[download] Finished downloading playlist: %s' % playlist) | ||||
| @@ -1088,6 +1094,11 @@ class YoutubeDL(object): | ||||
|         else: | ||||
|             raise Exception('Invalid result type: %s' % result_type) | ||||
|  | ||||
|     @__handle_extraction_exceptions | ||||
|     def __process_iterable_entry(self, entry, download, extra_info): | ||||
|         return self.process_ie_result( | ||||
|             entry, download=download, extra_info=extra_info) | ||||
|  | ||||
|     def _build_format_filter(self, filter_spec): | ||||
|         " Returns a function to filter the formats according to the filter_spec " | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan