]>
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': { |
9d8f3a12 RA |
11 | 'title': 'Michael Page vs. Evangelista Cyborg', |
12 | 'description': 'md5:0d917fc00ffd72dd92814963fc6cbb05', | |
8d9453b9 | 13 | }, |
9d8f3a12 | 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 | ||
cf7cb942 U |
23 | def _extract_mgid(self, webpage, url): |
24 | mgid = None | |
25 | ||
26 | if not mgid: | |
27 | mgid = self._extract_triforce_mgid(webpage) | |
28 | ||
29 | if not mgid: | |
30 | mgid = self._extract_new_triforce_mgid(webpage, url) | |
31 | ||
32 | return mgid | |
33 | ||
34 | # TODO Remove - Reason: Outdated Site | |
9d8f3a12 | 35 | |
6843ac5b RA |
36 | |
37 | class ParamountNetworkIE(MTVServicesInfoExtractor): | |
38 | _VALID_URL = r'https?://(?:www\.)?paramountnetwork\.com/[^/]+/[\da-z]{6}(?:[/?#&]|$)' | |
39 | _TESTS = [{ | |
40 | 'url': 'http://www.paramountnetwork.com/episodes/j830qm/lip-sync-battle-joel-mchale-vs-jim-rash-season-2-ep-13', | |
6303fc82 ML |
41 | 'info_dict': { |
42 | 'id': '37ace3a8-1df6-48be-85b8-38df8229e241', | |
43 | 'ext': 'mp4', | |
44 | 'title': 'Lip Sync Battle|April 28, 2016|2|209|Joel McHale Vs. Jim Rash|Act 1', | |
45 | 'description': 'md5:a739ca8f978a7802f67f8016d27ce114', | |
46 | }, | |
6843ac5b RA |
47 | 'params': { |
48 | # m3u8 download | |
49 | 'skip_download': True, | |
50 | }, | |
e8882e70 | 51 | }] |
8d9453b9 | 52 | |
30a074c2 | 53 | _FEED_URL = 'http://feeds.mtvnservices.com/od/feed/intl-mrss-player-feed' |
c9bd503e | 54 | _GEO_COUNTRIES = ['US'] |
245cbb33 | 55 | |
30a074c2 | 56 | def _get_feed_query(self, uri): |
57 | return { | |
58 | 'arcEp': 'paramountnetwork.com', | |
59 | 'mgid': uri, | |
60 | } | |
61 | ||
cf7cb942 | 62 | def _extract_mgid(self, webpage, url): |
5dcd630d | 63 | root_data = self._parse_json(self._search_regex( |
245cbb33 | 64 | r'window\.__DATA__\s*=\s*({.+})', |
5dcd630d RA |
65 | webpage, 'data'), None) |
66 | ||
67 | def find_sub_data(data, data_type): | |
68 | return next(c for c in data['children'] if c.get('type') == data_type) | |
69 | ||
70 | c = find_sub_data(find_sub_data(root_data, 'MainContainer'), 'VideoPlayer') | |
245cbb33 | 71 | return c['props']['media']['video']['config']['uri'] |