--writedescription option
This commit is contained in:
		
							parent
							
								
									c6b55a8d48
								
							
						
					
					
						commit
						8b95c38707
					
				
					 1 changed files with 25 additions and 5 deletions
				
			
		
							
								
								
									
										30
									
								
								youtube-dl
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								youtube-dl
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -8,6 +8,10 @@
 | 
			
		|||
# Author: Paweł Paprota
 | 
			
		||||
# Author: Gergely Imreh
 | 
			
		||||
# License: Public domain code
 | 
			
		||||
 | 
			
		||||
from __future__ import with_statement
 | 
			
		||||
 | 
			
		||||
import contextlib
 | 
			
		||||
import cookielib
 | 
			
		||||
import ctypes
 | 
			
		||||
import datetime
 | 
			
		||||
| 
						 | 
				
			
			@ -301,6 +305,7 @@ class FileDownloader(object):
 | 
			
		|||
	consoletitle:     Display progress in console window's titlebar.
 | 
			
		||||
	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
 | 
			
		||||
	"""
 | 
			
		||||
 | 
			
		||||
	params = None
 | 
			
		||||
| 
						 | 
				
			
			@ -496,6 +501,10 @@ class FileDownloader(object):
 | 
			
		|||
		except:
 | 
			
		||||
			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)
 | 
			
		||||
 | 
			
		||||
	def report_destination(self, filename):
 | 
			
		||||
		"""Report destination filename."""
 | 
			
		||||
		self.to_screen(u'[download] Destination: %s' % filename, ignore_encoding_errors=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -582,6 +591,16 @@ class FileDownloader(object):
 | 
			
		|||
			self.trouble(u'ERROR: unable to create directories: %s' % str(err))
 | 
			
		||||
			return
 | 
			
		||||
 | 
			
		||||
		if self.params.get('writedescription', False):
 | 
			
		||||
			try:
 | 
			
		||||
				descfn = filename + '.description'
 | 
			
		||||
				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
 | 
			
		||||
 | 
			
		||||
		try:
 | 
			
		||||
			success = self._do_download(filename, info_dict['url'].encode('utf-8'), info_dict.get('player_url', None))
 | 
			
		||||
		except (OSError, IOError), err:
 | 
			
		||||
| 
						 | 
				
			
			@ -1086,7 +1105,7 @@ class YoutubeIE(InfoExtractor):
 | 
			
		|||
			lxml.etree
 | 
			
		||||
		except NameError:
 | 
			
		||||
			video_description = u'No description available.'
 | 
			
		||||
			if self._downloader.params.get('forcedescription', False):
 | 
			
		||||
			if self._downloader.params.get('forcedescription', False) or self._downloader.params.get('writedescription', False):
 | 
			
		||||
				warnings.warn(u'You are using an old Python version, install Python 2.6+ or lxml. Falling back to old video description extractor.')
 | 
			
		||||
				mobj = re.search(r'<meta name="description" content="(.*)"(?:\s*/)?>', video_webpage)
 | 
			
		||||
				if mobj is not None:
 | 
			
		||||
| 
						 | 
				
			
			@ -2529,10 +2548,7 @@ class FacebookIE(InfoExtractor):
 | 
			
		|||
					pass
 | 
			
		||||
 | 
			
		||||
		# description
 | 
			
		||||
		video_description = 'No description available.'
 | 
			
		||||
		if (self._downloader.params.get('forcedescription', False) and
 | 
			
		||||
		    'description' in video_info):
 | 
			
		||||
			video_description = video_info['description']
 | 
			
		||||
		video_description = video_info.get('description', 'No description available.')
 | 
			
		||||
 | 
			
		||||
		url_map = video_info['video_urls']
 | 
			
		||||
		if len(url_map.keys()) > 0:
 | 
			
		||||
| 
						 | 
				
			
			@ -2903,6 +2919,9 @@ if __name__ == '__main__':
 | 
			
		|||
		filesystem.add_option('--no-mtime',
 | 
			
		||||
				action='store_false', dest='updatetime',
 | 
			
		||||
				help='do not use the Last-modified header to set the file modification time', default=True)
 | 
			
		||||
		filesystem.add_option('--write-description',
 | 
			
		||||
				action='store_true', dest='writedescription',
 | 
			
		||||
				help='write video description to a .description file', default=False)
 | 
			
		||||
		parser.add_option_group(filesystem)
 | 
			
		||||
 | 
			
		||||
		postproc = optparse.OptionGroup(parser, 'Post-processing Options')
 | 
			
		||||
| 
						 | 
				
			
			@ -3040,6 +3059,7 @@ if __name__ == '__main__':
 | 
			
		|||
			'consoletitle': opts.consoletitle,
 | 
			
		||||
			'nopart': opts.nopart,
 | 
			
		||||
			'updatetime': opts.updatetime,
 | 
			
		||||
			'writedescription': opts.writedescription,
 | 
			
		||||
			})
 | 
			
		||||
		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