diff options
Diffstat (limited to 'youtube_dl/postprocessor/ffmpeg.py')
| -rw-r--r-- | youtube_dl/postprocessor/ffmpeg.py | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 398fe050e..30094c2f3 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -1,5 +1,6 @@  from __future__ import unicode_literals +import io  import os  import subprocess  import sys @@ -635,3 +636,40 @@ class FFmpegFixupM4aPP(FFmpegPostProcessor):          os.rename(encodeFilename(temp_filename), encodeFilename(filename))          return True, info + + +class FFmpegSubtitlesConvertorPP(FFmpegPostProcessor): +    def __init__(self, downloader=None, format=None): +        super(FFmpegSubtitlesConvertorPP, self).__init__(downloader) +        self.format = format + +    def run(self, info): +        subs = info.get('requested_subtitles') +        filename = info['filepath'] +        new_ext = self.format +        new_format = new_ext +        if new_format == 'vtt': +            new_format = 'webvtt' +        if subs is None: +            self._downloader.to_screen('[ffmpeg] There aren\'t any subtitles to convert') +            return True, info +        self._downloader.to_screen('[ffmpeg] Converting subtitles') +        for lang, sub in subs.items(): +            ext = sub['ext'] +            if ext == new_ext: +                self._downloader.to_screen( +                    '[ffmpeg] Subtitle file for %s is already in the requested' +                    'format' % new_ext) +                continue +            new_file = subtitles_filename(filename, lang, new_ext) +            self.run_ffmpeg( +                subtitles_filename(filename, lang, ext), +                new_file, ['-f', new_format]) + +            with io.open(new_file, 'rt', encoding='utf-8') as f: +                subs[lang] = { +                    'ext': ext, +                    'data': f.read(), +                } + +        return True, info | 
