mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[utils] Add dict_get convenience method
This commit is contained in:
		| @@ -22,6 +22,7 @@ from youtube_dl.utils import ( | ||||
|     DateRange, | ||||
|     detect_exe_version, | ||||
|     determine_ext, | ||||
|     dict_get, | ||||
|     encode_compat_str, | ||||
|     encodeFilename, | ||||
|     escape_rfc3986, | ||||
| @@ -450,6 +451,19 @@ class TestUtil(unittest.TestCase): | ||||
|         data = urlencode_postdata({'username': 'foo@bar.com', 'password': '1234'}) | ||||
|         self.assertTrue(isinstance(data, bytes)) | ||||
|  | ||||
|     def test_dict_get(self): | ||||
|         d = { | ||||
|             'a': 42, | ||||
|         } | ||||
|         self.assertEqual(dict_get(d, 'a'), 42) | ||||
|         self.assertEqual(dict_get(d, 'b'), None) | ||||
|         self.assertEqual(dict_get(d, 'b', 42), 42) | ||||
|         self.assertEqual(dict_get(d, ('a', )), 42) | ||||
|         self.assertEqual(dict_get(d, ('b', 'a', )), 42) | ||||
|         self.assertEqual(dict_get(d, ('b', 'c', 'a', 'd', )), 42) | ||||
|         self.assertEqual(dict_get(d, ('b', 'c', )), None) | ||||
|         self.assertEqual(dict_get(d, ('b', 'c', ), 42), 42) | ||||
|  | ||||
|     def test_encode_compat_str(self): | ||||
|         self.assertEqual(encode_compat_str(b'\xd1\x82\xd0\xb5\xd1\x81\xd1\x82', 'utf-8'), 'тест') | ||||
|         self.assertEqual(encode_compat_str('тест', 'utf-8'), 'тест') | ||||
|   | ||||
| @@ -1717,6 +1717,15 @@ def encode_dict(d, encoding='utf-8'): | ||||
|     return dict((encode(k), encode(v)) for k, v in d.items()) | ||||
|  | ||||
|  | ||||
| def dict_get(d, key_or_keys, default=None): | ||||
|     if isinstance(key_or_keys, (list, tuple)): | ||||
|         for key in key_or_keys: | ||||
|             if d.get(key): | ||||
|                 return d[key] | ||||
|         return default | ||||
|     return d.get(key_or_keys, default) | ||||
|  | ||||
|  | ||||
| def encode_compat_str(string, encoding=preferredencoding(), errors='strict'): | ||||
|     return string if isinstance(string, compat_str) else compat_str(string, encoding, errors) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user