|
|
@ -48,6 +48,21 @@ class CrackleIE(InfoExtractor):
|
|
|
|
'only_matching': True,
|
|
|
|
'only_matching': True,
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_MEDIA_FILE_SLOTS = {
|
|
|
|
|
|
|
|
'360p.mp4': {
|
|
|
|
|
|
|
|
'width': 640,
|
|
|
|
|
|
|
|
'height': 360,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
'480p.mp4': {
|
|
|
|
|
|
|
|
'width': 768,
|
|
|
|
|
|
|
|
'height': 432,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
'480p_1mbps.mp4': {
|
|
|
|
|
|
|
|
'width': 852,
|
|
|
|
|
|
|
|
'height': 480,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
def _real_extract(self, url):
|
|
|
|
video_id = self._match_id(url)
|
|
|
|
video_id = self._match_id(url)
|
|
|
|
|
|
|
|
|
|
|
@ -95,6 +110,20 @@ class CrackleIE(InfoExtractor):
|
|
|
|
elif ext == 'mpd':
|
|
|
|
elif ext == 'mpd':
|
|
|
|
formats.extend(self._extract_mpd_formats(
|
|
|
|
formats.extend(self._extract_mpd_formats(
|
|
|
|
format_url, video_id, mpd_id='dash', fatal=False))
|
|
|
|
format_url, video_id, mpd_id='dash', fatal=False))
|
|
|
|
|
|
|
|
elif format_url.endswith('.ism/Manifest'):
|
|
|
|
|
|
|
|
formats.extend(self._extract_ism_formats(
|
|
|
|
|
|
|
|
format_url, video_id, ism_id='mss', fatal=False))
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
mfs_path = e.get('Type')
|
|
|
|
|
|
|
|
mfs_info = self._MEDIA_FILE_SLOTS.get(mfs_path)
|
|
|
|
|
|
|
|
if not mfs_info:
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
formats.append({
|
|
|
|
|
|
|
|
'url': format_url,
|
|
|
|
|
|
|
|
'format_id': 'http-' + mfs_path.split('.')[0],
|
|
|
|
|
|
|
|
'width': mfs_info['width'],
|
|
|
|
|
|
|
|
'height': mfs_info['height'],
|
|
|
|
|
|
|
|
})
|
|
|
|
self._sort_formats(formats)
|
|
|
|
self._sort_formats(formats)
|
|
|
|
|
|
|
|
|
|
|
|
description = media.get('Description')
|
|
|
|
description = media.get('Description')
|
|
|
|