mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	Add auxiliary methods to InfoExtractor to set the '_type' key and use them for some playlist IEs
This commit is contained in:
		| @@ -36,31 +36,37 @@ class FakeDownloader(FileDownloader): | ||||
|         return url | ||||
|  | ||||
| class TestYoutubeLists(unittest.TestCase): | ||||
|     def assertIsPlaylist(self,info): | ||||
|         """Make sure the info has '_type' set to 'playlist'""" | ||||
|         self.assertEqual(info['_type'], 'playlist') | ||||
|  | ||||
|     def test_youtube_playlist(self): | ||||
|         dl = FakeDownloader() | ||||
|         ie = YoutubePlaylistIE(dl) | ||||
|         ie.extract('https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re') | ||||
|         ytie_results = [YoutubeIE()._extract_id(url) for url in dl.result] | ||||
|         result = ie.extract('https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re')[0] | ||||
|         self.assertIsPlaylist(result) | ||||
|         ytie_results = [YoutubeIE()._extract_id(url['url']) for url in result['entries']] | ||||
|         self.assertEqual(ytie_results, [ 'bV9L5Ht9LgY', 'FXxLjLQi3Fg', 'tU3Bgo5qJZE']) | ||||
|  | ||||
|     def test_issue_673(self): | ||||
|         dl = FakeDownloader() | ||||
|         ie = YoutubePlaylistIE(dl) | ||||
|         ie.extract('PLBB231211A4F62143') | ||||
|         self.assertTrue(len(dl.result) > 40) | ||||
|         result = ie.extract('PLBB231211A4F62143')[0] | ||||
|         self.assertTrue(len(result['entries']) > 40) | ||||
|  | ||||
|     def test_youtube_playlist_long(self): | ||||
|         dl = FakeDownloader() | ||||
|         ie = YoutubePlaylistIE(dl) | ||||
|         ie.extract('https://www.youtube.com/playlist?list=UUBABnxM4Ar9ten8Mdjj1j0Q') | ||||
|         self.assertTrue(len(dl.result) >= 799) | ||||
|         result = ie.extract('https://www.youtube.com/playlist?list=UUBABnxM4Ar9ten8Mdjj1j0Q')[0] | ||||
|         self.assertIsPlaylist(result) | ||||
|         self.assertTrue(len(result['entries']) >= 799) | ||||
|  | ||||
|     def test_youtube_playlist_with_deleted(self): | ||||
|         #651 | ||||
|         dl = FakeDownloader() | ||||
|         ie = YoutubePlaylistIE(dl) | ||||
|         ie.extract('https://www.youtube.com/playlist?list=PLwP_SiAcdui0KVebT0mU9Apz359a4ubsC') | ||||
|         ytie_results = [YoutubeIE()._extract_id(url) for url in dl.result] | ||||
|         result = ie.extract('https://www.youtube.com/playlist?list=PLwP_SiAcdui0KVebT0mU9Apz359a4ubsC')[0] | ||||
|         ytie_results = [YoutubeIE()._extract_id(url['url']) for url in result['entries']] | ||||
|         self.assertFalse('pElCt5oNDuI' in ytie_results) | ||||
|         self.assertFalse('KdPEApIVdWM' in ytie_results) | ||||
|  | ||||
| @@ -68,10 +74,11 @@ class TestYoutubeLists(unittest.TestCase): | ||||
|         dl = FakeDownloader() | ||||
|         ie = YoutubePlaylistIE(dl) | ||||
|         # TODO find a > 100 (paginating?) videos course | ||||
|         ie.extract('https://www.youtube.com/course?list=ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8') | ||||
|         self.assertEqual(YoutubeIE()._extract_id(dl.result[0]), 'j9WZyLZCBzs') | ||||
|         self.assertEqual(len(dl.result), 25) | ||||
|         self.assertEqual(YoutubeIE()._extract_id(dl.result[-1]), 'rYefUsYuEp0') | ||||
|         result = ie.extract('https://www.youtube.com/course?list=ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8')[0] | ||||
|         entries = result['entries'] | ||||
|         self.assertEqual(YoutubeIE()._extract_id(entries[0]['url']), 'j9WZyLZCBzs') | ||||
|         self.assertEqual(len(entries), 25) | ||||
|         self.assertEqual(YoutubeIE()._extract_id(entries[-1]['url']), 'rYefUsYuEp0') | ||||
|  | ||||
|     def test_youtube_channel(self): | ||||
|         # I give up, please find a channel that does paginate and test this like test_youtube_playlist_long | ||||
| @@ -80,8 +87,8 @@ class TestYoutubeLists(unittest.TestCase): | ||||
|     def test_youtube_user(self): | ||||
|         dl = FakeDownloader() | ||||
|         ie = YoutubeUserIE(dl) | ||||
|         ie.extract('https://www.youtube.com/user/TheLinuxFoundation') | ||||
|         self.assertTrue(len(dl.result) >= 320) | ||||
|         result = ie.extract('https://www.youtube.com/user/TheLinuxFoundation')[0] | ||||
|         self.assertTrue(len(result['entries']) >= 320) | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz