From 984f9233c49ce99c2d754c143b95ce5674e3121f Mon Sep 17 00:00:00 2001 From: Simon Sawicki Date: Sat, 16 Nov 2024 00:13:12 +0100 Subject: [PATCH] [ie/rutube] Use `subs_list_to_dict` --- yt_dlp/extractor/common.py | 2 +- yt_dlp/extractor/rutube.py | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py index 01915acf23..bbb896679a 100644 --- a/yt_dlp/extractor/common.py +++ b/yt_dlp/extractor/common.py @@ -3767,7 +3767,7 @@ class InfoExtractor: """ Merge subtitle dictionaries, language by language. """ if target is None: target = {} - for d in dicts: + for d in filter(None, dicts): for lang, subs in d.items(): target[lang] = cls._merge_subtitle_items(target.get(lang, []), subs) return target diff --git a/yt_dlp/extractor/rutube.py b/yt_dlp/extractor/rutube.py index abf9aec727..20365ac5d1 100644 --- a/yt_dlp/extractor/rutube.py +++ b/yt_dlp/extractor/rutube.py @@ -13,7 +13,10 @@ from ..utils import ( unified_timestamp, url_or_none, ) -from ..utils.traversal import traverse_obj +from ..utils.traversal import ( + subs_list_to_dict, + traverse_obj, +) class RutubeBaseIE(InfoExtractor): @@ -92,11 +95,11 @@ class RutubeBaseIE(InfoExtractor): hls_url, video_id, 'mp4', fatal=False, m3u8_id='hls') formats.extend(fmts) self._merge_subtitles(subs, target=subtitles) - for caption in traverse_obj(options, ('captions', lambda _, v: url_or_none(v['file']))): - subtitles.setdefault(caption.get('code') or 'ru', []).append({ - 'url': caption['file'], - 'name': caption.get('langTitle'), - }) + self._merge_subtitles(traverse_obj(options, ('captions', ..., { + 'id': 'code', + 'url': 'file', + 'name': ('langTitle', {str}), + }, all, {subs_list_to_dict(lang='ru')})), target=subtitles) return formats, subtitles def _download_and_extract_formats_and_subtitles(self, video_id, query=None):