[crackle] Revert to template-based thumbnail extraction

To reduce to number of HTTP requests
This commit is contained in:
Yen Chi Hsuan 2016-08-26 19:58:17 +08:00
parent 6b18a24e6e
commit 906b87cf5f
No known key found for this signature in database
GPG Key ID: 3FDDD575826C5C30

View File

@ -1,8 +1,6 @@
# coding: utf-8 # coding: utf-8
from __future__ import unicode_literals, division from __future__ import unicode_literals, division
import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import int_or_none from ..utils import int_or_none
@ -34,6 +32,7 @@ class CrackleIE(InfoExtractor):
} }
# extracted from http://legacyweb-us.crackle.com/flash/ReferrerRedirect.ashx # extracted from http://legacyweb-us.crackle.com/flash/ReferrerRedirect.ashx
_THUMBNAIL_TEMPLATE = 'http://images-us-am.crackle.com/%stnl_1920x1080.jpg?ts=20140107233116?c=635333335057637614'
_MEDIA_FILE_SLOTS = { _MEDIA_FILE_SLOTS = {
'c544.flv': { 'c544.flv': {
'width': 544, 'width': 544,
@ -69,8 +68,10 @@ def _real_extract(self, url):
formats = self._extract_m3u8_formats( formats = self._extract_m3u8_formats(
'http://content.uplynk.com/ext/%s/%s.m3u8' % (config_doc.attrib['strUplynkOwnerId'], video_id), 'http://content.uplynk.com/ext/%s/%s.m3u8' % (config_doc.attrib['strUplynkOwnerId'], video_id),
video_id, 'mp4', m3u8_id='hls', fatal=None) video_id, 'mp4', m3u8_id='hls', fatal=None)
thumbnail = None
path = item.attrib.get('p') path = item.attrib.get('p')
if path: if path:
thumbnail = self._THUMBNAIL_TEMPLATE % path
http_base_url = 'http://ahttp.crackle.com/' + path http_base_url = 'http://ahttp.crackle.com/' + path
for mfs_path, mfs_info in self._MEDIA_FILE_SLOTS.items(): for mfs_path, mfs_info in self._MEDIA_FILE_SLOTS.items():
formats.append({ formats.append({
@ -91,22 +92,6 @@ def _real_extract(self, url):
}] }]
self._sort_formats(formats, ('width', 'height', 'tbr', 'format_id')) self._sort_formats(formats, ('width', 'height', 'tbr', 'format_id'))
media_details = self._download_json(
'https://web-api-us.crackle.com/Service.svc/details/media/%s/TW?format=json' % video_id,
video_id, fatal=False)
thumbnails = []
if media_details:
for key, value in media_details.items():
mobj = re.match('^Thumbnail_(\d+)x(\d+)$', key)
if mobj:
width, height = list(map(int, mobj.groups()))
thumbnails.append({
'id': '%dp' % height,
'url': value,
'width': width,
'height': height,
})
return { return {
'id': video_id, 'id': video_id,
'title': title, 'title': title,
@ -115,7 +100,7 @@ def _real_extract(self, url):
'series': item.attrib.get('sn'), 'series': item.attrib.get('sn'),
'season_number': int_or_none(item.attrib.get('se')), 'season_number': int_or_none(item.attrib.get('se')),
'episode_number': int_or_none(item.attrib.get('ep')), 'episode_number': int_or_none(item.attrib.get('ep')),
'thumbnails': thumbnails, 'thumbnail': thumbnail,
'subtitles': subtitles, 'subtitles': subtitles,
'formats': formats, 'formats': formats,
} }