|
|
@ -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 |