[mwave] New extractor for mwave.interest.me
[youtube-dl] / youtube_dl / extractor / mwave.py
1 from __future__ import unicode_literals
2
3 from .common import InfoExtractor
4
5
6 class MwaveIE(InfoExtractor):
7     IE_NAME = 'mwave'
8     _VALID_URL = r'https?://mwave\.interest\.me/mnettv/videodetail\.m\?searchVideoDetailVO\.clip_id=(?P<id>[0-9]+)'
9     _TESTS = [{
10         'url': 'http://mwave.interest.me/mnettv/videodetail.m?searchVideoDetailVO.clip_id=168859',
11         'info_dict': {
12             'id': '168859',
13             'ext': 'flv',
14             'title': '[M COUNTDOWN] SISTAR - SHAKE IT',
15             'creator': 'M COUNTDOWN',
16         }
17     }, {
18         'url': 'http://mwave.interest.me/mnettv/videodetail.m?searchVideoDetailVO.clip_id=168860',
19         'info_dict': {
20             'id': '168860',
21             'ext': 'flv',
22             'title': '[Full Ver.] M GIGS Ep. 59 - IDIOTAPE Live Part 1',
23             'creator': 'M-GIGS',
24         }
25     }]
26
27     def _real_extract(self, url):
28         video_id = self._match_id(url)
29
30         stream_info = self._download_json(
31             'http://mwave.interest.me/onair/vod_info.m?vodtype=CL&sectorid=&endinfo=Y&id=%s' % video_id,
32             'Download stream info')
33
34         formats = []
35         for info in stream_info['cdn']:
36             f4m_stream = self._download_json(info['url'], video_id, 'Download f4m stream')
37             formats.extend(
38                 self._extract_f4m_formats(f4m_stream['fileurl'] + '&g=PCROWKHLYUDY&hdcore=3.0.3', video_id))
39         self._sort_formats(formats)
40
41         return {
42             'id': video_id,
43             'title': stream_info['title'],
44             'creator': stream_info.get('program_title'),
45             'formats': formats,
46         }