diff options
| author | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-09-24 05:10:04 +0530 | 
|---|---|---|
| committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-09-24 05:14:19 +0530 | 
| commit | 77c4a9ef680837af9d26b3ecf1c3fea9754c8b7b (patch) | |
| tree | 425caa0245aae8ec3c253e4722beb8c29409e6fb | |
| parent | 8f70b0b82f4b8d0c9f40ff60893ffc8601b3dab6 (diff) | |
| download | hypervideo-pre-77c4a9ef680837af9d26b3ecf1c3fea9754c8b7b.tar.lz hypervideo-pre-77c4a9ef680837af9d26b3ecf1c3fea9754c8b7b.tar.xz hypervideo-pre-77c4a9ef680837af9d26b3ecf1c3fea9754c8b7b.zip | |
Download subtitles in order of `--sub-langs`
Closes #1041
| -rw-r--r-- | yt_dlp/YoutubeDL.py | 22 | 
1 files changed, 13 insertions, 9 deletions
| diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 410186b91..117461f5a 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -2363,20 +2363,24 @@ class YoutubeDL(object):          if self.params.get('allsubtitles', False):              requested_langs = all_sub_langs          elif self.params.get('subtitleslangs', False): -            requested_langs = set() -            for lang in self.params.get('subtitleslangs'): -                if lang == 'all': -                    requested_langs.update(all_sub_langs) +            # A list is used so that the order of languages will be the same as +            # given in subtitleslangs. See https://github.com/yt-dlp/yt-dlp/issues/1041 +            requested_langs = [] +            for lang_re in self.params.get('subtitleslangs'): +                if lang_re == 'all': +                    requested_langs.extend(all_sub_langs)                      continue -                discard = lang[0] == '-' +                discard = lang_re[0] == '-'                  if discard: -                    lang = lang[1:] -                current_langs = filter(re.compile(lang + '$').match, all_sub_langs) +                    lang_re = lang_re[1:] +                current_langs = filter(re.compile(lang_re + '$').match, all_sub_langs)                  if discard:                      for lang in current_langs: -                        requested_langs.discard(lang) +                        while lang in requested_langs: +                            requested_langs.remove(lang)                  else: -                    requested_langs.update(current_langs) +                    requested_langs.extend(current_langs) +            requested_langs = orderedSet(requested_langs)          elif 'en' in available_subs:              requested_langs = ['en']          else: | 
