|
@@ -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)
|