mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-10-31 09:43:32 +00:00 
			
		
		
		
	[YoutubeDL] Honour all --get-* options with --flat-playlist (closes #22493)
This commit is contained in:
		
							parent
							
								
									8e9fdcbe27
								
							
						
					
					
						commit
						d06daf23da
					
				| @ -852,8 +852,9 @@ class YoutubeDL(object): | ||||
|             extract_flat = self.params.get('extract_flat', False) | ||||
|             if ((extract_flat == 'in_playlist' and 'playlist' in extra_info) | ||||
|                     or extract_flat is True): | ||||
|                 if self.params.get('forcejson', False): | ||||
|                     self.to_stdout(json.dumps(ie_result)) | ||||
|                 self.__forced_printings( | ||||
|                     ie_result, self.prepare_filename(ie_result), | ||||
|                     incomplete=True) | ||||
|                 return ie_result | ||||
| 
 | ||||
|         if result_type == 'video': | ||||
| @ -1693,6 +1694,36 @@ class YoutubeDL(object): | ||||
|             subs[lang] = f | ||||
|         return subs | ||||
| 
 | ||||
|     def __forced_printings(self, info_dict, filename, incomplete): | ||||
|         def print_mandatory(field): | ||||
|             if (self.params.get('force%s' % field, False) | ||||
|                     and (not incomplete or info_dict.get(field) is not None)): | ||||
|                 self.to_stdout(info_dict[field]) | ||||
| 
 | ||||
|         def print_optional(field): | ||||
|             if (self.params.get('force%s' % field, False) | ||||
|                     and info_dict.get(field) is not None): | ||||
|                 self.to_stdout(info_dict[field]) | ||||
| 
 | ||||
|         print_mandatory('title') | ||||
|         print_mandatory('id') | ||||
|         if self.params.get('forceurl', False) and not incomplete: | ||||
|             if info_dict.get('requested_formats') is not None: | ||||
|                 for f in info_dict['requested_formats']: | ||||
|                     self.to_stdout(f['url'] + f.get('play_path', '')) | ||||
|             else: | ||||
|                 # For RTMP URLs, also include the playpath | ||||
|                 self.to_stdout(info_dict['url'] + info_dict.get('play_path', '')) | ||||
|         print_optional('thumbnail') | ||||
|         print_optional('description') | ||||
|         if self.params.get('forcefilename', False) and filename is not None: | ||||
|             self.to_stdout(filename) | ||||
|         if self.params.get('forceduration', False) and info_dict.get('duration') is not None: | ||||
|             self.to_stdout(formatSeconds(info_dict['duration'])) | ||||
|         print_mandatory('format') | ||||
|         if self.params.get('forcejson', False): | ||||
|             self.to_stdout(json.dumps(info_dict)) | ||||
| 
 | ||||
|     def process_info(self, info_dict): | ||||
|         """Process a single resolved IE result.""" | ||||
| 
 | ||||
| @ -1703,9 +1734,8 @@ class YoutubeDL(object): | ||||
|             if self._num_downloads >= int(max_downloads): | ||||
|                 raise MaxDownloadsReached() | ||||
| 
 | ||||
|         # TODO: backward compatibility, to be removed | ||||
|         info_dict['fulltitle'] = info_dict['title'] | ||||
|         if len(info_dict['title']) > 200: | ||||
|             info_dict['title'] = info_dict['title'][:197] + '...' | ||||
| 
 | ||||
|         if 'format' not in info_dict: | ||||
|             info_dict['format'] = info_dict['ext'] | ||||
| @ -1720,29 +1750,7 @@ class YoutubeDL(object): | ||||
|         info_dict['_filename'] = filename = self.prepare_filename(info_dict) | ||||
| 
 | ||||
|         # Forced printings | ||||
|         if self.params.get('forcetitle', False): | ||||
|             self.to_stdout(info_dict['fulltitle']) | ||||
|         if self.params.get('forceid', False): | ||||
|             self.to_stdout(info_dict['id']) | ||||
|         if self.params.get('forceurl', False): | ||||
|             if info_dict.get('requested_formats') is not None: | ||||
|                 for f in info_dict['requested_formats']: | ||||
|                     self.to_stdout(f['url'] + f.get('play_path', '')) | ||||
|             else: | ||||
|                 # For RTMP URLs, also include the playpath | ||||
|                 self.to_stdout(info_dict['url'] + info_dict.get('play_path', '')) | ||||
|         if self.params.get('forcethumbnail', False) and info_dict.get('thumbnail') is not None: | ||||
|             self.to_stdout(info_dict['thumbnail']) | ||||
|         if self.params.get('forcedescription', False) and info_dict.get('description') is not None: | ||||
|             self.to_stdout(info_dict['description']) | ||||
|         if self.params.get('forcefilename', False) and filename is not None: | ||||
|             self.to_stdout(filename) | ||||
|         if self.params.get('forceduration', False) and info_dict.get('duration') is not None: | ||||
|             self.to_stdout(formatSeconds(info_dict['duration'])) | ||||
|         if self.params.get('forceformat', False): | ||||
|             self.to_stdout(info_dict['format']) | ||||
|         if self.params.get('forcejson', False): | ||||
|             self.to_stdout(json.dumps(info_dict)) | ||||
|         self.__forced_printings(info_dict, filename, incomplete=False) | ||||
| 
 | ||||
|         # Do nothing else if in simulate mode | ||||
|         if self.params.get('simulate', False): | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Sergey M․
						Sergey M․