2 from __future__
import unicode_literals
6 from .common
import InfoExtractor
7 from ..compat
import compat_urllib_parse_unquote
13 class MangomoloBaseIE(InfoExtractor
):
14 def _get_real_id(self
, page_id
):
17 def _real_extract(self
, url
):
18 page_id
= self
._get
_real
_id
(self
._match
_id
(url
))
19 webpage
= self
._download
_webpage
(url
, page_id
)
20 hidden_inputs
= self
._hidden
_inputs
(webpage
)
21 m3u8_entry_protocol
= 'm3u8' if self
._IS
_LIVE
else 'm3u8_native'
23 format_url
= self
._html
_search
_regex
(
25 r
'file\s*:\s*"(https?://[^"]+?/playlist.m3u8)',
26 r
'<a[^>]+href="(rtsp://[^"]+)"'
27 ], webpage
, 'format url')
28 formats
= self
._extract
_wowza
_formats
(
29 format_url
, page_id
, m3u8_entry_protocol
, ['smil'])
30 self
._sort
_formats
(formats
)
34 'title': self
._live
_title
(page_id
) if self
._IS
_LIVE
else page_id
,
35 'uploader_id': hidden_inputs
.get('userid'),
36 'duration': int_or_none(hidden_inputs
.get('duration')),
37 'is_live': self
._IS
_LIVE
,
42 class MangomoloVideoIE(MangomoloBaseIE
):
43 IE_NAME
= 'mangomolo:video'
44 _VALID_URL
= r
'https?://admin\.mangomolo\.com/analytics/index\.php/customers/embed/video\?.*?\bid=(?P<id>\d+)'
48 class MangomoloLiveIE(MangomoloBaseIE
):
49 IE_NAME
= 'mangomolo:live'
50 _VALID_URL
= r
'https?://admin\.mangomolo\.com/analytics/index\.php/customers/embed/index\?.*?\bchannelid=(?P<id>(?:[A-Za-z0-9+/=]|%2B|%2F|%3D)+)'
53 def _get_real_id(self
, page_id
):
54 return base64
.b64decode(compat_urllib_parse_unquote(page_id
).encode()).decode()