]>
Commit | Line | Data |
---|---|---|
8d9453b9 JMF |
1 | from __future__ import unicode_literals |
2 | ||
3 | from .mtv import MTVServicesInfoExtractor | |
4 | ||
5 | ||
6843ac5b RA |
6 | class BellatorIE(MTVServicesInfoExtractor): |
7 | _VALID_URL = r'https?://(?:www\.)?bellator\.com/[^/]+/[\da-z]{6}(?:[/?#&]|$)' | |
e8882e70 | 8 | _TESTS = [{ |
6843ac5b | 9 | 'url': 'http://www.bellator.com/fight/atwr7k/bellator-158-michael-page-vs-evangelista-cyborg', |
8d9453b9 | 10 | 'info_dict': { |
b827ee92 AG |
11 | 'title': 'Michael Page vs. Evangelista Cyborg', |
12 | 'description': 'md5:0d917fc00ffd72dd92814963fc6cbb05', | |
8d9453b9 | 13 | }, |
b827ee92 | 14 | 'playlist_count': 3, |
6303fc82 | 15 | }, { |
6843ac5b RA |
16 | 'url': 'http://www.bellator.com/video-clips/bw6k7n/bellator-158-foundations-michael-venom-page', |
17 | 'only_matching': True, | |
18 | }] | |
19 | ||
57227618 | 20 | _FEED_URL = 'http://www.bellator.com/feeds/mrss/' |
6843ac5b RA |
21 | _GEO_COUNTRIES = ['US'] |
22 | ||
b827ee92 AG |
23 | def _extract_mgid(self, webpage): |
24 | return self._extract_triforce_mgid(webpage) | |
25 | ||
6843ac5b RA |
26 | |
27 | class ParamountNetworkIE(MTVServicesInfoExtractor): | |
28 | _VALID_URL = r'https?://(?:www\.)?paramountnetwork\.com/[^/]+/[\da-z]{6}(?:[/?#&]|$)' | |
29 | _TESTS = [{ | |
30 | 'url': 'http://www.paramountnetwork.com/episodes/j830qm/lip-sync-battle-joel-mchale-vs-jim-rash-season-2-ep-13', | |
6303fc82 ML |
31 | 'info_dict': { |
32 | 'id': '37ace3a8-1df6-48be-85b8-38df8229e241', | |
33 | 'ext': 'mp4', | |
34 | 'title': 'Lip Sync Battle|April 28, 2016|2|209|Joel McHale Vs. Jim Rash|Act 1', | |
35 | 'description': 'md5:a739ca8f978a7802f67f8016d27ce114', | |
36 | }, | |
6843ac5b RA |
37 | 'params': { |
38 | # m3u8 download | |
39 | 'skip_download': True, | |
40 | }, | |
e8882e70 | 41 | }] |
8d9453b9 | 42 | |
6843ac5b | 43 | _FEED_URL = 'http://www.paramountnetwork.com/feeds/mrss/' |
c9bd503e | 44 | _GEO_COUNTRIES = ['US'] |
245cbb33 RA |
45 | |
46 | def _extract_mgid(self, webpage): | |
5dcd630d | 47 | root_data = self._parse_json(self._search_regex( |
245cbb33 | 48 | r'window\.__DATA__\s*=\s*({.+})', |
5dcd630d RA |
49 | webpage, 'data'), None) |
50 | ||
51 | def find_sub_data(data, data_type): | |
52 | return next(c for c in data['children'] if c.get('type') == data_type) | |
53 | ||
54 | c = find_sub_data(find_sub_data(root_data, 'MainContainer'), 'VideoPlayer') | |
245cbb33 | 55 | return c['props']['media']['video']['config']['uri'] |