Procházet zdrojové kódy

YoutubeDL: only set the ‘formats’ field of the info_dict if it was already set before

It caused a circular reference error, when trying to dump it to json (for example with the test video for myvideo.de or any other video without formats)
Jaime Marquínez Ferrándiz před 12 roky
rodič
revize
b3d9ef88ec
1 změnil soubory, kde provedl 6 přidání a 1 odebrání
  1. 6 1
      youtube_dl/YoutubeDL.py

+ 6 - 1
youtube_dl/YoutubeDL.py

@@ -688,7 +688,12 @@ class YoutubeDL(object):
                         ext_ord)
             formats = sorted(formats, key=_free_formats_key)
 
-        info_dict['formats'] = formats
+        if formats[0] is not info_dict: 
+            # only set the 'formats' fields if the original info_dict list them
+            # otherwise we end up with a circular reference, the first (and unique)
+            # element in the 'formats' field in info_dict is info_dict itself, 
+            # wich can't be exported to json
+            info_dict['formats'] = formats
         if self.params.get('listformats', None):
             self.list_formats(info_dict)
             return