[bliptv] Simplify (From #2000)

This commit is contained in:
Philipp Hagemeister 2013-12-23 04:31:38 +01:00
parent 196938835a
commit 466617f539
1 changed files with 39 additions and 40 deletions

View File

@ -70,13 +70,14 @@ def _real_extract(self, url):
info = None info = None
urlh = self._request_webpage(request, None, False, urlh = self._request_webpage(request, None, False,
u'unable to download video info webpage') u'unable to download video info webpage')
if urlh.headers.get('Content-Type', '').startswith('video/'): # Direct download if urlh.headers.get('Content-Type', '').startswith('video/'): # Direct download
basename = url.split('/')[-1] basename = url.split('/')[-1]
title,ext = os.path.splitext(basename) title,ext = os.path.splitext(basename)
title = title.decode('UTF-8') title = title.decode('UTF-8')
ext = ext.replace('.', '') ext = ext.replace('.', '')
self.report_direct_download(title) self.report_direct_download(title)
info = { return {
'id': title, 'id': title,
'url': url, 'url': url,
'uploader': None, 'uploader': None,
@ -85,49 +86,47 @@ def _real_extract(self, url):
'ext': ext, 'ext': ext,
'urlhandle': urlh 'urlhandle': urlh
} }
if info is None: # Regular URL
try:
json_code_bytes = urlh.read()
json_code = json_code_bytes.decode('utf-8')
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
raise ExtractorError(u'Unable to read video info webpage: %s' % compat_str(err))
try: try:
json_data = json.loads(json_code) json_code_bytes = urlh.read()
if 'Post' in json_data: json_code = json_code_bytes.decode('utf-8')
data = json_data['Post'] except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
else: raise ExtractorError(u'Unable to read video info webpage: %s' % compat_str(err))
data = json_data
upload_date = datetime.datetime.strptime(data['datestamp'], '%m-%d-%y %H:%M%p').strftime('%Y%m%d') try:
if 'additionalMedia' in data: json_data = json.loads(json_code)
formats = sorted(data['additionalMedia'], key=lambda f: int(f['media_height'])) if 'Post' in json_data:
best_format = formats[-1] data = json_data['Post']
video_url = best_format['url'] else:
else: data = json_data
video_url = data['media']['url']
umobj = re.match(self._URL_EXT, video_url)
if umobj is None:
raise ValueError('Can not determine filename extension')
ext = umobj.group(1)
info = { upload_date = datetime.datetime.strptime(data['datestamp'], '%m-%d-%y %H:%M%p').strftime('%Y%m%d')
'id': compat_str(data['item_id']), if 'additionalMedia' in data:
'url': video_url, formats = sorted(data['additionalMedia'], key=lambda f: int(f['media_height']))
'uploader': data['display_name'], best_format = formats[-1]
'upload_date': upload_date, video_url = best_format['url']
'title': data['title'], else:
'ext': ext, video_url = data['media']['url']
'format': data['media']['mimeType'], umobj = re.match(self._URL_EXT, video_url)
'thumbnail': data['thumbnailUrl'], if umobj is None:
'description': data['description'], raise ValueError('Can not determine filename extension')
'player_url': data['embedUrl'], ext = umobj.group(1)
'user_agent': 'iTunes/10.6.1',
}
except (ValueError,KeyError) as err:
raise ExtractorError(u'Unable to parse video information: %s' % repr(err))
return [info] return {
'id': compat_str(data['item_id']),
'url': video_url,
'uploader': data['display_name'],
'upload_date': upload_date,
'title': data['title'],
'ext': ext,
'format': data['media']['mimeType'],
'thumbnail': data['thumbnailUrl'],
'description': data['description'],
'player_url': data['embedUrl'],
'user_agent': 'iTunes/10.6.1',
}
except (ValueError, KeyError) as err:
raise ExtractorError(u'Unable to parse video information: %s' % repr(err))
class BlipTVUserIE(InfoExtractor): class BlipTVUserIE(InfoExtractor):