|
@ -7,9 +7,10 @@ import base64 |
|
|
from .common import InfoExtractor |
|
|
from .common import InfoExtractor |
|
|
from ..utils import ExtractorError |
|
|
from ..utils import ExtractorError |
|
|
|
|
|
|
|
|
from ..compat import compat_urllib_parse |
|
|
|
|
|
|
|
|
|
|
|
bytes_is_str = (bytes == str) # for compatible |
|
|
|
|
|
|
|
|
from ..compat import ( |
|
|
|
|
|
compat_urllib_parse, |
|
|
|
|
|
compat_ord, |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class YoukuIE(InfoExtractor): |
|
|
class YoukuIE(InfoExtractor): |
|
@ -37,26 +38,20 @@ class YoukuIE(InfoExtractor): |
|
|
ls = list(range(256)) |
|
|
ls = list(range(256)) |
|
|
t = 0 |
|
|
t = 0 |
|
|
for i in range(256): |
|
|
for i in range(256): |
|
|
t = (t + ls[i] + ord(s1[i % len(s1)])) % 256 |
|
|
|
|
|
|
|
|
t = (t + ls[i] + compat_ord(s1[i % len(s1)])) % 256 |
|
|
ls[i], ls[t] = ls[t], ls[i] |
|
|
ls[i], ls[t] = ls[t], ls[i] |
|
|
s = '' if not bytes_is_str else b'' |
|
|
|
|
|
|
|
|
s = bytearray() |
|
|
x, y = 0, 0 |
|
|
x, y = 0, 0 |
|
|
for i in range(len(s2)): |
|
|
for i in range(len(s2)): |
|
|
y = (y + 1) % 256 |
|
|
y = (y + 1) % 256 |
|
|
x = (x + ls[y]) % 256 |
|
|
x = (x + ls[y]) % 256 |
|
|
ls[x], ls[y] = ls[y], ls[x] |
|
|
ls[x], ls[y] = ls[y], ls[x] |
|
|
if isinstance(s2[i], int): |
|
|
|
|
|
s += chr(s2[i] ^ ls[(ls[x] + ls[y]) % 256]) |
|
|
|
|
|
else: |
|
|
|
|
|
s += chr(ord(s2[i]) ^ ls[(ls[x] + ls[y]) % 256]) |
|
|
|
|
|
return s |
|
|
|
|
|
|
|
|
s.append(compat_ord(s2[i]) ^ ls[(ls[x] + ls[y]) % 256]) |
|
|
|
|
|
return bytes(s) |
|
|
|
|
|
|
|
|
sid, token = yk_t( |
|
|
sid, token = yk_t( |
|
|
'becaf9be', |
|
|
|
|
|
base64.b64decode(bytes(data2['ep'], 'ascii')) |
|
|
|
|
|
if not bytes_is_str |
|
|
|
|
|
else base64.b64decode(data2['ep']) |
|
|
|
|
|
).split('_') |
|
|
|
|
|
|
|
|
b'becaf9be', base64.b64decode(data2['ep'].encode('ascii')) |
|
|
|
|
|
).decode('ascii').split('_') |
|
|
|
|
|
|
|
|
# get oip |
|
|
# get oip |
|
|
oip = data2['ip'] |
|
|
oip = data2['ip'] |
|
@ -89,16 +84,10 @@ class YoukuIE(InfoExtractor): |
|
|
def generate_ep(format, n): |
|
|
def generate_ep(format, n): |
|
|
fileid = get_fileid(format, n) |
|
|
fileid = get_fileid(format, n) |
|
|
ep_t = yk_t( |
|
|
ep_t = yk_t( |
|
|
'bf7e5f01', |
|
|
|
|
|
bytes('%s_%s_%s' % (sid, fileid, token), 'ascii') |
|
|
|
|
|
if not bytes_is_str |
|
|
|
|
|
else ('%s_%s_%s' % (sid, fileid, token)) |
|
|
|
|
|
|
|
|
b'bf7e5f01', |
|
|
|
|
|
('%s_%s_%s' % (sid, fileid, token)).encode('ascii') |
|
|
) |
|
|
) |
|
|
ep = base64.b64encode( |
|
|
|
|
|
bytes(ep_t, 'latin') |
|
|
|
|
|
if not bytes_is_str |
|
|
|
|
|
else ep_t |
|
|
|
|
|
).decode() |
|
|
|
|
|
|
|
|
ep = base64.b64encode(ep_t).decode('ascii') |
|
|
return ep |
|
|
return ep |
|
|
|
|
|
|
|
|
# generate video_urls |
|
|
# generate video_urls |
|
|