|
|
|
@ -4,8 +4,15 @@ import re
|
|
|
|
|
import itertools
|
|
|
|
|
|
|
|
|
|
from .common import InfoExtractor
|
|
|
|
|
from ..compat import compat_urllib_request
|
|
|
|
|
from ..utils import ExtractorError
|
|
|
|
|
from ..compat import (
|
|
|
|
|
compat_urllib_request,
|
|
|
|
|
compat_str,
|
|
|
|
|
)
|
|
|
|
|
from ..utils import (
|
|
|
|
|
ExtractorError,
|
|
|
|
|
int_or_none,
|
|
|
|
|
float_or_none,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BambuserIE(InfoExtractor):
|
|
|
|
@ -24,6 +31,9 @@ class BambuserIE(InfoExtractor):
|
|
|
|
|
'duration': 3741,
|
|
|
|
|
'uploader': 'pixelversity',
|
|
|
|
|
'uploader_id': '344706',
|
|
|
|
|
'timestamp': 1382976692,
|
|
|
|
|
'upload_date': '20131028',
|
|
|
|
|
'view_count': int,
|
|
|
|
|
},
|
|
|
|
|
'params': {
|
|
|
|
|
# It doesn't respect the 'Range' header, it would download the whole video
|
|
|
|
@ -51,10 +61,13 @@ class BambuserIE(InfoExtractor):
|
|
|
|
|
'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'],
|
|
|
|
|
'duration': int_or_none(result.get('length')),
|
|
|
|
|
'uploader': result.get('username'),
|
|
|
|
|
'uploader_id': compat_str(result.get('owner', {}).get('uid')),
|
|
|
|
|
'timestamp': int_or_none(result.get('created')),
|
|
|
|
|
'fps': float_or_none(result.get('framerate')),
|
|
|
|
|
'view_count': int_or_none(result.get('views_total')),
|
|
|
|
|
'comment_count': int_or_none(result.get('comment_count')),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|