mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07: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 import YoutubeDL | ||||||
| from youtube_dl.compat import compat_str, compat_urllib_error | from youtube_dl.compat import compat_str, compat_urllib_error | ||||||
| from youtube_dl.extractor import YoutubeIE | from youtube_dl.extractor import YoutubeIE | ||||||
|  | from youtube_dl.extractor.common import InfoExtractor | ||||||
| from youtube_dl.postprocessor.common import PostProcessor | from youtube_dl.postprocessor.common import PostProcessor | ||||||
| from youtube_dl.utils import ExtractorError, match_filter_func | from youtube_dl.utils import ExtractorError, match_filter_func | ||||||
|  |  | ||||||
| @@ -646,6 +647,42 @@ class TestYoutubeDL(unittest.TestCase): | |||||||
|         ydl = YDL() |         ydl = YDL() | ||||||
|         self.assertRaises(compat_urllib_error.URLError, ydl.urlopen, 'file:///etc/passwd') |         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__': | if __name__ == '__main__': | ||||||
|     unittest.main() |     unittest.main() | ||||||
|   | |||||||
| @@ -707,7 +707,6 @@ class YoutubeDL(object): | |||||||
|         It will also download the videos if 'download'. |         It will also download the videos if 'download'. | ||||||
|         Returns the resolved ie_result. |         Returns the resolved ie_result. | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         result_type = ie_result.get('_type', 'video') |         result_type = ie_result.get('_type', 'video') | ||||||
|  |  | ||||||
|         if result_type in ('url', 'url_transparent'): |         if result_type in ('url', 'url_transparent'): | ||||||
| @@ -736,7 +735,7 @@ class YoutubeDL(object): | |||||||
|  |  | ||||||
|             force_properties = dict( |             force_properties = dict( | ||||||
|                 (k, v) for k, v in ie_result.items() if v is not None) |                 (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: |                 if f in force_properties: | ||||||
|                     del force_properties[f] |                     del force_properties[f] | ||||||
|             new_result = info.copy() |             new_result = info.copy() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user