diff options
| -rw-r--r-- | test/test_playlists.py | 10 | ||||
| -rw-r--r-- | youtube_dl/extractor/livestream.py | 14 | 
2 files changed, 21 insertions, 3 deletions
| diff --git a/test/test_playlists.py b/test/test_playlists.py index e22054d69..c33511333 100644 --- a/test/test_playlists.py +++ b/test/test_playlists.py @@ -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() diff --git a/youtube_dl/extractor/livestream.py b/youtube_dl/extractor/livestream.py index 309921078..d04da98c8 100644 --- a/youtube_dl/extractor/livestream.py +++ b/youtube_dl/extractor/livestream.py @@ -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']) | 
