From e17f38f5ac337e1416f4cd341fade0b5ae3092b6 Mon Sep 17 00:00:00 2001 From: flanter21 <139064898+flanter21@users.noreply.github.com> Date: Wed, 16 Jul 2025 16:17:16 +0300 Subject: [PATCH] Use `traverse_obj` more and set `und` as default if subtitle language not found This avoids some fatal errors Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com> --- yt_dlp/extractor/blackboardcollaborate.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/yt_dlp/extractor/blackboardcollaborate.py b/yt_dlp/extractor/blackboardcollaborate.py index 0b2ef48ac4..ff408a074c 100644 --- a/yt_dlp/extractor/blackboardcollaborate.py +++ b/yt_dlp/extractor/blackboardcollaborate.py @@ -130,11 +130,10 @@ def _real_extract(self, url): fmt['filesize'] = filesize subtitles = {} - for current_subs in video_info.get('subtitles'): - lang_code = current_subs.get('lang') - subtitles.setdefault(lang_code, []).append({ - 'name': str_or_none(current_subs.get('label')), - 'url': url_or_none(current_subs['url']), + for subs in traverse_obj(video_info, ('subtitles', lambda _, v: url_or_none(v['url']))): + subtitles.setdefault(subs.get('lang') or 'und', []).append({ + 'name': traverse_obj(subs, ('label', {str})), + 'url': subs['url'], }) for current_chat in video_info.get('chats'):