1
0
mirror of https://github.com/l1ving/youtube-dl synced 2025-03-13 18:50:27 +08:00

[melonvod] Add new extractor for vod.melon.com

This commit is contained in:
ping 2016-12-12 14:43:33 +08:00
parent 3c1e9dc4ec
commit 5ac0211b8e
2 changed files with 60 additions and 0 deletions

View File

@ -498,6 +498,7 @@ from .mangomolo import (
) )
from .matchtv import MatchTVIE from .matchtv import MatchTVIE
from .mdr import MDRIE from .mdr import MDRIE
from .melonvod import MelonVODIE
from .meta import METAIE from .meta import METAIE
from .metacafe import MetacafeIE from .metacafe import MetacafeIE
from .metacritic import MetacriticIE from .metacritic import MetacriticIE

View File

@ -0,0 +1,59 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
from ..utils import int_or_none
class MelonVODIE(InfoExtractor):
_VALID_URL = r'https?://vod\.melon\.com/video/detail2\.html?.*mvId=(?P<id>[0-9]+)'
_TEST = {
'url': 'http://vod.melon.com/video/detail2.htm?mvId=50158734',
'md5': '461fc04c6d23cbf49f4fef4d61851d32',
'info_dict': {
'id': '50158734',
'ext': 'mp4',
'title': 'Jessica \'Wonderland\' MV Making Film',
'thumbnail': 're:^https?://.*\.jpg$',
'artist': 'Jessica (제시카)',
'upload_date': '20161212',
'duration': 203,
},
'params': {
'skip_download': 'm3u8 download',
}
}
def _real_extract(self, url):
video_id = self._match_id(url)
play_info = self._download_json(
'http://vod.melon.com/video/playerInfo.json', video_id,
note='Downloading playerInfo', query={'mvId': video_id}
)
title = play_info['mvInfo']['MVTITLE']
artist = ', '.join([artist['ARTISTNAMEWEBLIST'] for artist in play_info.get('artistList', [])])
info = self._download_json(
'http://vod.melon.com/delivery/streamingInfo.json', video_id,
note='Downloading streamingInfo',
query={'contsId': video_id, 'contsType': 'VIDEO'}
)
stream_info = info.get('streamingInfo', {})
m3u8_url = stream_info.get('encUrl')
formats = self._extract_m3u8_formats(m3u8_url, video_id, 'mp4', m3u8_id='hls')
self._sort_formats(formats)
thumbnail = info.get('staticDomain', '') + stream_info.get('imgPath', '')
duration = int_or_none(stream_info.get('playTime'))
upload_date = stream_info.get('mvSvcOpenDt', '')[:8]
return {
'id': video_id,
'title': title,
'artist': artist,
'thumbnail': thumbnail,
'upload_date': upload_date,
'duration': duration,
'formats': formats
}