|
@@ -1279,6 +1279,26 @@ class InfoExtractor(object):
|
|
|
def _get_subtitles(self, *args, **kwargs):
|
|
|
raise NotImplementedError("This method must be implemented by subclasses")
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def _merge_subtitle_items(subtitle_list1, subtitle_list2):
|
|
|
+ """ Merge subtitle items for one language. Items with duplicated URLs
|
|
|
+ will be dropped. """
|
|
|
+ list1_urls = set([item['url'] for item in subtitle_list1])
|
|
|
+ ret = list(subtitle_list1)
|
|
|
+ ret.extend([item for item in subtitle_list2 if item['url'] not in list1_urls])
|
|
|
+ return ret
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def _merge_subtitles(kls, subtitle_dict1, subtitle_dict2):
|
|
|
+ """ Merge two subtitle dictionaries, language by language. """
|
|
|
+ print(subtitle_dict1)
|
|
|
+ print(subtitle_dict2)
|
|
|
+ ret = dict(subtitle_dict1)
|
|
|
+ for lang in subtitle_dict2:
|
|
|
+ ret[lang] = kls._merge_subtitle_items(subtitle_dict1.get(lang, []), subtitle_dict2[lang])
|
|
|
+ print(ret)
|
|
|
+ return ret
|
|
|
+
|
|
|
def extract_automatic_captions(self, *args, **kwargs):
|
|
|
if (self._downloader.params.get('writeautomaticsub', False) or
|
|
|
self._downloader.params.get('listsubtitles')):
|