[livestream] Fix events extraction (fixes #1467)
This commit is contained in:
		
							parent
							
								
									39baacc49f
								
							
						
					
					
						commit
						b00ca882a4
					
				
					 2 changed files with 21 additions and 3 deletions
				
			
		| 
						 | 
					@ -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'])
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue