diff options
| author | ping <lipng.ong@gmail.com> | 2015-07-06 15:26:49 +0800 | 
|---|---|---|
| committer | ping <lipng.ong@gmail.com> | 2015-07-06 15:26:49 +0800 | 
| commit | 37c1e4025c6df834e93a64c1c13eebac23e90942 (patch) | |
| tree | 6f3db50321ab2a37760600cd3f171ef7322bcb3f | |
| parent | 59a83d3e5b9c09d0c6e8fb430ea99d71ef6e2eba (diff) | |
[yinyuetai] New extractor for yinyuetai.com
| -rw-r--r-- | youtube_dl/extractor/__init__.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/yinyuetai.py | 47 | 
2 files changed, 48 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index aba62db53..8665855eb 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -733,6 +733,7 @@ from .yandexmusic import (      YandexMusicPlaylistIE,  )  from .yesjapan import YesJapanIE +from .yinyuetai import YinYueTaiIE  from .ynet import YnetIE  from .youjizz import YouJizzIE  from .youku import YoukuIE diff --git a/youtube_dl/extractor/yinyuetai.py b/youtube_dl/extractor/yinyuetai.py new file mode 100644 index 000000000..661c34602 --- /dev/null +++ b/youtube_dl/extractor/yinyuetai.py @@ -0,0 +1,47 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ExtractorError + + +class YinYueTaiIE(InfoExtractor): +    IE_NAME = 'yinyuetai:video' +    _VALID_URL = r'https?://v\.yinyuetai\.com/video(/h5)?/(?P<id>[0-9]+)' +    _TEST = { +        'url': 'http://v.yinyuetai.com/video/2322376', +        'md5': '6e3abe28d38e3a54b591f9f040595ce0', +        'info_dict': { +            'id': '2322376', +            'ext': 'mp4', +            'title': '少女时代_PARTY_Music Video Teaser', +            'creator': '少女时代', +        }, +    } + +    def _real_extract(self, url): +        video_id = self._match_id(url) + +        info = self._download_json( +            'http://ext.yinyuetai.com/main/get-h-mv-info?json=true&videoId=%s' % video_id, video_id, +            'Downloading mv info')['videoInfo']['coreVideoInfo'] + +        if info['error']: +            raise ExtractorError(info['errorMsg'], expected=True) + +        formats = [ +            {'url': format_info['videoUrl'], 'format_id': format_info['qualityLevel'], +             'format': format_info['qualityLevelName'], 'filesize': format_info['fileSize'], +             'ext': 'mp4', 'preference': format_info['bitrate']} +            for format_info in info['videoUrlModels'] +        ] +        self._sort_formats(formats) + +        return { +            'id': video_id, +            'title': info['videoName'], +            'thumbnail': info['bigHeadImage'], +            'creator': info['artistNames'], +            'duration': info['duration'], +            'formats': formats, +        } | 
