aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan@gmail.com>2021-02-10 00:07:10 +0530
committerpukkandan <pukkandan@gmail.com>2021-02-10 00:12:42 +0530
commitcffab0eefcb7207949dd100523d6be89ddd55ee5 (patch)
tree7bbf81388e28b67f8a27dd30728c1eab93778cb2
parent2e339f59c3c5a683596976da8ba925f3e92bd425 (diff)
downloadhypervideo-pre-cffab0eefcb7207949dd100523d6be89ddd55ee5.tar.lz
hypervideo-pre-cffab0eefcb7207949dd100523d6be89ddd55ee5.tar.xz
hypervideo-pre-cffab0eefcb7207949dd100523d6be89ddd55ee5.zip
[embedsubtitle] Keep original subtitle after conversion if write_subtitles given
Closes: https://github.com/pukkandan/yt-dlp/issues/57#issuecomment-775227745 :ci skip dl
-rw-r--r--youtube_dlc/__init__.py13
-rw-r--r--youtube_dlc/postprocessor/ffmpeg.py7
2 files changed, 14 insertions, 6 deletions
diff --git a/youtube_dlc/__init__.py b/youtube_dlc/__init__.py
index d28510467..eeb7b6f74 100644
--- a/youtube_dlc/__init__.py
+++ b/youtube_dlc/__init__.py
@@ -233,11 +233,6 @@ def _real_main(argv=None):
if opts.extractaudio and not opts.keepvideo and opts.format is None:
opts.format = 'bestaudio/best'
- # --all-sub automatically sets --write-sub if --write-auto-sub is not given
- # this was the old behaviour if only --all-sub was given.
- if opts.allsubtitles and not opts.writeautomaticsub:
- opts.writesubtitles = True
-
outtmpl = opts.outtmpl
if not outtmpl:
outtmpl = {'default': (
@@ -311,9 +306,17 @@ def _real_main(argv=None):
'format': opts.convertsubtitles,
})
if opts.embedsubtitles:
+ already_have_subtitle = opts.writesubtitles
postprocessors.append({
'key': 'FFmpegEmbedSubtitle',
+ 'already_have_subtitle': already_have_subtitle
})
+ if not already_have_subtitle:
+ opts.writesubtitles = True
+ # --all-sub automatically sets --write-sub if --write-auto-sub is not given
+ # this was the old behaviour if only --all-sub was given.
+ if opts.allsubtitles and not opts.writeautomaticsub:
+ opts.writesubtitles = True
if opts.embedthumbnail:
already_have_thumbnail = opts.writethumbnail or opts.write_all_thumbnails
postprocessors.append({
diff --git a/youtube_dlc/postprocessor/ffmpeg.py b/youtube_dlc/postprocessor/ffmpeg.py
index 948c34287..cabe7266e 100644
--- a/youtube_dlc/postprocessor/ffmpeg.py
+++ b/youtube_dlc/postprocessor/ffmpeg.py
@@ -442,6 +442,10 @@ class FFmpegVideoConvertorPP(FFmpegPostProcessor):
class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):
+ def __init__(self, downloader=None, already_have_subtitle=False):
+ super(FFmpegEmbedSubtitlePP, self).__init__(downloader)
+ self._already_have_subtitle = already_have_subtitle
+
def run(self, information):
if information['ext'] not in ('mp4', 'webm', 'mkv'):
self.to_screen('Subtitles can only be embedded in mp4, webm or mkv files')
@@ -501,7 +505,8 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):
os.remove(encodeFilename(filename))
os.rename(encodeFilename(temp_filename), encodeFilename(filename))
- return sub_filenames, information
+ files_to_delete = [] if self._already_have_subtitle else sub_filenames
+ return files_to_delete, information
class FFmpegMetadataPP(FFmpegPostProcessor):