mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[YoutubeDL] Do not override ie_key in url_transparent
This commit is contained in:
		| @@ -14,6 +14,7 @@ from test.helper import FakeYDL, assertRegexpMatches | ||||
| from youtube_dl import YoutubeDL | ||||
| from youtube_dl.compat import compat_str, compat_urllib_error | ||||
| from youtube_dl.extractor import YoutubeIE | ||||
| from youtube_dl.extractor.common import InfoExtractor | ||||
| from youtube_dl.postprocessor.common import PostProcessor | ||||
| from youtube_dl.utils import ExtractorError, match_filter_func | ||||
|  | ||||
| @@ -646,6 +647,42 @@ class TestYoutubeDL(unittest.TestCase): | ||||
|         ydl = YDL() | ||||
|         self.assertRaises(compat_urllib_error.URLError, ydl.urlopen, 'file:///etc/passwd') | ||||
|  | ||||
|     def test_do_not_override_ie_key_in_url_transparent(self): | ||||
|         ydl = YDL() | ||||
|  | ||||
|         class Foo1IE(InfoExtractor): | ||||
|             _VALID_URL = r'foo1:' | ||||
|  | ||||
|             def _real_extract(self, url): | ||||
|                 return { | ||||
|                     '_type': 'url_transparent', | ||||
|                     'url': 'foo2:', | ||||
|                     'ie_key': 'Foo2', | ||||
|                 } | ||||
|  | ||||
|         class Foo2IE(InfoExtractor): | ||||
|             _VALID_URL = r'foo2:' | ||||
|  | ||||
|             def _real_extract(self, url): | ||||
|                 return { | ||||
|                     '_type': 'url', | ||||
|                     'url': 'foo3:', | ||||
|                     'ie_key': 'Foo3', | ||||
|                 } | ||||
|  | ||||
|         class Foo3IE(InfoExtractor): | ||||
|             _VALID_URL = r'foo3:' | ||||
|  | ||||
|             def _real_extract(self, url): | ||||
|                 return _make_result([{'url': TEST_URL}]) | ||||
|  | ||||
|         ydl.add_info_extractor(Foo1IE(ydl)) | ||||
|         ydl.add_info_extractor(Foo2IE(ydl)) | ||||
|         ydl.add_info_extractor(Foo3IE(ydl)) | ||||
|         ydl.extract_info('foo1:') | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['url'], TEST_URL) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|   | ||||
| @@ -707,7 +707,6 @@ class YoutubeDL(object): | ||||
|         It will also download the videos if 'download'. | ||||
|         Returns the resolved ie_result. | ||||
|         """ | ||||
|  | ||||
|         result_type = ie_result.get('_type', 'video') | ||||
|  | ||||
|         if result_type in ('url', 'url_transparent'): | ||||
| @@ -736,7 +735,7 @@ class YoutubeDL(object): | ||||
|  | ||||
|             force_properties = dict( | ||||
|                 (k, v) for k, v in ie_result.items() if v is not None) | ||||
|             for f in ('_type', 'url'): | ||||
|             for f in ('_type', 'url', 'ie_key'): | ||||
|                 if f in force_properties: | ||||
|                     del force_properties[f] | ||||
|             new_result = info.copy() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yen Chi Hsuan
					Yen Chi Hsuan