X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fyouku.py;h=f767fa15f116fd8800a903c37cee81b9a84da285;hb=0803753fea578355db68ae9f2d915db04cde7557;hp=b6cc4bb4c150ce932471bbc6ec16a155608c2cc8;hpb=dbb7d7e26cfba1cb8c9f78164757f594a2a50fd1;p=youtube-dl diff --git a/youtube_dl/extractor/youku.py b/youtube_dl/extractor/youku.py index b6cc4bb4c..f767fa15f 100644 --- a/youtube_dl/extractor/youku.py +++ b/youtube_dl/extractor/youku.py @@ -2,6 +2,9 @@ from __future__ import unicode_literals import base64 +import random +import string +import time from .common import InfoExtractor from ..compat import ( @@ -141,6 +144,11 @@ class YoukuIE(InfoExtractor): return video_urls_dict + @staticmethod + def get_ysuid(): + return '%d%s' % (int(time.time()), ''.join([ + random.choice(string.ascii_letters) for i in range(3)])) + def get_hd(self, fm): hd_id_dict = { '3gp': '0', @@ -150,6 +158,7 @@ class YoukuIE(InfoExtractor): 'mp4': '1', 'mp4hd': '1', 'mp4hd2': '1', + 'mp4hd3': '1', 'hd2': '2', 'hd3': '3', } @@ -188,6 +197,8 @@ class YoukuIE(InfoExtractor): def _real_extract(self, url): video_id = self._match_id(url) + self._set_cookie('youku.com', '__ysuid', self.get_ysuid()) + def retrieve_data(req_url, note): headers = { 'Referer': req_url, @@ -220,7 +231,7 @@ class YoukuIE(InfoExtractor): 'Youku said: Sorry, this video is available in China only', expected=True) else: msg = 'Youku server reported error %i' % error.get('code') - if error is not None: + if error_note is not None: msg += ': ' + error_note raise ExtractorError(msg)