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