+ --write-info-json
This commit is contained in:
		
							parent
							
								
									437d76c19a
								
							
						
					
					
						commit
						6eb08fbf8b
					
				
					 1 changed files with 28 additions and 3 deletions
				
			
		
							
								
								
									
										31
									
								
								youtube-dl
									
										
									
									
									
								
							
							
						
						
									
										31
									
								
								youtube-dl
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -413,6 +413,7 @@ class FileDownloader(object):
 | 
			
		|||
	nopart:           Do not use temporary .part files.
 | 
			
		||||
	updatetime:       Use the Last-modified header to set output file timestamps.
 | 
			
		||||
	writedescription: Write the video description to a .description file
 | 
			
		||||
	writeinfojson:    Write the video description to a .info.json file
 | 
			
		||||
	"""
 | 
			
		||||
 | 
			
		||||
	params = None
 | 
			
		||||
| 
						 | 
				
			
			@ -609,8 +610,12 @@ class FileDownloader(object):
 | 
			
		|||
			pass
 | 
			
		||||
 | 
			
		||||
	def report_writedescription(self, descfn):
 | 
			
		||||
		""" Report that the description file has been written """
 | 
			
		||||
		self.to_screen(u'[info] Video description written to: %s' % descfn, ignore_encoding_errors=True)
 | 
			
		||||
		""" Report that the description file is being written """
 | 
			
		||||
		self.to_screen(u'[info] Writing video description to: %s' % descfn, ignore_encoding_errors=True)
 | 
			
		||||
 | 
			
		||||
	def report_writeinfojson(self, infofn):
 | 
			
		||||
		""" Report that the metadata file has been written """
 | 
			
		||||
		self.to_screen(u'[info] Video description metadata as JSON to: %s' % infofn, ignore_encoding_errors=True)
 | 
			
		||||
 | 
			
		||||
	def report_destination(self, filename):
 | 
			
		||||
		"""Report destination filename."""
 | 
			
		||||
| 
						 | 
				
			
			@ -701,13 +706,29 @@ class FileDownloader(object):
 | 
			
		|||
		if self.params.get('writedescription', False):
 | 
			
		||||
			try:
 | 
			
		||||
				descfn = filename + '.description'
 | 
			
		||||
				self.report_writedescription(descfn)
 | 
			
		||||
				with contextlib.closing(open(descfn, 'wb')) as descfile:
 | 
			
		||||
					descfile.write(info_dict['description'].encode('utf-8'))
 | 
			
		||||
				self.report_writedescription(descfn)
 | 
			
		||||
			except (OSError, IOError):
 | 
			
		||||
				self.trouble(u'ERROR: Cannot write description file: %s' % str(descfn))
 | 
			
		||||
				return
 | 
			
		||||
 | 
			
		||||
		print(repr(self.params))
 | 
			
		||||
		if self.params.get('writeinfojson', False):
 | 
			
		||||
			infofn = filename + '.info.json'
 | 
			
		||||
			self.report_writeinfojson(infofn)
 | 
			
		||||
			try:
 | 
			
		||||
				json.dump
 | 
			
		||||
			except (NameError,AttributeError):
 | 
			
		||||
				self.trouble(u'ERROR: No JSON encoder found. Update to Python 2.6+, setup a json module, or leave out --write-info-json.')
 | 
			
		||||
				return
 | 
			
		||||
			try:
 | 
			
		||||
				with contextlib.closing(open(infofn, 'wb')) as infof:
 | 
			
		||||
					json.dump(info_dict, infof)
 | 
			
		||||
			except (OSError, IOError):
 | 
			
		||||
				self.trouble(u'ERROR: Cannot write metadata to JSON file: %s' % str(infofn))
 | 
			
		||||
				return
 | 
			
		||||
 | 
			
		||||
		try:
 | 
			
		||||
			success = self._do_download(filename, info_dict['url'].encode('utf-8'), info_dict.get('player_url', None))
 | 
			
		||||
		except (OSError, IOError), err:
 | 
			
		||||
| 
						 | 
				
			
			@ -3031,6 +3052,9 @@ if __name__ == '__main__':
 | 
			
		|||
		filesystem.add_option('--write-description',
 | 
			
		||||
				action='store_true', dest='writedescription',
 | 
			
		||||
				help='write video description to a .description file', default=False)
 | 
			
		||||
		filesystem.add_option('--write-info-json',
 | 
			
		||||
				action='store_true', dest='writeinfojson',
 | 
			
		||||
				help='write video metadata to a .info.json file', default=False)
 | 
			
		||||
		parser.add_option_group(filesystem)
 | 
			
		||||
 | 
			
		||||
		postproc = optparse.OptionGroup(parser, 'Post-processing Options')
 | 
			
		||||
| 
						 | 
				
			
			@ -3169,6 +3193,7 @@ if __name__ == '__main__':
 | 
			
		|||
			'nopart': opts.nopart,
 | 
			
		||||
			'updatetime': opts.updatetime,
 | 
			
		||||
			'writedescription': opts.writedescription,
 | 
			
		||||
			'writeinfojson': opts.writeinfojson,
 | 
			
		||||
			})
 | 
			
		||||
		fd.add_info_extractor(youtube_search_ie)
 | 
			
		||||
		fd.add_info_extractor(youtube_pl_ie)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue