Download subtitles in order of --sub-langs

Closes #1041
This commit is contained in:
pukkandan 2021-09-24 05:10:04 +05:30
parent 8f70b0b82f
commit 77c4a9ef68
No known key found for this signature in database
GPG key ID: 0F00D95A001F4698

View file

@ -2363,20 +2363,24 @@ class YoutubeDL(object):
if self.params.get('allsubtitles', False): if self.params.get('allsubtitles', False):
requested_langs = all_sub_langs requested_langs = all_sub_langs
elif self.params.get('subtitleslangs', False): elif self.params.get('subtitleslangs', False):
requested_langs = set() # A list is used so that the order of languages will be the same as
for lang in self.params.get('subtitleslangs'): # given in subtitleslangs. See https://github.com/yt-dlp/yt-dlp/issues/1041
if lang == 'all': requested_langs = []
requested_langs.update(all_sub_langs) for lang_re in self.params.get('subtitleslangs'):
if lang_re == 'all':
requested_langs.extend(all_sub_langs)
continue continue
discard = lang[0] == '-' discard = lang_re[0] == '-'
if discard: if discard:
lang = lang[1:] lang_re = lang_re[1:]
current_langs = filter(re.compile(lang + '$').match, all_sub_langs) current_langs = filter(re.compile(lang_re + '$').match, all_sub_langs)
if discard: if discard:
for lang in current_langs: for lang in current_langs:
requested_langs.discard(lang) while lang in requested_langs:
requested_langs.remove(lang)
else: else:
requested_langs.update(current_langs) requested_langs.extend(current_langs)
requested_langs = orderedSet(requested_langs)
elif 'en' in available_subs: elif 'en' in available_subs:
requested_langs = ['en'] requested_langs = ['en']
else: else: