[on24] Add extractor (#1200)

Authored by: damianoamatruda
pull/1332/head
Damiano Amatruda 3 years ago committed by GitHub
parent 239df02103
commit 693ec74401
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -983,6 +983,7 @@ from .odatv import OdaTVIE
from .odnoklassniki import OdnoklassnikiIE from .odnoklassniki import OdnoklassnikiIE
from .oktoberfesttv import OktoberfestTVIE from .oktoberfesttv import OktoberfestTVIE
from .olympics import OlympicsReplayIE from .olympics import OlympicsReplayIE
from .on24 import On24IE
from .ondemandkorea import OnDemandKoreaIE from .ondemandkorea import OnDemandKoreaIE
from .onet import ( from .onet import (
OnetIE, OnetIE,

@ -0,0 +1,91 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
from ..utils import (
int_or_none,
strip_or_none,
try_get,
urljoin,
)
class On24IE(InfoExtractor):
IE_NAME = 'on24'
IE_DESC = 'ON24'
_VALID_URL = r'''(?x)
https?://event\.on24\.com/(?:
wcc/r/(?P<id_1>\d{7})/(?P<key_1>[0-9A-F]{32})|
eventRegistration/(?:console/EventConsoleApollo|EventLobbyServlet\?target=lobby30)
\.jsp\?(?:[^/#?]*&)?eventid=(?P<id_2>\d{7})[^/#?]*&key=(?P<key_2>[0-9A-F]{32})
)'''
_TESTS = [{
'url': 'https://event.on24.com/eventRegistration/console/EventConsoleApollo.jsp?uimode=nextgeneration&eventid=2197467&sessionid=1&key=5DF57BE53237F36A43B478DD36277A84&contenttype=A&eventuserid=305999&playerwidth=1000&playerheight=650&caller=previewLobby&text_language_id=en&format=fhaudio&newConsole=false',
'info_dict': {
'id': '2197467',
'ext': 'wav',
'title': 'Pearson Test of English General/Pearson English International Certificate Teacher Training Guide',
'upload_date': '20200219',
'timestamp': 1582149600.0,
'view_count': int,
}
}, {
'url': 'https://event.on24.com/wcc/r/2639291/82829018E813065A122363877975752E?mode=login&email=johnsmith@gmail.com',
'only_matching': True,
}, {
'url': 'https://event.on24.com/eventRegistration/console/EventConsoleApollo.jsp?&eventid=2639291&sessionid=1&username=&partnerref=&format=fhvideo1&mobile=&flashsupportedmobiledevice=&helpcenter=&key=82829018E813065A122363877975752E&newConsole=true&nxChe=true&newTabCon=true&text_language_id=en&playerwidth=748&playerheight=526&eventuserid=338788762&contenttype=A&mediametricsessionid=384764716&mediametricid=3558192&usercd=369267058&mode=launch',
'only_matching': True,
}]
def _real_extract(self, url):
mobj = self._match_valid_url(url)
event_id = mobj.group('id_1') or mobj.group('id_2')
event_key = mobj.group('key_1') or mobj.group('key_2')
event_data = self._download_json(
'https://event.on24.com/apic/utilApp/EventConsoleCachedServlet',
event_id, query={
'eventId': event_id,
'displayProfile': 'player',
'key': event_key,
'contentType': 'A'
})
event_id = str(try_get(event_data, lambda x: x['presentationLogInfo']['eventid'])) or event_id
language = event_data.get('localelanguagecode')
formats = []
for media in event_data.get('mediaUrlInfo', []):
media_url = urljoin('https://event.on24.com/media/news/corporatevideo/events/', str(media.get('url')))
if not media_url:
continue
media_type = media.get('code')
if media_type == 'fhvideo1':
formats.append({
'format_id': 'video',
'url': media_url,
'language': language,
'ext': 'mp4',
'vcodec': 'avc1.640020',
'acodec': 'mp4a.40.2',
})
elif media_type == 'audio':
formats.append({
'format_id': 'audio',
'url': media_url,
'language': language,
'ext': 'wav',
'vcodec': 'none',
'acodec': 'wav'
})
self._sort_formats(formats)
return {
'id': event_id,
'title': strip_or_none(event_data.get('description')),
'timestamp': int_or_none(try_get(event_data, lambda x: x['session']['startdate']), 1000),
'webpage_url': f'https://event.on24.com/wcc/r/{event_id}/{event_key}',
'view_count': event_data.get('registrantcount'),
'formats': formats,
}
Loading…
Cancel
Save