mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +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 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