From c0caa805157fb315d4b24ea4e1f3eef0210c2096 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Fri, 25 Nov 2022 16:10:23 +0530 Subject: [PATCH] [extractor/naver] Treat fan subtitles as separate language Closes #5467 --- yt_dlp/extractor/naver.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/yt_dlp/extractor/naver.py b/yt_dlp/extractor/naver.py index 9de83abf7..e2e6e9728 100644 --- a/yt_dlp/extractor/naver.py +++ b/yt_dlp/extractor/naver.py @@ -8,6 +8,7 @@ from ..utils import ( clean_html, dict_get, int_or_none, + join_nonempty, merge_dicts, parse_duration, traverse_obj, @@ -72,13 +73,11 @@ class NaverBaseIE(InfoExtractor): def get_subs(caption_url): if re.search(self._CAPTION_EXT_RE, caption_url): - return [{ - 'url': replace_ext(caption_url, 'ttml'), - }, { - 'url': replace_ext(caption_url, 'vtt'), - }] - else: - return [{'url': caption_url}] + return [ + replace_ext(caption_url, 'ttml'), + replace_ext(caption_url, 'vtt'), + ] + return [caption_url] automatic_captions = {} subtitles = {} @@ -87,7 +86,13 @@ class NaverBaseIE(InfoExtractor): if not caption_url: continue sub_dict = automatic_captions if caption.get('type') == 'auto' else subtitles - sub_dict.setdefault(dict_get(caption, ('locale', 'language')), []).extend(get_subs(caption_url)) + lang = caption.get('locale') or join_nonempty('language', 'country', from_dict=caption) or 'und' + if caption.get('type') == 'fan': + lang += '_fan%d' % next(i for i in itertools.count(1) if f'{lang}_fan{i}' not in sub_dict) + sub_dict.setdefault(lang, []).extend({ + 'url': sub_url, + 'name': join_nonempty('label', 'fanName', from_dict=caption, delim=' - '), + } for sub_url in get_subs(caption_url)) user = meta.get('user', {})