]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/mgoon.py
1 from .common
import InfoExtractor
9 class MgoonIE(InfoExtractor
):
10 _VALID_URL
= r
'''(?x)https?://(?:www\.)?
11 (?:(:?m\.)?mgoon\.com/(?:ch/(?:.+)/v|play/view)|
12 video\.mgoon\.com)/(?P<id>[0-9]+)'''
13 _API_URL
= 'http://mpos.mgoon.com/player/video?id={0:}'
16 'url': 'http://m.mgoon.com/ch/hi6618/v/5582148',
17 'md5': 'dd46bb66ab35cf6d51cc812fd82da79d',
20 'uploader_id': 'hi6618',
22 'upload_date': '20131220',
24 'title': 'md5:543aa4c27a4931d371c3f433e8cebebc',
25 'thumbnail': r
're:^https?://.*\.jpg$',
29 'url': 'http://www.mgoon.com/play/view/5582148',
30 'only_matching': True,
33 'url': 'http://video.mgoon.com/5582148',
34 'only_matching': True,
38 def _real_extract(self
, url
):
39 mobj
= self
._match
_valid
_url
(url
)
40 video_id
= mobj
.group('id')
42 data
= self
._download
_json
(self
._API
_URL
.format(video_id
), video_id
)
44 if data
.get('errorInfo', {}).get('code') != 'NONE':
45 raise ExtractorError('%s encountered an error: %s' % (
46 self
.IE_NAME
, data
['errorInfo']['message']), expected
=True)
48 v_info
= data
['videoInfo']
49 title
= v_info
.get('v_title')
50 thumbnail
= v_info
.get('v_thumbnail')
51 duration
= v_info
.get('v_duration')
52 upload_date
= unified_strdate(v_info
.get('v_reg_date'))
53 uploader_id
= data
.get('userInfo', {}).get('u_alias')
58 if data
.get('accessInfo', {}).get('code') == 'VIDEO_STATUS_ADULT':
62 get_quality
= qualities(['360p', '480p', '720p', '1080p'])
63 for fmt
in data
['videoFiles']:
65 'format_id': fmt
['label'],
66 'quality': get_quality(fmt
['label']),
76 'thumbnail': thumbnail
,
78 'upload_date': upload_date
,
79 'uploader_id': uploader_id
,
80 'age_limit': age_limit
,