diff options
| author | Sergey M․ <dstftw@gmail.com> | 2019-10-18 04:03:53 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2019-10-18 04:03:53 +0700 | 
| commit | 824fa51165d92ceee01589bf995ebbf009df328c (patch) | |
| tree | 20c31ecdef57d2ce71de14462ed4dcc0fdd58d2a | |
| parent | 34e3885bc9e3aecab104b96eabce03854ac8f7a2 (diff) | |
[utils] Improve subtitles_filename (closes #22753)
| -rw-r--r-- | test/test_utils.py | 6 | ||||
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 2 | ||||
| -rw-r--r-- | youtube_dl/postprocessor/ffmpeg.py | 8 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 4 | 
4 files changed, 13 insertions, 7 deletions
| diff --git a/test/test_utils.py b/test/test_utils.py index 659c6ece5..3920542bb 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -74,6 +74,7 @@ from youtube_dl.utils import (      str_to_int,      strip_jsonp,      strip_or_none, +    subtitles_filename,      timeconvert,      unescapeHTML,      unified_strdate, @@ -261,6 +262,11 @@ class TestUtil(unittest.TestCase):          self.assertEqual(replace_extension('.abc', 'temp'), '.abc.temp')          self.assertEqual(replace_extension('.abc.ext', 'temp'), '.abc.temp') +    def test_subtitles_filename(self): +        self.assertEqual(subtitles_filename('abc.ext', 'en', 'vtt'), 'abc.en.vtt') +        self.assertEqual(subtitles_filename('abc.ext', 'en', 'vtt', 'ext'), 'abc.en.vtt') +        self.assertEqual(subtitles_filename('abc.unexpected_ext', 'en', 'vtt', 'ext'), 'abc.unexpected_ext.en.vtt') +      def test_remove_start(self):          self.assertEqual(remove_start(None, 'A - '), None)          self.assertEqual(remove_start('A - B', 'A - '), 'B') diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index c3d1407f9..f5cb46308 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1814,7 +1814,7 @@ class YoutubeDL(object):              ie = self.get_info_extractor(info_dict['extractor_key'])              for sub_lang, sub_info in subtitles.items():                  sub_format = sub_info['ext'] -                sub_filename = subtitles_filename(filename, sub_lang, sub_format) +                sub_filename = subtitles_filename(filename, sub_lang, sub_format, info_dict.get('ext'))                  if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(sub_filename)):                      self.to_screen('[info] Video subtitle %s.%s is already present' % (sub_lang, sub_format))                  else: diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 70416c25e..fd3f921a8 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -393,7 +393,7 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):              sub_ext = sub_info['ext']              if ext != 'webm' or ext == 'webm' and sub_ext == 'vtt':                  sub_langs.append(lang) -                sub_filenames.append(subtitles_filename(filename, lang, sub_ext)) +                sub_filenames.append(subtitles_filename(filename, lang, sub_ext, ext))              else:                  if not webm_vtt_warn and ext == 'webm' and sub_ext != 'vtt':                      webm_vtt_warn = True @@ -606,9 +606,9 @@ class FFmpegSubtitlesConvertorPP(FFmpegPostProcessor):                  self._downloader.to_screen(                      '[ffmpeg] Subtitle file for %s is already in the requested format' % new_ext)                  continue -            old_file = subtitles_filename(filename, lang, ext) +            old_file = subtitles_filename(filename, lang, ext, info.get('ext'))              sub_filenames.append(old_file) -            new_file = subtitles_filename(filename, lang, new_ext) +            new_file = subtitles_filename(filename, lang, new_ext, info.get('ext'))              if ext in ('dfxp', 'ttml', 'tt'):                  self._downloader.report_warning( @@ -616,7 +616,7 @@ class FFmpegSubtitlesConvertorPP(FFmpegPostProcessor):                      'which results in style information loss')                  dfxp_file = old_file -                srt_file = subtitles_filename(filename, lang, 'srt') +                srt_file = subtitles_filename(filename, lang, 'srt', info.get('ext'))                  with open(dfxp_file, 'rb') as f:                      srt_data = dfxp2srt(f.read()) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 798757241..53117ea90 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -2906,8 +2906,8 @@ def determine_ext(url, default_ext='unknown_video'):          return default_ext -def subtitles_filename(filename, sub_lang, sub_format): -    return filename.rsplit('.', 1)[0] + '.' + sub_lang + '.' + sub_format +def subtitles_filename(filename, sub_lang, sub_format, expected_real_ext=None): +    return replace_extension(filename, sub_lang + '.' + sub_format, expected_real_ext)  def date_from_str(date_str): | 
