]> jfr.im git - yt-dlp.git/commitdiff
[youtube] Fix automatic captions
authorpukkandan <redacted>
Sat, 5 Mar 2022 04:08:03 +0000 (09:38 +0530)
committerpukkandan <redacted>
Sat, 5 Mar 2022 04:12:12 +0000 (09:42 +0530)
Closes #2956

yt_dlp/extractor/youtube.py

index 4e812af9924157dc7ee28077c09813f9293a866a..ee0277fd756ba3cd8625d5aba8267038cf6605d8 100644 (file)
@@ -3410,11 +3410,16 @@ def process_language(container, base_url, lang_code, sub_name, query):
                     if caption_track.get('kind') != 'asr':
                         trans_code += f'-{lang_code}'
                         trans_name += format_field(lang_name, template=' from %s')
-                    process_language(
-                        automatic_captions, base_url, trans_code, trans_name, {'tlang': trans_code})
+                    # Add an "-orig" label to the original language so that it can be distinguished.
+                    # The subs are returned without "-orig" as well for compatibility
                     if lang_code == f'a-{trans_code}':
                         process_language(
-                            automatic_captions, base_url, f'{trans_code}-orig', f'{trans_name} (Original)', {'tlang': trans_code})
+                            automatic_captions, base_url, f'{trans_code}-orig', f'{trans_name} (Original)', {})
+                    # Setting tlang=lang returns damaged subtitles.
+                    # Not using lang_code == f'a-{trans_code}' here for future-proofing
+                    orig_lang = parse_qs(base_url).get('lang', [None])[-1]
+                    process_language(automatic_captions, base_url, trans_code, trans_name,
+                                     {} if orig_lang == trans_code else {'tlang': trans_code})
             info['automatic_captions'] = automatic_captions
             info['subtitles'] = subtitles