Skip to content

Commit

Permalink
Add field name for subtitles
Browse files Browse the repository at this point in the history
Co-authored by: pukkandan, tpikonen

Based on: yt-dlp#310, ytdl-org/youtube-dl#26112
  • Loading branch information
pukkandan committed May 15, 2021
1 parent 120916d commit 2412044
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
13 changes: 10 additions & 3 deletions yt_dlp/YoutubeDL.py
Original file line number Diff line number Diff line change
Expand Up @@ -3005,10 +3005,17 @@ def list_subtitles(self, video_id, subtitles, name='subtitles'):
return
self.to_screen(
'Available %s for %s:' % (name, video_id))

def _row(lang, formats):
exts, names = zip(*((f['ext'], f['name']) for f in reversed(formats)))
if len(set(names)) == 1:
names = names[:1]
return [lang, ', '.join(names), ', '.join(exts)]

self.to_screen(render_table(
['Language', 'formats'],
[[lang, ', '.join(f['ext'] for f in reversed(formats))]
for lang, formats in subtitles.items()]))
['Language', 'Name', 'Formats'],
[_row(lang, formats) for lang, formats in subtitles.items()],
hideEmpty=True))

def urlopen(self, req):
""" Start an HTTP download """
Expand Down
2 changes: 2 additions & 0 deletions yt_dlp/extractor/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,8 @@ class InfoExtractor(object):
entry and one of:
* "data": The subtitles file contents
* "url": A URL pointing to the subtitles file
It can optionally also have:
* "name": Name or description of the subtitles
"ext" will be calculated from URL if missing
automatic_captions: Like 'subtitles'; contains automatically generated
captions instead of normal subtitles
Expand Down
9 changes: 6 additions & 3 deletions yt_dlp/postprocessor/ffmpeg.py
Original file line number Diff line number Diff line change
Expand Up @@ -474,8 +474,7 @@ def run(self, information):
filename = information['filepath']

ext = information['ext']
sub_langs = []
sub_filenames = []
sub_langs, sub_names, sub_filenames = [], [], []
webm_vtt_warn = False
mp4_ass_warn = False

Expand All @@ -485,6 +484,7 @@ def run(self, information):
self.report_warning('JSON subtitles cannot be embedded')
elif ext != 'webm' or ext == 'webm' and sub_ext == 'vtt':
sub_langs.append(lang)
sub_names.append(sub_info.get('name'))
sub_filenames.append(sub_info['filepath'])
else:
if not webm_vtt_warn and ext == 'webm' and sub_ext != 'vtt':
Expand All @@ -510,10 +510,13 @@ def run(self, information):
]
if information['ext'] == 'mp4':
opts += ['-c:s', 'mov_text']
for (i, lang) in enumerate(sub_langs):
for i, (lang, name) in enumerate(zip(sub_langs, sub_names)):
opts.extend(['-map', '%d:0' % (i + 1)])
lang_code = ISO639Utils.short2long(lang) or lang
opts.extend(['-metadata:s:s:%d' % i, 'language=%s' % lang_code])
if name:
opts.extend(['-metadata:s:s:%d' % i, 'handler_name=%s' % name,
'-metadata:s:s:%d' % i, 'title=%s' % name])

temp_filename = prepend_extension(filename, 'temp')
self.to_screen('Embedding subtitles in "%s"' % filename)
Expand Down

0 comments on commit 2412044

Please sign in to comment.