[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):
|
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',
|
||||||
|
|
Loading…
Reference in a new issue