[extractor/common] Add support multiple getters in try_get
This commit is contained in:
		@@ -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'):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user