projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[xfileshare] Add support for powerwatch (Closes #8628)
[youtube-dl]
/
youtube_dl
/
extractor
/
kaltura.py
diff --git
a/youtube_dl/extractor/kaltura.py
b/youtube_dl/extractor/kaltura.py
index 39e03865971618985fe25456cde1c8e09f753d00..ccbc39c665412980e6b6104e83ffaf2e8574517f 100644
(file)
--- a/
youtube_dl/extractor/kaltura.py
+++ b/
youtube_dl/extractor/kaltura.py
@@
-10,6
+10,7
@@
from ..compat import (
compat_urlparse,
)
from ..utils import (
compat_urlparse,
)
from ..utils import (
+ clean_html,
ExtractorError,
int_or_none,
unsmuggle_url,
ExtractorError,
int_or_none,
unsmuggle_url,
@@
-44,7
+45,7
@@
class KalturaIE(InfoExtractor):
'info_dict': {
'id': '1_1jc2y3e4',
'ext': 'mp4',
'info_dict': {
'id': '1_1jc2y3e4',
'ext': 'mp4',
- 'title': '
Track 4
',
+ 'title': '
Straight from the Heart
',
'upload_date': '20131219',
'uploader_id': 'mlundberg@wolfgangsvault.com',
'description': 'The Allman Brothers Band, 12/16/1981',
'upload_date': '20131219',
'uploader_id': 'mlundberg@wolfgangsvault.com',
'description': 'The Allman Brothers Band, 12/16/1981',
@@
-114,12
+115,9
@@
class KalturaIE(InfoExtractor):
'version': '-1',
},
{
'version': '-1',
},
{
- 'action': 'getContextData',
- 'contextDataParams:objectType': 'KalturaEntryContextDataParams',
- 'contextDataParams:referrer': 'http://www.kaltura.com/',
- 'contextDataParams:streamerType': 'http',
+ 'action': 'getbyentryid',
'entryId': video_id,
'entryId': video_id,
- 'service': '
baseentry
',
+ 'service': '
flavorAsset
',
},
]
return self._kaltura_api_call(
},
]
return self._kaltura_api_call(
@@
-132,7
+130,7
@@
class KalturaIE(InfoExtractor):
partner_id = mobj.group('partner_id_s') or mobj.group('partner_id') or mobj.group('partner_id_html5')
entry_id = mobj.group('id_s') or mobj.group('id') or mobj.group('id_html5')
partner_id = mobj.group('partner_id_s') or mobj.group('partner_id') or mobj.group('partner_id_html5')
entry_id = mobj.group('id_s') or mobj.group('id') or mobj.group('id_html5')
- info,
source_data
= self._get_video_info(entry_id, partner_id)
+ info,
flavor_assets
= self._get_video_info(entry_id, partner_id)
source_url = smuggled_data.get('source_url')
if source_url:
source_url = smuggled_data.get('source_url')
if source_url:
@@
-143,22
+141,31
@@
class KalturaIE(InfoExtractor):
referrer = None
formats = []
referrer = None
formats = []
- for f in source_data['flavorAssets']:
+ for f in flavor_assets:
+ # Continue if asset is not ready
+ if f['status'] != 2:
+ continue
video_url = '%s/flavorId/%s' % (info['dataUrl'], f['id'])
if referrer:
video_url += '?referrer=%s' % referrer
formats.append({
'format_id': '%(fileExt)s-%(bitrate)s' % f,
video_url = '%s/flavorId/%s' % (info['dataUrl'], f['id'])
if referrer:
video_url += '?referrer=%s' % referrer
formats.append({
'format_id': '%(fileExt)s-%(bitrate)s' % f,
- 'ext': f
['fileExt']
,
- 'tbr':
f['bitrate']
,
- 'fps':
f.get('frameRate'
),
+ 'ext': f
.get('fileExt')
,
+ 'tbr':
int_or_none(f['bitrate'])
,
+ 'fps':
int_or_none(f.get('frameRate')
),
'filesize_approx': int_or_none(f.get('size'), invscale=1024),
'container': f.get('containerFormat'),
'vcodec': f.get('videoCodecId'),
'filesize_approx': int_or_none(f.get('size'), invscale=1024),
'container': f.get('containerFormat'),
'vcodec': f.get('videoCodecId'),
- 'height':
f.get('height'
),
- 'width':
f.get('width'
),
+ 'height':
int_or_none(f.get('height')
),
+ 'width':
int_or_none(f.get('width')
),
'url': video_url,
})
'url': video_url,
})
+ m3u8_url = info['dataUrl'].replace('format/url', 'format/applehttp')
+ if referrer:
+ m3u8_url += '?referrer=%s' % referrer
+ formats.extend(self._extract_m3u8_formats(
+ m3u8_url, entry_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False))
+
self._check_formats(formats, entry_id)
self._sort_formats(formats)
self._check_formats(formats, entry_id)
self._sort_formats(formats)
@@
-166,7
+173,7
@@
class KalturaIE(InfoExtractor):
'id': entry_id,
'title': info['name'],
'formats': formats,
'id': entry_id,
'title': info['name'],
'formats': formats,
- 'description':
info.get('description'
),
+ 'description':
clean_html(info.get('description')
),
'thumbnail': info.get('thumbnailUrl'),
'duration': info.get('duration'),
'timestamp': info.get('createdAt'),
'thumbnail': info.get('thumbnailUrl'),
'duration': info.get('duration'),
'timestamp': info.get('createdAt'),