mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[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:
		| @@ -36,7 +36,7 @@ class BaseTestSubtitles(unittest.TestCase): | |||||||
|  |  | ||||||
|     def getSubtitles(self): |     def getSubtitles(self): | ||||||
|         info_dict = self.getInfoDict() |         info_dict = self.getInfoDict() | ||||||
|         subtitles = info_dict['subtitles'] |         subtitles = info_dict['requested_subtitles'] | ||||||
|         if not subtitles: |         if not subtitles: | ||||||
|             return subtitles |             return subtitles | ||||||
|         for sub_info in subtitles.values(): |         for sub_info in subtitles.values(): | ||||||
|   | |||||||
| @@ -1022,7 +1022,7 @@ class YoutubeDL(object): | |||||||
|         if self.params.get('listsubtitles', False): |         if self.params.get('listsubtitles', False): | ||||||
|             self.list_subtitles(info_dict['id'], info_dict.get('subtitles')) |             self.list_subtitles(info_dict['id'], info_dict.get('subtitles')) | ||||||
|             return |             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 |         # This extractors handle format selection themselves | ||||||
|         if info_dict['extractor'] in ['Youku']: |         if info_dict['extractor'] in ['Youku']: | ||||||
| @@ -1301,10 +1301,10 @@ class YoutubeDL(object): | |||||||
|         subtitles_are_requested = any([self.params.get('writesubtitles', False), |         subtitles_are_requested = any([self.params.get('writesubtitles', False), | ||||||
|                                        self.params.get('writeautomaticsub')]) |                                        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 |             # subtitles download errors are already managed as troubles in relevant IE | ||||||
|             # that way it will silently go on when used with unsupporting 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(): |             for sub_lang, sub_info in subtitles.items(): | ||||||
|                 sub_format = sub_info['ext'] |                 sub_format = sub_info['ext'] | ||||||
|                 if sub_info.get('data') is not None: |                 if sub_info.get('data') is not None: | ||||||
|   | |||||||
| @@ -157,8 +157,6 @@ class InfoExtractor(object): | |||||||
|                     with the "ext" entry and one of: |                     with the "ext" entry and one of: | ||||||
|                         * "data": The subtitles file contents |                         * "data": The subtitles file contents | ||||||
|                         * "url": A url pointing to the subtitles file |                         * "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. |     duration:       Length of the video in seconds, as an integer. | ||||||
|     view_count:     How many users have watched the video on the platform. |     view_count:     How many users have watched the video on the platform. | ||||||
|     like_count:     Number of positive ratings of the video |     like_count:     Number of positive ratings of the video | ||||||
|   | |||||||
| @@ -462,13 +462,14 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor): | |||||||
|         if information['ext'] != 'mp4': |         if information['ext'] != 'mp4': | ||||||
|             self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4 files') |             self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4 files') | ||||||
|             return True, information |             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') |             self._downloader.to_screen('[ffmpeg] There aren\'t any subtitles to embed') | ||||||
|             return True, information |             return True, information | ||||||
|  |  | ||||||
|         sub_langs = [key for key in information['subtitles']] |         sub_langs = list(subtitles.keys()) | ||||||
|         filename = information['filepath'] |         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 = [ |         opts = [ | ||||||
|             '-map', '0', |             '-map', '0', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz