mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[livestream] Fix events extraction (fixes #1467)
This commit is contained in:
		| @@ -15,6 +15,7 @@ from youtube_dl.extractor import ( | |||||||
|     VimeoChannelIE, |     VimeoChannelIE, | ||||||
|     UstreamChannelIE, |     UstreamChannelIE, | ||||||
|     SoundcloudUserIE, |     SoundcloudUserIE, | ||||||
|  |     LivestreamIE, | ||||||
| ) | ) | ||||||
| from youtube_dl.utils import * | from youtube_dl.utils import * | ||||||
|  |  | ||||||
| @@ -32,6 +33,7 @@ class TestPlaylists(unittest.TestCase): | |||||||
|         self.assertIsPlaylist(result) |         self.assertIsPlaylist(result) | ||||||
|         self.assertEqual(result['title'], u'SPORT') |         self.assertEqual(result['title'], u'SPORT') | ||||||
|         self.assertTrue(len(result['entries']) > 20) |         self.assertTrue(len(result['entries']) > 20) | ||||||
|  |  | ||||||
|     def test_dailymotion_user(self): |     def test_dailymotion_user(self): | ||||||
|         dl = FakeYDL() |         dl = FakeYDL() | ||||||
|         ie = DailymotionUserIE(dl) |         ie = DailymotionUserIE(dl) | ||||||
| @@ -64,5 +66,13 @@ class TestPlaylists(unittest.TestCase): | |||||||
|         self.assertEqual(result['id'], u'9615865') |         self.assertEqual(result['id'], u'9615865') | ||||||
|         self.assertTrue(len(result['entries']) >= 12) |         self.assertTrue(len(result['entries']) >= 12) | ||||||
|  |  | ||||||
|  |     def test_livestream_event(self): | ||||||
|  |         dl = FakeYDL() | ||||||
|  |         ie = LivestreamIE(dl) | ||||||
|  |         result = ie.extract('http://new.livestream.com/tedx/cityenglish') | ||||||
|  |         self.assertIsPlaylist(result) | ||||||
|  |         self.assertEqual(result['title'], u'TEDCity2.0 (English)') | ||||||
|  |         self.assertTrue(len(result['entries']) >= 4) | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     unittest.main() |     unittest.main() | ||||||
|   | |||||||
| @@ -2,7 +2,12 @@ import re | |||||||
| import json | import json | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..utils import compat_urllib_parse_urlparse, compat_urlparse | from ..utils import ( | ||||||
|  |     compat_urllib_parse_urlparse, | ||||||
|  |     compat_urlparse, | ||||||
|  |     get_meta_content, | ||||||
|  |     ExtractorError, | ||||||
|  | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| class LivestreamIE(InfoExtractor): | class LivestreamIE(InfoExtractor): | ||||||
| @@ -35,8 +40,11 @@ class LivestreamIE(InfoExtractor): | |||||||
|  |  | ||||||
|         if video_id is None: |         if video_id is None: | ||||||
|             # This is an event page: |             # This is an event page: | ||||||
|             api_url = self._search_regex(r'event_design_eventId: \'(.+?)\'', |             player = get_meta_content('twitter:player', webpage) | ||||||
|                                          webpage, 'api url') |             if player is None: | ||||||
|  |                 raise ExtractorError('Couldn\'t extract event api url') | ||||||
|  |             api_url = player.replace('/player', '') | ||||||
|  |             api_url = re.sub(r'^(https?://)(new\.)', r'\1api.\2', api_url) | ||||||
|             info = json.loads(self._download_webpage(api_url, event_name, |             info = json.loads(self._download_webpage(api_url, event_name, | ||||||
|                                                      u'Downloading event info')) |                                                      u'Downloading event info')) | ||||||
|             videos = [self._extract_video_info(video_data['data']) |             videos = [self._extract_video_info(video_data['data']) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz