|
|
@ -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,
|
|
|
|
'Referer': req_url,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
self._set_cookie('youku.com','xreferrer','http://www.youku.com')
|
|
|
|
self._set_cookie('youku.com', 'xreferrer', 'http://www.youku.com')
|
|
|
|
req = sanitized_Request(req_url,headers=headers)
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|