mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-12-22 08:47:41 +00:00
[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…
Reference in a new issue