diff options
author | Philipp Hagemeister <phihag@phihag.de> | 2014-02-02 11:54:23 +0100 |
---|---|---|
committer | Philipp Hagemeister <phihag@phihag.de> | 2014-02-02 11:54:23 +0100 |
commit | f0ce2bc1c5880d9a92dda2dc543d21c4a8566a2f (patch) | |
tree | 17460e7f73522efbce7125e71b794a7471d58b42 /youtube_dl/extractor/vube.py | |
parent | c3bc00b90e794c9b9f819d4e8c4a36a44e51f6c5 (diff) | |
parent | f46359121fc9a635c0fb058c37d51ce71e3d78a2 (diff) |
Merge remote-tracking branch 'dstftw/vube'
Diffstat (limited to 'youtube_dl/extractor/vube.py')
-rw-r--r-- | youtube_dl/extractor/vube.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/youtube_dl/extractor/vube.py b/youtube_dl/extractor/vube.py new file mode 100644 index 000000000..2aaa4e722 --- /dev/null +++ b/youtube_dl/extractor/vube.py @@ -0,0 +1,79 @@ +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.get('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 |