]> jfr.im git - yt-dlp.git/blame - yt_dlp/extractor/adobeconnect.py
[ie/orf:on] Improve extraction (#9677)
[yt-dlp.git] / yt_dlp / extractor / adobeconnect.py
CommitLineData
f8987163
RA
1from .common import InfoExtractor
2from ..compat import (
3 compat_parse_qs,
4 compat_urlparse,
5)
6
7
8class AdobeConnectIE(InfoExtractor):
9 _VALID_URL = r'https?://\w+\.adobeconnect\.com/(?P<id>[\w-]+)'
10
11 def _real_extract(self, url):
12 video_id = self._match_id(url)
13 webpage = self._download_webpage(url, video_id)
04f3fd2c 14 title = self._html_extract_title(webpage)
f8987163
RA
15 qs = compat_parse_qs(self._search_regex(r"swfUrl\s*=\s*'([^']+)'", webpage, 'swf url').split('?')[1])
16 is_live = qs.get('isLive', ['false'])[0] == 'true'
17 formats = []
18 for con_string in qs['conStrings'][0].split(','):
19 formats.append({
20 'format_id': con_string.split('://')[0],
21 'app': compat_urlparse.quote('?' + con_string.split('?')[1] + 'flvplayerapp/' + qs['appInstance'][0]),
22 'ext': 'flv',
23 'play_path': 'mp4:' + qs['streamName'][0],
24 'rtmp_conn': 'S:' + qs['ticket'][0],
25 'rtmp_live': is_live,
26 'url': con_string,
27 })
28
29 return {
30 'id': video_id,
39ca3b5c 31 'title': title,
f8987163
RA
32 'formats': formats,
33 'is_live': is_live,
34 }