|
|
@ -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') |
|
|
|