1 from .common
import InfoExtractor
9 class APAIE(InfoExtractor
):
10 _VALID_URL
= r
'(?P<base_url>https?://[^/]+\.apa\.at)/embed/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})'
11 _EMBED_REGEX
= [r
'<iframe[^>]+\bsrc=(["\'])(?P
<url
>(?
:https?
:)?
//[^
/]+\
.apa\
.at
/embed
/[\da
-f
]{8}
-[\da
-f
]{4}
-[\da
-f
]{4}
-[\da
-f
]{4}
-[\da
-f
]{12}
.*?
)\
1']
13 'url
': 'http
://uvp
.apa
.at
/embed
/293f6d17
-692a
-44e3
-9fd5
-7b178f3a1029
',
14 'md5
': '2b12292faeb0a7d930c778c7a5b4759b
',
16 'id': '293f6d17
-692a
-44e3
-9fd5
-7b178f3a1029
',
18 'title
': '293f6d17
-692a
-44e3
-9fd5
-7b178f3a1029
',
19 'thumbnail
': r're
:^https?
://.*\
.jpg$
',
22 'url
': 'https
://uvp
-apapublisher
.sf
.apa
.at
/embed
/2f94e9e6
-d945
-4db2
-9548-f9a41ebf7b78
',
23 'only_matching
': True,
25 'url
': 'http
://uvp
-rma
.sf
.apa
.at
/embed
/70404cca
-2f47
-4855-bbb8
-20b1fae58f76
',
26 'only_matching
': True,
28 'url
': 'http
://uvp
-kleinezeitung
.sf
.apa
.at
/embed
/f1c44979
-dba2
-4ebf
-b021
-e4cf2cac3c81
',
29 'only_matching
': True,
32 def _real_extract(self, url):
33 mobj = self._match_valid_url(url)
34 video_id, base_url = mobj.group('id', 'base_url
')
36 webpage = self._download_webpage(
37 '%s/player
/%s' % (base_url, video_id), video_id)
39 jwplatform_id = self._search_regex(
40 r'media
[iI
]d\s
*:\s
*["\'](?P<id>[a-zA-Z0-9]{8})', webpage,
41 'jwplatform id', default=None)
44 return self.url_result(
45 'jwplatform:' + jwplatform_id, ie='JWPlatform',
48 def extract(field, name=None):
49 return self._search_regex(
50 r'\b%s["\']\s
*:\s
*(["\'])(?P<value>(?:(?!\1).)+)\1' % field,
51 webpage, name or field, default=None, group='value')
53 title = extract('title') or video_id
54 description = extract('description')
55 thumbnail = extract('poster', 'thumbnail')
58 for format_id in ('hls', 'progressive'):
59 source_url = url_or_none(extract(format_id))
62 ext = determine_ext(source_url)
64 formats.extend(self._extract_m3u8_formats(
65 source_url, video_id, 'mp4', entry_protocol='m3u8_native',
66 m3u8_id='hls', fatal=False))
68 height = int_or_none(self._search_regex(
69 r'(\d+)\.mp4', source_url, 'height', default=None))
72 'format_id': format_id,
79 'description': description,
80 'thumbnail': thumbnail,