diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2015-02-28 20:51:54 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2015-02-28 20:51:54 +0100 | 
| commit | 29cad7ad130c2e093c06d269c3b222e33adc218f (patch) | |
| tree | 58d6b44e87712e9c461b83f892dbd7d173214eed /youtube_dl/postprocessor/ffmpeg.py | |
| parent | 1a2313a6f2d83c9e0a5c0c25bf5a2e3167994dbe (diff) | |
| parent | 0d103de3b0b03c5027f0015327c2c44b9073513a (diff) | |
Merge remote-tracking branch 'origin/master'
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 | 
