]>
Commit | Line | Data |
---|---|---|
693ec744 DA |
1 | from .common import InfoExtractor |
2 | from ..utils import ( | |
3 | int_or_none, | |
4 | strip_or_none, | |
5 | try_get, | |
6 | urljoin, | |
7 | ) | |
8 | ||
9 | ||
10 | class On24IE(InfoExtractor): | |
11 | IE_NAME = 'on24' | |
12 | IE_DESC = 'ON24' | |
13 | ||
14 | _VALID_URL = r'''(?x) | |
15 | https?://event\.on24\.com/(?: | |
16 | wcc/r/(?P<id_1>\d{7})/(?P<key_1>[0-9A-F]{32})| | |
17 | eventRegistration/(?:console/EventConsoleApollo|EventLobbyServlet\?target=lobby30) | |
18 | \.jsp\?(?:[^/#?]*&)?eventid=(?P<id_2>\d{7})[^/#?]*&key=(?P<key_2>[0-9A-F]{32}) | |
19 | )''' | |
20 | ||
21 | _TESTS = [{ | |
22 | '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', | |
23 | 'info_dict': { | |
24 | 'id': '2197467', | |
25 | 'ext': 'wav', | |
26 | 'title': 'Pearson Test of English General/Pearson English International Certificate Teacher Training Guide', | |
27 | 'upload_date': '20200219', | |
28 | 'timestamp': 1582149600.0, | |
29 | 'view_count': int, | |
30 | } | |
31 | }, { | |
32 | 'url': 'https://event.on24.com/wcc/r/2639291/82829018E813065A122363877975752E?mode=login&email=johnsmith@gmail.com', | |
33 | 'only_matching': True, | |
34 | }, { | |
35 | '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', | |
36 | 'only_matching': True, | |
37 | }] | |
38 | ||
39 | def _real_extract(self, url): | |
40 | mobj = self._match_valid_url(url) | |
41 | event_id = mobj.group('id_1') or mobj.group('id_2') | |
42 | event_key = mobj.group('key_1') or mobj.group('key_2') | |
43 | ||
44 | event_data = self._download_json( | |
45 | 'https://event.on24.com/apic/utilApp/EventConsoleCachedServlet', | |
46 | event_id, query={ | |
47 | 'eventId': event_id, | |
48 | 'displayProfile': 'player', | |
49 | 'key': event_key, | |
50 | 'contentType': 'A' | |
51 | }) | |
52 | event_id = str(try_get(event_data, lambda x: x['presentationLogInfo']['eventid'])) or event_id | |
53 | language = event_data.get('localelanguagecode') | |
54 | ||
55 | formats = [] | |
56 | for media in event_data.get('mediaUrlInfo', []): | |
57 | media_url = urljoin('https://event.on24.com/media/news/corporatevideo/events/', str(media.get('url'))) | |
58 | if not media_url: | |
59 | continue | |
60 | media_type = media.get('code') | |
61 | if media_type == 'fhvideo1': | |
62 | formats.append({ | |
63 | 'format_id': 'video', | |
64 | 'url': media_url, | |
65 | 'language': language, | |
66 | 'ext': 'mp4', | |
67 | 'vcodec': 'avc1.640020', | |
68 | 'acodec': 'mp4a.40.2', | |
69 | }) | |
70 | elif media_type == 'audio': | |
71 | formats.append({ | |
72 | 'format_id': 'audio', | |
73 | 'url': media_url, | |
74 | 'language': language, | |
75 | 'ext': 'wav', | |
76 | 'vcodec': 'none', | |
77 | 'acodec': 'wav' | |
78 | }) | |
693ec744 DA |
79 | |
80 | return { | |
81 | 'id': event_id, | |
82 | 'title': strip_or_none(event_data.get('description')), | |
83 | 'timestamp': int_or_none(try_get(event_data, lambda x: x['session']['startdate']), 1000), | |
84 | 'webpage_url': f'https://event.on24.com/wcc/r/{event_id}/{event_key}', | |
85 | 'view_count': event_data.get('registrantcount'), | |
86 | 'formats': formats, | |
87 | } |