[bilibili] Catch API call failures

JSON are returned in a failed API call
This commit is contained in:
Yen Chi Hsuan 2015-05-27 04:23:21 +08:00
parent b535170b21
commit 6d00a2dcd1

View File

@ -3,6 +3,8 @@
import re
import itertools
import json
import xml.etree.ElementTree as ET
from .common import InfoExtractor
from ..utils import (
@ -67,11 +69,19 @@ def _real_extract(self, url):
entries = []
lq_doc = self._download_xml(
lq_page = self._download_webpage(
'http://interface.bilibili.com/v_cdn_play?appkey=1&cid=%s' % cid,
video_id,
note='Downloading LQ video info'
)
try:
err_info = json.loads(lq_page)
raise ExtractorError(
'BiliBili said: ' + err_info['error_text'], expected=True)
except ValueError:
pass
lq_doc = ET.fromstring(lq_page)
lq_durls = lq_doc.findall('./durl')
hq_doc = self._download_xml(