[bilibili] Fix extraction (Closes #4660)

This commit is contained in:
Sergey M․ 2015-01-08 01:33:22 +06:00
parent c5d666d374
commit 58a84b8cb6
1 changed files with 29 additions and 38 deletions

View File

@ -4,9 +4,7 @@ from __future__ import unicode_literals
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_parse_qs
from ..utils import ( from ..utils import (
ExtractorError,
int_or_none, int_or_none,
unified_strdate, unified_strdate,
) )
@ -54,19 +52,14 @@ class BiliBiliIE(InfoExtractor):
thumbnail = self._html_search_meta( thumbnail = self._html_search_meta(
'thumbnailUrl', video_code, 'thumbnail', fatal=False) 'thumbnailUrl', video_code, 'thumbnail', fatal=False)
player_params = compat_parse_qs(self._html_search_regex( cid = self._search_regex(r'cid=(\d+)', webpage, 'cid')
r'<iframe .*?class="player" src="https://secure\.bilibili\.(?:tv|com)/secure,([^"]+)"',
webpage, 'player params'))
if 'cid' in player_params:
cid = player_params['cid'][0]
lq_doc = self._download_xml( lq_doc = self._download_xml(
'http://interface.bilibili.cn/v_cdn_play?cid=%s' % cid, 'http://interface.bilibili.com/v_cdn_play?appkey=1&cid=%s' % cid,
video_id, video_id,
note='Downloading LQ video info' note='Downloading LQ video info'
) )
lq_durl = lq_doc.find('.//durl') lq_durl = lq_doc.find('./durl')
formats = [{ formats = [{
'format_id': 'lq', 'format_id': 'lq',
'quality': 1, 'quality': 1,
@ -76,13 +69,13 @@ class BiliBiliIE(InfoExtractor):
}] }]
hq_doc = self._download_xml( hq_doc = self._download_xml(
'http://interface.bilibili.cn/playurl?cid=%s' % cid, 'http://interface.bilibili.com/playurl?appkey=1&cid=%s' % cid,
video_id, video_id,
note='Downloading HQ video info', note='Downloading HQ video info',
fatal=False, fatal=False,
) )
if hq_doc is not False: if hq_doc is not False:
hq_durl = hq_doc.find('.//durl') hq_durl = hq_doc.find('./durl')
formats.append({ formats.append({
'format_id': 'hq', 'format_id': 'hq',
'quality': 2, 'quality': 2,
@ -91,8 +84,6 @@ class BiliBiliIE(InfoExtractor):
'filesize': int_or_none( 'filesize': int_or_none(
hq_durl.find('./size'), get_attr='text'), hq_durl.find('./size'), get_attr='text'),
}) })
else:
raise ExtractorError('Unsupported player parameters: %r' % (player_params,))
self._sort_formats(formats) self._sort_formats(formats)
return { return {