]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/utils.py
[extractor] Add `_search_json`
[yt-dlp.git] / yt_dlp / utils.py
index 00721eb4673c7ab67cbd63e41c4c34fb6bd5c177..777b8b3ead3888e812ef9861f2754e6312fdd5f0 100644 (file)
@@ -594,6 +594,19 @@ def clean_html(html):
     return html.strip()
 
 
+class LenientJSONDecoder(json.JSONDecoder):
+    def __init__(self, *args, transform_source=None, ignore_extra=False, **kwargs):
+        self.transform_source, self.ignore_extra = transform_source, ignore_extra
+        super().__init__(*args, **kwargs)
+
+    def decode(self, s):
+        if self.transform_source:
+            s = self.transform_source(s)
+        if self.ignore_extra:
+            return self.raw_decode(s.lstrip())[0]
+        return super().decode(s)
+
+
 def sanitize_open(filename, open_mode):
     """Try to open the given filename, and slightly tweak it if this fails.