+ def _real_extract(self, url):
+ video_id = self._match_id(url)
+
+ webpage = self._download_webpage(url, video_id)
+
+ data = self._parse_json(
+ self._search_regex(
+ r'(?s)window\.App\s*=\s*({.+?})\s*;\s*</script',
+ webpage, 'data', default='{}'),
+ video_id, transform_source=lambda x: re.sub(
+ r'(?s)function\s+[a-zA-Z_][\da-zA-Z_]*\s*\([^)]*\)\s*{[^}]*}\s*',
+ 'null', x), fatal=False)
+
+ video_id = None
+
+ if data:
+ video_id = try_get(
+ data, lambda x: x['context']['dispatcher']['stores'][
+ 'ContentPageProgramStore']['currentVideo']['id'],
+ compat_str)
+
+ # Fallback #1 (extract from og:image URL schema)
+ if not video_id:
+ thumbnail = self._og_search_thumbnail(webpage, default=None)
+ if thumbnail:
+ video_id = self._search_regex(
+ # Patterns seen:
+ # http://cdn.playapi.mtgx.tv/imagecache/600x315/cloud/content-images/inbox/765166/a2e95e5f1d735bab9f309fa345cc3f25.jpg
+ # http://cdn.playapi.mtgx.tv/imagecache/600x315/cloud/content-images/seasons/15204/758770/4a5ba509ca8bc043e1ebd1a76131cdf2.jpg
+ r'https?://[^/]+/imagecache/(?:[^/]+/)+(\d{6,})/',
+ thumbnail, 'video id', default=None)
+
+ # Fallback #2. Extract from raw JSON string.
+ # May extract wrong video id if relatedClips is present.
+ if not video_id:
+ video_id = self._search_regex(
+ r'currentVideo["\']\s*:\s*.+?["\']id["\']\s*:\s*["\'](\d{6,})',
+ webpage, 'video id')
+
+ return self.url_result(
+ smuggle_url(
+ 'mtg:%s' % video_id,
+ {
+ 'geo_countries': [
+ compat_urlparse.urlparse(url).netloc.rsplit('.', 1)[-1]],
+ # rtmp host mtgfs.fplive.net for viafree is unresolvable
+ 'skip_rtmp': True,
+ }),
+ ie=TVPlayIE.ie_key(), video_id=video_id)
+
+
+class TVPlayHomeIE(InfoExtractor):
+ _VALID_URL = r'https?://tvplay\.(?:tv3\.lt|skaties\.lv|tv3\.ee)/[^/]+/[^/?#&]+-(?P<id>\d+)'
+ _TESTS = [{
+ 'url': 'https://tvplay.tv3.lt/aferistai-n-7/aferistai-10047125/',
+ 'info_dict': {
+ 'id': '366367',
+ 'ext': 'mp4',
+ 'title': 'Aferistai',
+ 'description': 'Aferistai. Kalėdinė pasaka.',
+ 'series': 'Aferistai [N-7]',
+ 'season': '1 sezonas',
+ 'season_number': 1,
+ 'duration': 464,
+ 'timestamp': 1394209658,
+ 'upload_date': '20140307',
+ 'age_limit': 18,
+ },
+ 'params': {
+ 'skip_download': True,
+ },
+ 'add_ie': [TVPlayIE.ie_key()],
+ }, {
+ 'url': 'https://tvplay.skaties.lv/vinas-melo-labak/vinas-melo-labak-10280317/',
+ 'only_matching': True,
+ }, {
+ 'url': 'https://tvplay.tv3.ee/cool-d-ga-mehhikosse/cool-d-ga-mehhikosse-10044354/',
+ 'only_matching': True,
+ }]
+