aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>2013-09-21 13:50:52 +0200
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>2013-09-21 13:50:52 +0200
commitb00ca882a4c1069de1ec2d04ffd50905c0f8b97f (patch)
treece6b4a1d1e4390fbf36b933dbafd180a468990c1
parent39baacc49f323adc639d502d38a016ebd63acd75 (diff)
downloadyoutube-dl-b00ca882a4c1069de1ec2d04ffd50905c0f8b97f.tar.xz
[livestream] Fix events extraction (fixes #1467)
-rw-r--r--test/test_playlists.py10
-rw-r--r--youtube_dl/extractor/livestream.py14
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'])