[dcn] Add new extractor
[youtube-dl] / youtube_dl / extractor / dcn.py
1 from .common import InfoExtractor
2
3 class DcnIE(InfoExtractor):
4     _VALID_URL = r'https?://(?:www\.)?dcndigital\.ae/(?:#/)?(?:video/.+|show/\d+/.+?)/(?P<id>\d+)/?'
5     _TEST = {
6         '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',
7         'info_dict':
8         {
9             'id': '17375',
10             'ext': 'm3u8',
11             'title': 'رحلة العمر : الحلقة 1',
12             'description': '"في هذه الحلقة من برنامج رحلة العمر يقدّم الدكتور عمر عبد الكافي تبسيطاً لمناسك الحج والعمرة ويجيب مباشرة على استفسارات حجاج بيت الله الحرام بخصوص مناسك الحج والعمرة1"',
13             'thumbnail': 'http://admin.mangomolo.com/analytics/uploads/71/images/media/2/2cefc09d7bec80afa754682f40e49503.jpg',
14             'duration': '2041'
15         }
16     }
17
18     def _real_extract(self, url):
19         video_id = self._match_id(url)
20         json_data = self._download_json(
21             'http://admin.mangomolo.com/analytics/index.php/plus/video?id='+video_id,
22             video_id
23         )
24         title = json_data['title_ar'];
25         thumbnail = 'http://admin.mangomolo.com/analytics/'+json_data['img'];
26         duration = json_data['duration'];
27         description = json_data['description_ar'];
28         webpage = self._download_webpage(
29             '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'],
30             video_id
31         )
32         m3u8_url = self._html_search_regex(
33             r'file: "(?P<m3u8_url>.*?)"',
34             webpage,
35             'm3u8_url',
36             group='m3u8_url'
37         )
38         formats = self._extract_m3u8_formats(m3u8_url, video_id)
39         return {
40             'id': video_id,
41             'title': title,
42             'thumbnail': thumbnail,
43             'duration': duration,
44             'description': description,
45             'formats': formats,
46         }