diff options
| author | dst <dstftw@gmail.com> | 2014-02-02 08:33:24 +0700 | 
|---|---|---|
| committer | dst <dstftw@gmail.com> | 2014-02-02 08:33:24 +0700 | 
| commit | c85e4cf7b42f2867ac5f73890d61bba09392641e (patch) | |
| tree | 9caf69dcd4b685a2fb172bc4c31bc6c1bda25646 | |
| parent | c66dcda2872b60f8096dbad2be0738ac259330ca (diff) | |
[vube] Add support for vube.com (Closes #2285)
| -rw-r--r-- | youtube_dl/extractor/__init__.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/vube.py | 80 | 
2 files changed, 81 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 7b71b9c70..83defea7f 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -229,6 +229,7 @@ from .vimeo import (  from .vine import VineIE  from .viki import VikiIE  from .vk import VKIE +from .vube import VubeIE  from .wat import WatIE  from .weibo import WeiboIE  from .wimp import WimpIE diff --git a/youtube_dl/extractor/vube.py b/youtube_dl/extractor/vube.py new file mode 100644 index 000000000..799f9186c --- /dev/null +++ b/youtube_dl/extractor/vube.py @@ -0,0 +1,80 @@ +# encoding: utf-8 +from __future__ import unicode_literals + +import re +import datetime + +from .common import InfoExtractor + + +class VubeIE(InfoExtractor): +    IE_NAME = 'vube' +    IE_DESC = 'Vube.com' +    _VALID_URL = r'http://vube\.com/[^/]+/(?P<id>[\da-zA-Z]{10})' + +    _TEST = { +        'url': 'http://vube.com/Chiara+Grispo+Video+Channel/YL2qNPkqon', +        'file': 'YL2qNPkqon.mp4', +        'md5': 'f81dcf6d0448e3291f54380181695821', +        'info_dict': { +            'title': 'Chiara Grispo - Price Tag by Jessie J', +            'description': 'md5:8ea652a1f36818352428cb5134933313', +            'thumbnail': 'http://frame.thestaticvube.com/snap/228x128/102e7e63057-5ebc-4f5c-4065-6ce4ebde131f.jpg', +            'uploader': 'Chiara.Grispo', +            'uploader_id': '1u3hX0znhP', +            'upload_date': '20140103', +            'duration': 170.56 +        } +    } + +    def _real_extract(self, url): +        mobj = re.match(self._VALID_URL, url) +        video_id = mobj.group('id') + +        video = self._download_json('http://vube.com/api/v2/video/%s' % video_id, +            video_id, 'Downloading video JSON') + +        public_id = video['public_id'] + +        formats = [{'url': 'http://video.thestaticvube.com/video/%s/%s.mp4' % (fmt['media_resolution_id'], public_id), +                   'height': int(fmt['height']), +                   'abr': int(fmt['audio_bitrate']), +                   'vbr': int(fmt['video_bitrate']), +                   'format_id': fmt['media_resolution_id'] +                   } for fmt in video['mtm'] if fmt['transcoding_status'] == 'processed'] + +        self._sort_formats(formats) + +        title = video['title'] +        description = video['description'] +        thumbnail = video['thumbnail_src'] +        if thumbnail.startswith('//'): +            thumbnail = 'http:' + thumbnail +        uploader = video['user_alias'] +        uploader_id = video['user_url_id'] +        upload_date = datetime.datetime.fromtimestamp(int(video['upload_time'])).strftime('%Y%m%d') +        duration = video['duration'] +        view_count = video['raw_view_count'] +        like_count = video['total_likes'] +        dislike_count= video['total_hates'] + +        comment = self._download_json('http://vube.com/api/video/%s/comment' % video_id, +            video_id, 'Downloading video comment JSON') + +        comment_count = comment['total'] + +        return { +            'id': video_id, +            'formats': formats, +            'title': title, +            'description': description, +            'thumbnail': thumbnail, +            'uploader': uploader, +            'uploader_id': uploader_id, +            'upload_date': upload_date, +            'duration': duration, +            'view_count': view_count, +            'like_count': like_count, +            'dislike_count': dislike_count, +            'comment_count': comment_count, +        }
\ No newline at end of file | 
