]>
Commit | Line | Data |
---|---|---|
3dc582e5 | 1 | # coding: utf-8 |
2 | from __future__ import unicode_literals | |
3 | ||
3dc582e5 | 4 | from .common import InfoExtractor |
4f8c56eb | 5 | from ..compat import compat_urlparse |
3dc582e5 | 6 | |
7 | ||
8 | class FczenitIE(InfoExtractor): | |
4f8c56eb | 9 | _VALID_URL = r'https?://(?:www\.)?fc-zenit\.ru/video/(?P<id>[0-9]+)' |
3dc582e5 | 10 | _TEST = { |
4f8c56eb YCH |
11 | 'url': 'http://fc-zenit.ru/video/41044/', |
12 | 'md5': '0e3fab421b455e970fa1aa3891e57df0', | |
3dc582e5 | 13 | 'info_dict': { |
4f8c56eb | 14 | 'id': '41044', |
3dc582e5 | 15 | 'ext': 'mp4', |
4f8c56eb | 16 | 'title': 'Так пишется история: казанский разгром ЦСКА на «Зенит-ТВ»', |
3dc582e5 | 17 | }, |
18 | } | |
19 | ||
20 | def _real_extract(self, url): | |
21 | video_id = self._match_id(url) | |
22 | webpage = self._download_webpage(url, video_id) | |
23 | ||
4f8c56eb YCH |
24 | video_title = self._html_search_regex( |
25 | r'<[^>]+class=\"photoalbum__title\">([^<]+)', webpage, 'title') | |
26 | ||
27 | video_items = self._parse_json(self._search_regex( | |
28 | r'arrPath\s*=\s*JSON\.parse\(\'(.+)\'\)', webpage, 'video items'), | |
29 | video_id) | |
3dc582e5 | 30 | |
4f8c56eb YCH |
31 | def merge_dicts(*dicts): |
32 | ret = {} | |
33 | for a_dict in dicts: | |
34 | ret.update(a_dict) | |
35 | return ret | |
3dc582e5 | 36 | |
37 | formats = [{ | |
4f8c56eb YCH |
38 | 'url': compat_urlparse.urljoin(url, video_url), |
39 | 'tbr': int(tbr), | |
40 | } for tbr, video_url in merge_dicts(*video_items).items()] | |
3dc582e5 | 41 | |
42 | self._sort_formats(formats) | |
43 | ||
44 | return { | |
45 | 'id': video_id, | |
46 | 'title': video_title, | |
47 | 'formats': formats, | |
48 | } |