diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py index 4487c53756..ee8a54b662 100644 --- a/yt_dlp/extractor/common.py +++ b/yt_dlp/extractor/common.py @@ -3319,12 +3319,22 @@ class InfoExtractor(object): return ret @classmethod - def _merge_subtitles(cls, subtitle_dict1, subtitle_dict2): - """ Merge two subtitle dictionaries, language by language. """ - ret = dict(subtitle_dict1) - for lang in subtitle_dict2: - ret[lang] = cls._merge_subtitle_items(subtitle_dict1.get(lang, []), subtitle_dict2[lang]) - return ret + def _merge_subtitles(cls, *dicts, **kwargs): + """ Merge subtitle dictionaries, language by language. """ + + target = (lambda target=None: target)(**kwargs) + # The above lambda extracts the keyword argument 'target' from kwargs + # while ensuring there are no stray ones. When Python 2 support + # is dropped, remove it and change the function signature to: + # + # def _merge_subtitles(cls, *dicts, target=None): + + if target is None: + target = {} + for d in dicts: + for lang, subs in d.items(): + target[lang] = cls._merge_subtitle_items(target.get(lang, []), subs) + return target def extract_automatic_captions(self, *args, **kwargs): if (self._downloader.params.get('writeautomaticsub', False)