[tudou] Improve error handling (closes #8988)

This commit is contained in:
Yen Chi Hsuan 2016-04-01 01:42:16 +08:00
parent 8369942773
commit 5b012dfce8

View File

@ -5,6 +5,7 @@ from __future__ import unicode_literals
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
ExtractorError,
int_or_none, int_or_none,
InAdvancePagedList, InAdvancePagedList,
float_or_none, float_or_none,
@ -46,6 +47,19 @@ class TudouIE(InfoExtractor):
_PLAYER_URL = 'http://js.tudouui.com/bin/lingtong/PortalPlayer_177.swf' _PLAYER_URL = 'http://js.tudouui.com/bin/lingtong/PortalPlayer_177.swf'
# Translated from tudou/tools/TVCHelper.as in PortalPlayer_193.swf
# 0001, 0002 and 4001 are not included as they indicate temporary issues
TVC_ERRORS = {
'0003': 'The video is deleted or does not exist',
'1001': 'This video is unavailable due to licensing issues',
'1002': 'This video is unavailable as it\'s under review',
'1003': 'This video is unavailable as it\'s under review',
'3001': 'Password required',
'5001': 'This video is available in Mainland China only due to licensing issues',
'7001': 'This video is unavailable',
'8001': 'This video is unavailable due to licensing issues',
}
def _url_for_id(self, video_id, quality=None): def _url_for_id(self, video_id, quality=None):
info_url = 'http://v2.tudou.com/f?id=' + compat_str(video_id) info_url = 'http://v2.tudou.com/f?id=' + compat_str(video_id)
if quality: if quality:
@ -63,6 +77,15 @@ class TudouIE(InfoExtractor):
if youku_vcode: if youku_vcode:
return self.url_result('youku:' + youku_vcode, ie='Youku') return self.url_result('youku:' + youku_vcode, ie='Youku')
if not item_data.get('itemSegs'):
tvc_code = item_data.get('tvcCode')
if tvc_code:
err_msg = self.TVC_ERRORS.get(tvc_code)
if err_msg:
raise ExtractorError('Tudou said: %s' % err_msg, expected=True)
raise ExtractorError('Unexpected error %s returned from Tudou' % tvc_code)
raise ExtractorError('Unxpected error returned from Tudou')
title = unescapeHTML(item_data['kw']) title = unescapeHTML(item_data['kw'])
description = item_data.get('desc') description = item_data.get('desc')
thumbnail_url = item_data.get('pic') thumbnail_url = item_data.get('pic')