]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/YoutubeDL.py
Extract comments only when needed #95 (Closes #94)
[yt-dlp.git] / yt_dlp / YoutubeDL.py
index 3c53f4cd88a3edeb97b9ba8448822fcbece4f0b8..e9cb7e18767f0d0ca0047871d2e17d308d82dc40 100644 (file)
@@ -2041,6 +2041,7 @@ def print_optional(field):
             self.to_stdout(formatSeconds(info_dict['duration']))
         print_mandatory('format')
         if self.params.get('forcejson', False):
+            self.post_extract(info_dict)
             self.to_stdout(json.dumps(info_dict))
 
     def process_info(self, info_dict):
@@ -2064,6 +2065,7 @@ def process_info(self, info_dict):
         if self._match_entry(info_dict, incomplete=False) is not None:
             return
 
+        self.post_extract(info_dict)
         self._num_downloads += 1
 
         info_dict = self.pre_process(info_dict)
@@ -2497,6 +2499,7 @@ def download(self, url_list):
                 raise
             else:
                 if self.params.get('dump_single_json', False):
+                    self.post_extract(res)
                     self.to_stdout(json.dumps(res))
 
         return self._download_retcode
@@ -2545,6 +2548,24 @@ def run_pp(self, pp, infodict, files_to_move={}):
                     del files_to_move[old_filename]
         return files_to_move, infodict
 
+    @staticmethod
+    def post_extract(info_dict):
+        def actual_post_extract(info_dict):
+            if info_dict.get('_type') in ('playlist', 'multi_video'):
+                for video_dict in info_dict.get('entries', {}):
+                    actual_post_extract(video_dict)
+                return
+
+            if '__post_extractor' not in info_dict:
+                return
+            post_extractor = info_dict['__post_extractor']
+            if post_extractor:
+                info_dict.update(post_extractor().items())
+            del info_dict['__post_extractor']
+            return
+
+        actual_post_extract(info_dict)
+
     def pre_process(self, ie_info):
         info = dict(ie_info)
         for pp in self._pps['beforedl']: