2 from __future__ import unicode_literals
\r
6 from .common import InfoExtractor
\r
7 from ..compat import compat_str
\r
8 from ..utils import (
\r
15 class JojIE(InfoExtractor):
\r
16 _VALID_URL = r'''(?x)
\r
19 https?://media\.joj\.sk/embed/
\r
21 (?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})
\r
24 'url': 'https://media.joj.sk/embed/a388ec4c-6019-4a4a-9312-b1bee194e932',
\r
26 'id': 'a388ec4c-6019-4a4a-9312-b1bee194e932',
\r
28 'title': 'NOVÉ BÝVANIE',
\r
29 'thumbnail': r're:^https?://.*\.jpg$',
\r
33 'url': 'joj:a388ec4c-6019-4a4a-9312-b1bee194e932',
\r
34 'only_matching': True,
\r
38 def _extract_urls(webpage):
\r
40 r'<iframe\b[^>]+\bsrc=["\'](?P<url>(?:https?:)?//media\.joj\.sk/embed/[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})',
\r
43 def _real_extract(self, url):
\r
44 video_id = self._match_id(url)
\r
46 webpage = self._download_webpage(
\r
47 'https://media.joj.sk/embed/%s' % video_id, video_id)
\r
49 title = self._search_regex(
\r
50 (r'videoTitle\s*:\s*(["\'])(?P<title>(?:(?!\1).)+)\1',
\r
51 r'<title>(?P<title>[^<]+)'), webpage, 'title',
\r
52 default=None, group='title') or self._og_search_title(webpage)
\r
54 bitrates = self._parse_json(
\r
56 r'(?s)bitrates\s*=\s*({.+?});', webpage, 'bitrates',
\r
58 video_id, transform_source=js_to_json, fatal=False)
\r
61 for format_url in try_get(bitrates, lambda x: x['mp4'], list) or []:
\r
62 if isinstance(format_url, compat_str):
\r
63 height = self._search_regex(
\r
64 r'(\d+)[pP]\.', format_url, 'height', default=None)
\r
67 'format_id': '%sp' % height if height else None,
\r
68 'height': int(height),
\r
71 playlist = self._download_xml(
\r
72 'https://media.joj.sk/services/Video.php?clip=%s' % video_id,
\r
74 for file_el in playlist.findall('./files/file'):
\r
75 path = file_el.get('path')
\r
78 format_id = file_el.get('id') or file_el.get('label')
\r
80 'url': 'http://n16.joj.sk/storage/%s' % path.replace(
\r
82 'format_id': format_id,
\r
83 'height': int_or_none(self._search_regex(
\r
84 r'(\d+)[pP]', format_id or path, 'height',
\r
87 self._sort_formats(formats)
\r
89 thumbnail = self._og_search_thumbnail(webpage)
\r
91 duration = int_or_none(self._search_regex(
\r
92 r'videoDuration\s*:\s*(\d+)', webpage, 'duration', fatal=False))
\r
97 'thumbnail': thumbnail,
\r
98 'duration': duration,
\r