[YoutubeDL] store the subtitles to download in the 'requested_subtitles' field
We need to keep the orginal subtitles information, so that the '--load-info' option can be used to list or select the subtitles again. We'll also be able to have a separate field for storing the automatic captions info.
This commit is contained in:
		
							parent
							
								
									65469a7f8b
								
							
						
					
					
						commit
						c84dd8a90d
					
				
					 4 changed files with 8 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -36,7 +36,7 @@ class BaseTestSubtitles(unittest.TestCase):
 | 
			
		|||
 | 
			
		||||
    def getSubtitles(self):
 | 
			
		||||
        info_dict = self.getInfoDict()
 | 
			
		||||
        subtitles = info_dict['subtitles']
 | 
			
		||||
        subtitles = info_dict['requested_subtitles']
 | 
			
		||||
        if not subtitles:
 | 
			
		||||
            return subtitles
 | 
			
		||||
        for sub_info in subtitles.values():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1022,7 +1022,7 @@ class YoutubeDL(object):
 | 
			
		|||
        if self.params.get('listsubtitles', False):
 | 
			
		||||
            self.list_subtitles(info_dict['id'], info_dict.get('subtitles'))
 | 
			
		||||
            return
 | 
			
		||||
        info_dict['subtitles'] = self.process_subtitles(info_dict['id'], info_dict.get('subtitles'))
 | 
			
		||||
        info_dict['requested_subtitles'] = self.process_subtitles(info_dict['id'], info_dict.get('subtitles'))
 | 
			
		||||
 | 
			
		||||
        # This extractors handle format selection themselves
 | 
			
		||||
        if info_dict['extractor'] in ['Youku']:
 | 
			
		||||
| 
						 | 
				
			
			@ -1301,10 +1301,10 @@ class YoutubeDL(object):
 | 
			
		|||
        subtitles_are_requested = any([self.params.get('writesubtitles', False),
 | 
			
		||||
                                       self.params.get('writeautomaticsub')])
 | 
			
		||||
 | 
			
		||||
        if subtitles_are_requested and 'subtitles' in info_dict and info_dict['subtitles']:
 | 
			
		||||
        if subtitles_are_requested and info_dict.get('requested_subtitles'):
 | 
			
		||||
            # subtitles download errors are already managed as troubles in relevant IE
 | 
			
		||||
            # that way it will silently go on when used with unsupporting IE
 | 
			
		||||
            subtitles = info_dict['subtitles']
 | 
			
		||||
            subtitles = info_dict['requested_subtitles']
 | 
			
		||||
            for sub_lang, sub_info in subtitles.items():
 | 
			
		||||
                sub_format = sub_info['ext']
 | 
			
		||||
                if sub_info.get('data') is not None:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -157,8 +157,6 @@ class InfoExtractor(object):
 | 
			
		|||
                    with the "ext" entry and one of:
 | 
			
		||||
                        * "data": The subtitles file contents
 | 
			
		||||
                        * "url": A url pointing to the subtitles file
 | 
			
		||||
                    Note: YoutubeDL.extract_info will get the requested
 | 
			
		||||
                    format and replace the "subformats" list with it.
 | 
			
		||||
    duration:       Length of the video in seconds, as an integer.
 | 
			
		||||
    view_count:     How many users have watched the video on the platform.
 | 
			
		||||
    like_count:     Number of positive ratings of the video
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -462,13 +462,14 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):
 | 
			
		|||
        if information['ext'] != 'mp4':
 | 
			
		||||
            self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4 files')
 | 
			
		||||
            return True, information
 | 
			
		||||
        if not information.get('subtitles'):
 | 
			
		||||
        subtitles = information.get('requested_subtitles')
 | 
			
		||||
        if not subtitles:
 | 
			
		||||
            self._downloader.to_screen('[ffmpeg] There aren\'t any subtitles to embed')
 | 
			
		||||
            return True, information
 | 
			
		||||
 | 
			
		||||
        sub_langs = [key for key in information['subtitles']]
 | 
			
		||||
        sub_langs = list(subtitles.keys())
 | 
			
		||||
        filename = information['filepath']
 | 
			
		||||
        input_files = [filename] + [subtitles_filename(filename, lang, sub_info['ext']) for lang, sub_info in information['subtitles'].items()]
 | 
			
		||||
        input_files = [filename] + [subtitles_filename(filename, lang, sub_info['ext']) for lang, sub_info in subtitles.items()]
 | 
			
		||||
 | 
			
		||||
        opts = [
 | 
			
		||||
            '-map', '0',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue