diff options
| -rw-r--r-- | youtube_dl/extractor/discovery.py | 2 | ||||
| -rw-r--r-- | youtube_dl/options.py | 2 | ||||
| -rw-r--r-- | youtube_dl/postprocessor/ffmpeg.py | 25 | 
3 files changed, 23 insertions, 6 deletions
| diff --git a/youtube_dl/extractor/discovery.py b/youtube_dl/extractor/discovery.py index ce680a9f3..fdce1429a 100644 --- a/youtube_dl/extractor/discovery.py +++ b/youtube_dl/extractor/discovery.py @@ -9,7 +9,7 @@ from ..compat import compat_str  class DiscoveryIE(InfoExtractor): -    _VALID_URL = r'''(?x)http://(?:www\.)?(?: +    _VALID_URL = r'''(?x)https?://(?:www\.)?(?:              discovery|              investigationdiscovery|              discoverylife| diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 9dd7a8034..755ed6540 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -720,7 +720,7 @@ def parseOpts(overrideArguments=None):      postproc.add_option(          '--embed-subs',          action='store_true', dest='embedsubtitles', default=False, -        help='Embed subtitles in the video (only for mkv and mp4 videos)') +        help='Embed subtitles in the video (only for mp4, webm and mkv videos)')      postproc.add_option(          '--embed-thumbnail',          action='store_true', dest='embedthumbnail', default=False, diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index a8819f258..06b8c0548 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -331,17 +331,34 @@ class FFmpegVideoConvertorPP(FFmpegPostProcessor):  class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):      def run(self, information): -        if information['ext'] not in ['mp4', 'mkv']: -            self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4 or mkv files') +        if information['ext'] not in ('mp4', 'webm', 'mkv'): +            self._downloader.to_screen('[ffmpeg] Subtitles can only be embedded in mp4, webm or mkv files')              return [], information          subtitles = information.get('requested_subtitles')          if not subtitles:              self._downloader.to_screen('[ffmpeg] There aren\'t any subtitles to embed')              return [], information -        sub_langs = list(subtitles.keys())          filename = information['filepath'] -        sub_filenames = [subtitles_filename(filename, lang, sub_info['ext']) for lang, sub_info in subtitles.items()] + +        ext = information['ext'] +        sub_langs = [] +        sub_filenames = [] +        webm_vtt_warn = False + +        for lang, sub_info in subtitles.items(): +            sub_ext = sub_info['ext'] +            if ext != 'webm' or ext == 'webm' and sub_ext == 'vtt': +                sub_langs.append(lang) +                sub_filenames.append(subtitles_filename(filename, lang, sub_ext)) +            else: +                if not webm_vtt_warn and ext == 'webm' and sub_ext != 'vtt': +                    webm_vtt_warn = True +                    self._downloader.to_screen('[ffmpeg] Only WebVTT subtitles can be embedded in webm files') + +        if not sub_langs: +            return [], information +          input_files = [filename] + sub_filenames          opts = [ | 
