]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/mgoon.py
2 from __future__
import unicode_literals
5 from .common
import InfoExtractor
13 class MgoonIE(InfoExtractor
):
14 _VALID_URL
= r
'''(?x)https?://(?:www\.)?
15 (?:(:?m\.)?mgoon\.com/(?:ch/(?:.+)/v|play/view)|
16 video\.mgoon\.com)/(?P<id>[0-9]+)'''
17 _API_URL
= 'http://mpos.mgoon.com/player/video?id={0:}'
20 'url': 'http://m.mgoon.com/ch/hi6618/v/5582148',
21 'md5': 'dd46bb66ab35cf6d51cc812fd82da79d',
24 'uploader_id': 'hi6618',
26 'upload_date': '20131220',
28 'title': 'md5:543aa4c27a4931d371c3f433e8cebebc',
29 'thumbnail': r
're:^https?://.*\.jpg$',
33 'url': 'http://www.mgoon.com/play/view/5582148',
34 'only_matching': True,
37 'url': 'http://video.mgoon.com/5582148',
38 'only_matching': True,
42 def _real_extract(self
, url
):
43 mobj
= self
._match
_valid
_url
(url
)
44 video_id
= mobj
.group('id')
46 data
= self
._download
_json
(self
._API
_URL
.format(video_id
), video_id
)
48 if data
.get('errorInfo', {}).get('code') != 'NONE':
49 raise ExtractorError('%s encountered an error: %s' % (
50 self
.IE_NAME
, data
['errorInfo']['message']), expected
=True)
52 v_info
= data
['videoInfo']
53 title
= v_info
.get('v_title')
54 thumbnail
= v_info
.get('v_thumbnail')
55 duration
= v_info
.get('v_duration')
56 upload_date
= unified_strdate(v_info
.get('v_reg_date'))
57 uploader_id
= data
.get('userInfo', {}).get('u_alias')
62 if data
.get('accessInfo', {}).get('code') == 'VIDEO_STATUS_ADULT':
66 get_quality
= qualities(['360p', '480p', '720p', '1080p'])
67 for fmt
in data
['videoFiles']:
69 'format_id': fmt
['label'],
70 'quality': get_quality(fmt
['label']),
75 self
._sort
_formats
(formats
)
81 'thumbnail': thumbnail
,
83 'upload_date': upload_date
,
84 'uploader_id': uploader_id
,
85 'age_limit': age_limit
,