summary refs log tree commit diff
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2015-08-21 01:37:07 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2015-08-21 01:37:07 +0800
commit912e0b7e46d795df3ec1866f9b0ff071cca8d550 (patch)
tree7495969b17febd06366e0cf6db2b9c11d4bdc688
parent03bc7237add1747de4c0c5d09e72e03639b4fd21 (diff)
downloadyoutube-dl-912e0b7e46d795df3ec1866f9b0ff071cca8d550.tar.gz
youtube-dl-912e0b7e46d795df3ec1866f9b0ff071cca8d550.tar.xz
youtube-dl-912e0b7e46d795df3ec1866f9b0ff071cca8d550.zip
[common] Add _merge_subtitles()
-rw-r--r--youtube_dl/extractor/common.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py
index 999afc110..b7437af5a 100644
--- a/youtube_dl/extractor/common.py
+++ b/youtube_dl/extractor/common.py
@@ -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')):