Pārlūkot izejas kodu

[extractor/common] Add support multiple getters in try_get

Sergey M․ 8 gadi atpakaļ
vecāks
revīzija
a32a9a7ef5
1 mainītis faili ar 10 papildinājumiem un 7 dzēšanām
  1. 10 7
      youtube_dl/utils.py

+ 10 - 7
youtube_dl/utils.py

@@ -2103,13 +2103,16 @@ def dict_get(d, key_or_keys, default=None, skip_false_values=True):
 
 
 def try_get(src, getter, expected_type=None):
-    try:
-        v = getter(src)
-    except (AttributeError, KeyError, TypeError, IndexError):
-        pass
-    else:
-        if expected_type is None or isinstance(v, expected_type):
-            return v
+    if not isinstance(getter, (list, tuple)):
+        getter = [getter]
+    for get in getter:
+        try:
+            v = get(src)
+        except (AttributeError, KeyError, TypeError, IndexError):
+            pass
+        else:
+            if expected_type is None or isinstance(v, expected_type):
+                return v
 
 
 def encode_compat_str(string, encoding=preferredencoding(), errors='strict'):