[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,
 | 
			
		||||
    UstreamChannelIE,
 | 
			
		||||
    SoundcloudUserIE,
 | 
			
		||||
    LivestreamIE,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.utils import *
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +33,7 @@ class TestPlaylists(unittest.TestCase):
 | 
			
		|||
        self.assertIsPlaylist(result)
 | 
			
		||||
        self.assertEqual(result['title'], u'SPORT')
 | 
			
		||||
        self.assertTrue(len(result['entries']) > 20)
 | 
			
		||||
 | 
			
		||||
    def test_dailymotion_user(self):
 | 
			
		||||
        dl = FakeYDL()
 | 
			
		||||
        ie = DailymotionUserIE(dl)
 | 
			
		||||
| 
						 | 
				
			
			@ -64,5 +66,13 @@ class TestPlaylists(unittest.TestCase):
 | 
			
		|||
        self.assertEqual(result['id'], u'9615865')
 | 
			
		||||
        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__':
 | 
			
		||||
    unittest.main()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,12 @@ import re
 | 
			
		|||
import json
 | 
			
		||||
 | 
			
		||||
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):
 | 
			
		||||
| 
						 | 
				
			
			@ -35,8 +40,11 @@ class LivestreamIE(InfoExtractor):
 | 
			
		|||
 | 
			
		||||
        if video_id is None:
 | 
			
		||||
            # This is an event page:
 | 
			
		||||
            api_url = self._search_regex(r'event_design_eventId: \'(.+?)\'',
 | 
			
		||||
                                         webpage, 'api url')
 | 
			
		||||
            player = get_meta_content('twitter:player', webpage)
 | 
			
		||||
            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,
 | 
			
		||||
                                                     u'Downloading event info'))
 | 
			
		||||
            videos = [self._extract_video_info(video_data['data'])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue