|
@ -9,6 +9,7 @@ from ..utils import ExtractorError |
|
|
from ..compat import ( |
|
|
from ..compat import ( |
|
|
compat_urllib_parse, |
|
|
compat_urllib_parse, |
|
|
compat_ord, |
|
|
compat_ord, |
|
|
|
|
|
compat_urllib_request, |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -39,6 +40,14 @@ class YoukuIE(InfoExtractor): |
|
|
'title': '武媚娘传奇 85', |
|
|
'title': '武媚娘传奇 85', |
|
|
}, |
|
|
}, |
|
|
'playlist_count': 11, |
|
|
'playlist_count': 11, |
|
|
|
|
|
}, { |
|
|
|
|
|
'url': 'http://v.youku.com/v_show/id_XMTI1OTczNDM5Mg==.html', |
|
|
|
|
|
'info_dict': { |
|
|
|
|
|
'id': 'XMTI1OTczNDM5Mg', |
|
|
|
|
|
'title': '花千骨 04', |
|
|
|
|
|
}, |
|
|
|
|
|
'playlist_count': 13, |
|
|
|
|
|
'skip': 'Available in China only', |
|
|
}] |
|
|
}] |
|
|
|
|
|
|
|
|
def construct_video_urls(self, data1, data2): |
|
|
def construct_video_urls(self, data1, data2): |
|
@ -165,14 +174,23 @@ class YoukuIE(InfoExtractor): |
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
video_id = self._match_id(url) |
|
|
video_id = self._match_id(url) |
|
|
|
|
|
|
|
|
# request basic data |
|
|
|
|
|
data1_url = 'http://v.youku.com/player/getPlayList/VideoIDS/%s' % video_id |
|
|
|
|
|
data2_url = 'http://v.youku.com/player/getPlayList/VideoIDS/%s/Pf/4/ctype/12/ev/1' % video_id |
|
|
|
|
|
|
|
|
def retrieve_data(req_url, note): |
|
|
|
|
|
req = compat_urllib_request.Request(req_url) |
|
|
|
|
|
|
|
|
raw_data1 = self._download_json(data1_url, video_id) |
|
|
|
|
|
raw_data2 = self._download_json(data2_url, video_id) |
|
|
|
|
|
data1 = raw_data1['data'][0] |
|
|
|
|
|
data2 = raw_data2['data'][0] |
|
|
|
|
|
|
|
|
cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') |
|
|
|
|
|
if cn_verification_proxy: |
|
|
|
|
|
req.add_header('Ytdl-request-proxy', cn_verification_proxy) |
|
|
|
|
|
|
|
|
|
|
|
raw_data = self._download_json(req, video_id, note=note) |
|
|
|
|
|
return raw_data['data'][0] |
|
|
|
|
|
|
|
|
|
|
|
# request basic data |
|
|
|
|
|
data1 = retrieve_data( |
|
|
|
|
|
'http://v.youku.com/player/getPlayList/VideoIDS/%s' % video_id, |
|
|
|
|
|
'Downloading JSON metadata 1') |
|
|
|
|
|
data2 = retrieve_data( |
|
|
|
|
|
'http://v.youku.com/player/getPlayList/VideoIDS/%s/Pf/4/ctype/12/ev/1' % video_id, |
|
|
|
|
|
'Downloading JSON metadata 2') |
|
|
|
|
|
|
|
|
error_code = data1.get('error_code') |
|
|
error_code = data1.get('error_code') |
|
|
if error_code: |
|
|
if error_code: |
|
|