mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	Add extra_info argument to extract_info and process_ie_result
It allows to update the info_dicts with other values (closes #840)
This commit is contained in:
		| @@ -436,10 +436,11 @@ class FileDownloader(object): | ||||
|                 return u'[download] %s upload date is not in range %s' % (date_from_str(date).isoformat(), dateRange) | ||||
|         return None | ||||
|          | ||||
|     def extract_info(self, url, download=True, ie_key=None): | ||||
|     def extract_info(self, url, download=True, ie_key=None, extra_info={}): | ||||
|         ''' | ||||
|         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 ie_key: | ||||
| @@ -463,10 +464,14 @@ class FileDownloader(object): | ||||
|                     break | ||||
|                 if isinstance(ie_result, list): | ||||
|                     # Backwards compatibility: old IE result format | ||||
|                     for result in ie_result: | ||||
|                         result.update(extra_info) | ||||
|                     ie_result = { | ||||
|                         '_type': 'compat_list', | ||||
|                         'entries': ie_result, | ||||
|                     } | ||||
|                 else: | ||||
|                     ie_result.update(extra_info) | ||||
|                 if 'extractor' not in ie_result: | ||||
|                     ie_result['extractor'] = ie.IE_NAME | ||||
|                 return self.process_ie_result(ie_result, download=download) | ||||
| @@ -482,7 +487,7 @@ class FileDownloader(object): | ||||
|         else: | ||||
|             self.report_error(u'no suitable InfoExtractor: %s' % url) | ||||
|          | ||||
|     def process_ie_result(self, ie_result, download=True): | ||||
|     def process_ie_result(self, ie_result, download=True, extra_info={}): | ||||
|         """ | ||||
|         Take the result of the ie(may be modified) and resolve all unresolved | ||||
|         references (URLs, playlist items). | ||||
| @@ -501,7 +506,12 @@ class FileDownloader(object): | ||||
|                 self.process_info(ie_result) | ||||
|             return ie_result | ||||
|         elif result_type == 'url': | ||||
|             return self.extract_info(ie_result['url'], download, ie_key=ie_result.get('ie_key')) | ||||
|             # We have to add extra_info to the results because it may be | ||||
|             # contained in a playlist | ||||
|             return self.extract_info(ie_result['url'], | ||||
|                                      download, | ||||
|                                      ie_key=ie_result.get('ie_key'), | ||||
|                                      extra_info=extra_info) | ||||
|         elif result_type == 'playlist': | ||||
|             # We process each entry in the playlist | ||||
|             playlist = ie_result.get('title', None) or ie_result.get('id', None) | ||||
| @@ -525,9 +535,13 @@ class FileDownloader(object): | ||||
|  | ||||
|             for i,entry in enumerate(entries,1): | ||||
|                 self.to_screen(u'[download] Downloading video #%s of %s' %(i, n_entries)) | ||||
|                 entry['playlist'] = playlist | ||||
|                 entry['playlist_index'] = i + playliststart | ||||
|                 entry_result = self.process_ie_result(entry, download=download) | ||||
|                 extra = { | ||||
|                          'playlist': playlist,  | ||||
|                          'playlist_index': i + playliststart, | ||||
|                          } | ||||
|                 entry_result = self.process_ie_result(entry, | ||||
|                                                       download=download, | ||||
|                                                       extra_info=extra) | ||||
|                 playlist_results.append(entry_result) | ||||
|             ie_result['entries'] = playlist_results | ||||
|             return ie_result | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz