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): | 
