aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-09-24 05:10:04 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-09-24 05:14:19 +0530
commit77c4a9ef680837af9d26b3ecf1c3fea9754c8b7b (patch)
tree425caa0245aae8ec3c253e4722beb8c29409e6fb
parent8f70b0b82f4b8d0c9f40ff60893ffc8601b3dab6 (diff)
downloadhypervideo-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.py22
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: