summary refs log tree commit diff
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2015-05-27 04:23:21 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2015-05-27 04:23:21 +0800
commit6d00a2dcd110f12a0aa110f5479df76613792fbd (patch)
tree02dff8ff9cbaecbfd48285dc7b09d9df05a314ce
parentb535170b218131afd1165776e611691479627ce8 (diff)
downloadyoutube-dl-6d00a2dcd110f12a0aa110f5479df76613792fbd.tar.gz
youtube-dl-6d00a2dcd110f12a0aa110f5479df76613792fbd.tar.xz
youtube-dl-6d00a2dcd110f12a0aa110f5479df76613792fbd.zip
[bilibili] Catch API call failures
JSON are returned in a failed API call
-rw-r--r--youtube_dl/extractor/bilibili.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/youtube_dl/extractor/bilibili.py b/youtube_dl/extractor/bilibili.py
index a8bea2c10..2103ed73a 100644
--- a/youtube_dl/extractor/bilibili.py
+++ b/youtube_dl/extractor/bilibili.py
@@ -3,6 +3,8 @@ from __future__ import unicode_literals
 
 import re
 import itertools
+import json
+import xml.etree.ElementTree as ET
 
 from .common import InfoExtractor
 from ..utils import (
@@ -67,11 +69,19 @@ class BiliBiliIE(InfoExtractor):
 
         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(