[myvi:embed] Add extractor (Closes #6167)
[youtube-dl] / youtube_dl / extractor / myvi.py
1 # coding: utf-8
2 from __future__ import unicode_literals
3
4 from .vimple import SprutoBaseIE
5
6
7 class MyviEmbedIE(SprutoBaseIE):
8     _VALID_URL = r'''(?x)
9                     https?://
10                         myvi\.ru/player/
11                             (?:
12                                 (?:
13                                     embed/html|
14                                     api/Video/Get
15                                 )/|
16                                 content/preloader\.swf\?.*\bid=
17                             )
18                             (?P<id>[\da-zA-Z_]+)
19                     '''
20     _TESTS = [{
21         'url': 'http://myvi.ru/player/embed/html/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0',
22         'md5': '571bbdfba9f9ed229dc6d34cc0f335bf',
23         'info_dict': {
24             'id': 'f16b2bbd-cde8-481c-a981-7cd48605df43',
25             'ext': 'mp4',
26             'title': 'хозяин жизни',
27             'thumbnail': 're:^https?://.*\.jpg$',
28             'duration': 25,
29         },
30     }, {
31         'url': 'http://myvi.ru/player/content/preloader.swf?id=oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wOYf1WFpPfc_bWTKGVf_Zafr0',
32         'only_matching': True,
33     }, {
34         'url': 'http://myvi.ru/player/api/Video/Get/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0',
35         'only_matching': True,
36     }]
37
38     def _real_extract(self, url):
39         video_id = self._match_id(url)
40
41         spruto = self._download_json(
42             'http://myvi.ru/player/api/Video/Get/%s?sig' % video_id, video_id)['sprutoData']
43
44         return self._extract_spruto(spruto, video_id)