|
|
@ -4,6 +4,11 @@ from __future__ import unicode_literals |
|
|
|
import re |
|
|
|
|
|
|
|
from .theplatform import ThePlatformBaseIE |
|
|
|
from ..compat import ( |
|
|
|
compat_parse_qs, |
|
|
|
compat_str, |
|
|
|
compat_urllib_parse_urlparse, |
|
|
|
) |
|
|
|
from ..utils import ( |
|
|
|
ExtractorError, |
|
|
|
int_or_none, |
|
|
@ -76,12 +81,33 @@ class MediasetIE(ThePlatformBaseIE): |
|
|
|
}] |
|
|
|
|
|
|
|
@staticmethod |
|
|
|
def _extract_urls(webpage): |
|
|
|
return [ |
|
|
|
mobj.group('url') |
|
|
|
for mobj in re.finditer( |
|
|
|
r'<iframe\b[^>]+\bsrc=(["\'])(?P<url>https?://(?:www\.)?video\.mediaset\.it/player/playerIFrame(?:Twitter)?\.shtml\?.*?\bid=\d+.*?)\1', |
|
|
|
webpage)] |
|
|
|
def _extract_urls(ie, webpage): |
|
|
|
def _qs(url): |
|
|
|
return compat_parse_qs(compat_urllib_parse_urlparse(url).query) |
|
|
|
|
|
|
|
def _program_guid(qs): |
|
|
|
return qs.get('programGuid', [None])[0] |
|
|
|
|
|
|
|
entries = [] |
|
|
|
for mobj in re.finditer( |
|
|
|
r'<iframe\b[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//(?:www\.)?video\.mediaset\.it/player/playerIFrame(?:Twitter)?\.shtml.*?)\1', |
|
|
|
webpage): |
|
|
|
embed_url = mobj.group('url') |
|
|
|
embed_qs = _qs(embed_url) |
|
|
|
program_guid = _program_guid(embed_qs) |
|
|
|
if program_guid: |
|
|
|
entries.append(embed_url) |
|
|
|
continue |
|
|
|
video_id = embed_qs.get('id', [None])[0] |
|
|
|
if not video_id: |
|
|
|
continue |
|
|
|
urlh = ie._request_webpage( |
|
|
|
embed_url, video_id, note='Following embed URL redirect') |
|
|
|
embed_url = compat_str(urlh.geturl()) |
|
|
|
program_guid = _program_guid(_qs(embed_url)) |
|
|
|
if program_guid: |
|
|
|
entries.append(embed_url) |
|
|
|
return entries |
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
|
guid = self._match_id(url) |
|
|
|