|
@ -1,13 +1,11 @@ |
|
|
from __future__ import unicode_literals |
|
|
from __future__ import unicode_literals |
|
|
|
|
|
|
|
|
import re |
|
|
import re |
|
|
import json |
|
|
|
|
|
import itertools |
|
|
import itertools |
|
|
|
|
|
|
|
|
from .common import InfoExtractor |
|
|
from .common import InfoExtractor |
|
|
from ..compat import ( |
|
|
|
|
|
compat_urllib_request, |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
from ..compat import compat_urllib_request |
|
|
|
|
|
from ..utils import ExtractorError |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BambuserIE(InfoExtractor): |
|
|
class BambuserIE(InfoExtractor): |
|
@ -39,17 +37,24 @@ class BambuserIE(InfoExtractor): |
|
|
|
|
|
|
|
|
info = self._download_json( |
|
|
info = self._download_json( |
|
|
'http://player-c.api.bambuser.com/getVideo.json?api_key=%s&vid=%s' |
|
|
'http://player-c.api.bambuser.com/getVideo.json?api_key=%s&vid=%s' |
|
|
% (self._API_KEY, video_id), video_id)['result'] |
|
|
|
|
|
|
|
|
% (self._API_KEY, video_id), video_id) |
|
|
|
|
|
|
|
|
|
|
|
error = info.get('error') |
|
|
|
|
|
if error: |
|
|
|
|
|
raise ExtractorError( |
|
|
|
|
|
'%s returned error: %s' % (self.IE_NAME, error), expected=True) |
|
|
|
|
|
|
|
|
|
|
|
result = info['result'] |
|
|
|
|
|
|
|
|
return { |
|
|
return { |
|
|
'id': video_id, |
|
|
'id': video_id, |
|
|
'title': info['title'], |
|
|
|
|
|
'url': info['url'], |
|
|
|
|
|
'thumbnail': info.get('preview'), |
|
|
|
|
|
'duration': int(info['length']), |
|
|
|
|
|
'view_count': int(info['views_total']), |
|
|
|
|
|
'uploader': info['username'], |
|
|
|
|
|
'uploader_id': info['owner']['uid'], |
|
|
|
|
|
|
|
|
'title': result['title'], |
|
|
|
|
|
'url': result['url'], |
|
|
|
|
|
'thumbnail': result.get('preview'), |
|
|
|
|
|
'duration': int(result['length']), |
|
|
|
|
|
'view_count': int(result['views_total']), |
|
|
|
|
|
'uploader': result['username'], |
|
|
|
|
|
'uploader_id': result['owner']['uid'], |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|