diff options
author | pukkandan <pukkandan@gmail.com> | 2021-02-10 00:07:10 +0530 |
---|---|---|
committer | pukkandan <pukkandan@gmail.com> | 2021-02-10 00:12:42 +0530 |
commit | cffab0eefcb7207949dd100523d6be89ddd55ee5 (patch) | |
tree | 7bbf81388e28b67f8a27dd30728c1eab93778cb2 | |
parent | 2e339f59c3c5a683596976da8ba925f3e92bd425 (diff) | |
download | hypervideo-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__.py | 13 | ||||
-rw-r--r-- | youtube_dlc/postprocessor/ffmpeg.py | 7 |
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): |