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