]>
Commit | Line | Data |
---|---|---|
22f5f5c6 AJ |
1 | # coding: utf-8 |
2 | from __future__ import unicode_literals | |
3 | ||
4 | import re | |
5 | from .common import InfoExtractor | |
6 | from ..utils import parse_duration, merge_dicts | |
7 | ||
8 | ||
9 | class MallTVIE(InfoExtractor): | |
10 | _VALID_URL = r'https?://(?:www\.)?mall\.tv/(?:.+/)?(?P<id>.+)(?:\?.*$|$)' | |
11 | _TESTS = [ | |
12 | { | |
13 | 'url': 'https://www.mall.tv/18-miliard-pro-neziskovky-opravdu-jsou-sportovci-nebo-clovek-v-tisni-pijavice', | |
14 | 'md5': '9ced0de056534410837077e23bfba796', | |
15 | 'info_dict': { | |
16 | 'id': 't0zzt0', | |
17 | 'ext': 'mp4', | |
18 | 'title': '18 miliard pro neziskovky. Opravdu jsou sportovci nebo Člověk v tísni pijavice?', | |
19 | 'description': 'Pokud někdo hospodaří s penězmi daňových poplatníků, pak logicky chceme vědět, jak s nimi nakládá. Objem dotací pro neziskovky roste, ale opravdu jsou tyto organizace „pijavice", jak o nich hovoří And', | |
20 | 'upload_date': '20181007', | |
21 | 'timestamp': 1538870400 | |
22 | } | |
23 | }, | |
24 | { | |
25 | 'url': 'https://www.mall.tv/kdo-to-plati/18-miliard-pro-neziskovky-opravdu-jsou-sportovci-nebo-clovek-v-tisni-pijavice', | |
26 | 'md5': '9ced0de056534410837077e23bfba796', | |
27 | 'only_matching': 1, | |
28 | 'info_dict': { | |
29 | 'id': 't0zzt0', | |
30 | 'ext': 'mp4', | |
31 | 'title': '18 miliard pro neziskovky. Opravdu jsou sportovci nebo Člověk v tísni pijavice?', | |
32 | 'description': 'Pokud někdo hospodaří s penězmi daňových poplatníků, pak logicky chceme vědět, jak s nimi nakládá. Objem dotací pro neziskovky roste, ale opravdu jsou tyto organizace „pijavice", jak o nich hovoří And', | |
33 | 'upload_date': '20181007', | |
34 | 'timestamp': 1538870400 | |
35 | } | |
36 | } | |
37 | ] | |
38 | ||
39 | def _real_extract(self, url): | |
40 | display_id = self._match_id(url) | |
41 | webpage = self._download_webpage(url, display_id) | |
42 | src_id_regex = r'(?P<src><source src=([\"\'])?.+?/(?P<id>\w{6,}?)/index)(?P<after>\1?[^>]*?>)' | |
43 | video_id = self._search_regex(src_id_regex, webpage, 'ID', | |
44 | group='id') | |
45 | info = self._search_json_ld(webpage, video_id, default={}) | |
46 | html = re.sub(src_id_regex, r'\g<src>.m3u8\g<after>', webpage) | |
47 | media = self._parse_html5_media_entries(url, html, video_id) | |
48 | thumbnail = info.get('thumbnail', self._og_search_thumbnail(webpage)) | |
49 | duration = parse_duration(info.get('duration')) | |
50 | result = { | |
51 | 'id': video_id, | |
52 | 'title': info.get('title', self._og_search_title(webpage)), | |
53 | 'description': self._og_search_description(webpage) | |
54 | } | |
55 | result.update({'thumbnail': thumbnail}) | |
56 | result.update({'duration': duration}) | |
57 | ||
58 | return merge_dicts(media[0], info, result) |