|
|
|
@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
|
|
|
|
from .common import InfoExtractor
|
|
|
|
|
from ..compat import compat_str
|
|
|
|
|
from ..utils import (
|
|
|
|
|
ExtractorError,
|
|
|
|
|
int_or_none,
|
|
|
|
|
InAdvancePagedList,
|
|
|
|
|
float_or_none,
|
|
|
|
@ -46,6 +47,19 @@ class TudouIE(InfoExtractor):
|
|
|
|
|
|
|
|
|
|
_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):
|
|
|
|
|
info_url = 'http://v2.tudou.com/f?id=' + compat_str(video_id)
|
|
|
|
|
if quality:
|
|
|
|
@ -63,6 +77,15 @@ class TudouIE(InfoExtractor):
|
|
|
|
|
if youku_vcode:
|
|
|
|
|
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'])
|
|
|
|
|
description = item_data.get('desc')
|
|
|
|
|
thumbnail_url = item_data.get('pic')
|
|
|
|
|