|
@ -2,7 +2,6 @@ |
|
|
from __future__ import unicode_literals |
|
|
from __future__ import unicode_literals |
|
|
|
|
|
|
|
|
import base64 |
|
|
import base64 |
|
|
import json |
|
|
|
|
|
|
|
|
|
|
|
from .common import InfoExtractor |
|
|
from .common import InfoExtractor |
|
|
from ..compat import ( |
|
|
from ..compat import ( |
|
@ -88,10 +87,6 @@ class YoukuIE(InfoExtractor): |
|
|
# get oip |
|
|
# get oip |
|
|
oip = data['security']['ip'] |
|
|
oip = data['security']['ip'] |
|
|
|
|
|
|
|
|
# get fileid |
|
|
|
|
|
string_ls = list( |
|
|
|
|
|
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\:._-1234567890') |
|
|
|
|
|
|
|
|
|
|
|
fileid_dict = {} |
|
|
fileid_dict = {} |
|
|
for stream in data['stream']: |
|
|
for stream in data['stream']: |
|
|
format = stream.get('stream_type') |
|
|
format = stream.get('stream_type') |
|
@ -122,13 +117,11 @@ class YoukuIE(InfoExtractor): |
|
|
format = stream.get('stream_type') |
|
|
format = stream.get('stream_type') |
|
|
video_urls = [] |
|
|
video_urls = [] |
|
|
for dt in stream['segs']: |
|
|
for dt in stream['segs']: |
|
|
#n = str(int(dt['size'])) |
|
|
|
|
|
n = str(stream['segs'].index(dt)) |
|
|
n = str(stream['segs'].index(dt)) |
|
|
param = { |
|
|
param = { |
|
|
'K': dt['key'], |
|
|
'K': dt['key'], |
|
|
'hd': self.get_hd(format), |
|
|
'hd': self.get_hd(format), |
|
|
'myp': 0, |
|
|
'myp': 0, |
|
|
#'ts': dt['total_milliseconds_video'], |
|
|
|
|
|
'ypp': 0, |
|
|
'ypp': 0, |
|
|
'ctype': 12, |
|
|
'ctype': 12, |
|
|
'ev': 1, |
|
|
'ev': 1, |
|
@ -139,7 +132,7 @@ class YoukuIE(InfoExtractor): |
|
|
video_url = \ |
|
|
video_url = \ |
|
|
'http://k.youku.com/player/getFlvPath/' + \ |
|
|
'http://k.youku.com/player/getFlvPath/' + \ |
|
|
'sid/' + sid + \ |
|
|
'sid/' + sid + \ |
|
|
'_00'+ \ |
|
|
|
|
|
|
|
|
'_00' + \ |
|
|
'/st/' + self.parse_ext_l(format) + \ |
|
|
'/st/' + self.parse_ext_l(format) + \ |
|
|
'/fileid/' + get_fileid(format, n) + '?' + \ |
|
|
'/fileid/' + get_fileid(format, n) + '?' + \ |
|
|
compat_urllib_parse.urlencode(param) |
|
|
compat_urllib_parse.urlencode(param) |
|
@ -196,24 +189,20 @@ class YoukuIE(InfoExtractor): |
|
|
video_id = self._match_id(url) |
|
|
video_id = self._match_id(url) |
|
|
|
|
|
|
|
|
def retrieve_data(req_url, note): |
|
|
def retrieve_data(req_url, note): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
headers = { |
|
|
headers = { |
|
|
'Referer': req_url, |
|
|
|
|
|
} |
|
|
|
|
|
self._set_cookie('youku.com','xreferrer','http://www.youku.com') |
|
|
|
|
|
req = sanitized_Request(req_url,headers=headers) |
|
|
|
|
|
|
|
|
'Referer': req_url, |
|
|
|
|
|
} |
|
|
|
|
|
self._set_cookie('youku.com', 'xreferrer', 'http://www.youku.com') |
|
|
|
|
|
req = sanitized_Request(req_url, headers=headers) |
|
|
|
|
|
|
|
|
cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') |
|
|
cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') |
|
|
if cn_verification_proxy: |
|
|
if cn_verification_proxy: |
|
|
req.add_header('Ytdl-request-proxy', cn_verification_proxy) |
|
|
req.add_header('Ytdl-request-proxy', cn_verification_proxy) |
|
|
|
|
|
|
|
|
raw_data = self._download_json(req, video_id, note=note) |
|
|
raw_data = self._download_json(req, video_id, note=note) |
|
|
js = json.dumps(raw_data) |
|
|
|
|
|
|
|
|
|
|
|
return raw_data['data'] |
|
|
return raw_data['data'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
video_password = self._downloader.params.get('videopassword', None) |
|
|
video_password = self._downloader.params.get('videopassword', None) |
|
|
|
|
|
|
|
|
# request basic data |
|
|
# request basic data |
|
@ -237,10 +226,9 @@ class YoukuIE(InfoExtractor): |
|
|
msg += ': ' + error_note |
|
|
msg += ': ' + error_note |
|
|
raise ExtractorError(msg) |
|
|
raise ExtractorError(msg) |
|
|
|
|
|
|
|
|
#get video title |
|
|
|
|
|
|
|
|
# get video title |
|
|
title = data['video']['title'] |
|
|
title = data['video']['title'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# generate video_urls_dict |
|
|
# generate video_urls_dict |
|
|
video_urls_dict = self.construct_video_urls(data) |
|
|
video_urls_dict = self.construct_video_urls(data) |
|
|
|
|
|
|
|
|