]> jfr.im git - yt-dlp.git/commitdiff
[extractor/naver] Treat fan subtitles as separate language
authorpukkandan <redacted>
Fri, 25 Nov 2022 10:40:23 +0000 (16:10 +0530)
committerpukkandan <redacted>
Fri, 25 Nov 2022 10:40:30 +0000 (16:10 +0530)
Closes #5467

yt_dlp/extractor/naver.py

index 9de83abf76672fe7394275b69d7bdd99e469e04c..e2e6e9728c01852d36ad27e35ab14c58172d16c4 100644 (file)
@@ -8,6 +8,7 @@
     clean_html,
     dict_get,
     int_or_none,
+    join_nonempty,
     merge_dicts,
     parse_duration,
     traverse_obj,
@@ -72,13 +73,11 @@ def extract_formats(streams, stream_type, query={}):
 
         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 @@ def get_subs(caption_url):
             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', {})