diff options
Diffstat (limited to 'youtube_dl/extractor/tudou.py')
| -rw-r--r-- | youtube_dl/extractor/tudou.py | 26 | 
1 files changed, 26 insertions, 0 deletions
diff --git a/youtube_dl/extractor/tudou.py b/youtube_dl/extractor/tudou.py index 9892e8a62..bb8b8e234 100644 --- a/youtube_dl/extractor/tudou.py +++ b/youtube_dl/extractor/tudou.py @@ -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,11 +47,27 @@ 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:              info_url += '&hd' + quality          xml_data = self._download_xml(info_url, video_id, 'Opening the info XML page') +        error = xml_data.attrib.get('error') +        if error is not None: +            raise ExtractorError('Tudou said: %s' % error, expected=True)          final_url = xml_data.text          return final_url @@ -63,6 +80,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')  | 
