[dcn] add origin to api request and fix the test and check with flake8
[youtube-dl] / youtube_dl / extractor / dcn.py
1 # coding: utf-8
2 from __future__ import unicode_literals
3
4 from .common import InfoExtractor
5 from ..compat import compat_urllib_request
6
7
8 class DcnIE(InfoExtractor):
9     _VALID_URL = r'https?://(?:www\.)?dcndigital\.ae/(?:#/)?(?:video/.+|show/\d+/.+?)/(?P<id>\d+)/?'
10     _TEST = {
11         'url': 'http://www.dcndigital.ae/#/show/199074/%D8%B1%D8%AD%D9%84%D8%A9-%D8%A7%D9%84%D8%B9%D9%85%D8%B1-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-1/17375/6887',
12         'info_dict':
13         {
14             'id': '17375',
15             'ext': 'm3u8',
16             'title': 'رحلة العمر : الحلقة 1',
17             'description': 'في هذه الحلقة من برنامج رحلة العمر يقدّم الدكتور عمر عبد الكافي تبسيطاً لمناسك الحج والعمرة ويجيب مباشرة على استفسارات حجاج بيت الله الحرام بخصوص مناسك الحج والعمرة\n1',
18             'thumbnail': 'http://admin.mangomolo.com/analytics/uploads/71/images/media/2/2cefc09d7bec80afa754682f40e49503.jpg',
19             'duration': '2041'
20         },
21         'params': {
22             # m3u8 download
23             'skip_download': True,
24         },
25     }
26
27     def _real_extract(self, url):
28         video_id = self._match_id(url)
29         request = compat_urllib_request.Request(
30             'http://admin.mangomolo.com/analytics/index.php/plus/video?id=' + video_id,
31             headers={'Origin': 'http://www.dcndigital.ae'}
32         )
33         json_data = self._download_json(request, video_id)
34         title = json_data['title_ar']
35         thumbnail = 'http://admin.mangomolo.com/analytics/' + json_data['img']
36         duration = json_data['duration']
37         description = json_data['description_ar']
38         webpage = self._download_webpage(
39             'http://admin.mangomolo.com/analytics/index.php/customers/embed/video?id=' + json_data['id'] + '&user_id=' + json_data['user_id'] + '&countries=Q0M=&w=100%&h=100%&filter=DENY&signature=' + json_data['signature'],
40             video_id
41         )
42         m3u8_url = self._html_search_regex(
43             r'file:\s*"([^"]+)',
44             webpage,
45             'm3u8_url'
46         )
47         formats = self._extract_m3u8_formats(m3u8_url, video_id)
48         return {
49             'id': video_id,
50             'title': title,
51             'thumbnail': thumbnail,
52             'duration': duration,
53             'description': description,
54             'formats': formats,
55         }