youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit f52354a88927eb66bcb1f603d2d91162b5bd2b5f
parent 59f898b7a72284efb994a8c6baee7771046226dd
Author: Yen Chi Hsuan <yan12125@gmail.com>
Date:   Fri, 26 Feb 2016 14:58:29 +0800

[utils] Move codes for handling eval() from iqiyi.py

Diffstat:
Myoutube_dl/extractor/iqiyi.py | 24++----------------------
Myoutube_dl/utils.py | 20++++++++++++++++++++
2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/youtube_dl/extractor/iqiyi.py b/youtube_dl/extractor/iqiyi.py @@ -18,7 +18,7 @@ from ..compat import ( compat_urllib_parse_urlparse, ) from ..utils import ( - base_n, + decode_packed_codes, ExtractorError, ohdave_rsa_encrypt, remove_start, @@ -130,28 +130,8 @@ class IqiyiSDKInterpreter(object): def __init__(self, sdk_code): self.sdk_code = sdk_code - def decode_eval_codes(self): - self.sdk_code = self.sdk_code[5:-3] - - mobj = re.search( - r"'([^']+)',62,(\d+),'([^']+)'\.split\('\|'\),[^,]+,{}", - self.sdk_code) - obfucasted_code, count, symbols = mobj.groups() - count = int(count) - symbols = symbols.split('|') - symbol_table = {} - - while count: - count -= 1 - b62count = base_n(count, 62) - symbol_table[b62count] = symbols[count] or b62count - - self.sdk_code = re.sub( - r'\b(\w+)\b', lambda mobj: symbol_table[mobj.group(0)], - obfucasted_code) - def run(self, target, ip, timestamp): - self.decode_eval_codes() + self.sdk_code = decode_packed_codes(self.sdk_code) functions = re.findall(r'input=([a-zA-Z0-9]+)\(input', self.sdk_code) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -2635,3 +2635,23 @@ def base_n(num, n, table=None): ret = table[num % n] + ret num = num // n return ret + + +def decode_packed_codes(code): + mobj = re.search( + r"'([^']+)',(\d+),(\d+),'([^']+)'\.split\('\|'\),[^,]+,{}", + code) + obfucasted_code, base, count, symbols = mobj.groups() + base = int(base) + count = int(count) + symbols = symbols.split('|') + symbol_table = {} + + while count: + count -= 1 + base_n_count = base_n(count, base) + symbol_table[base_n_count] = symbols[count] or base_n_count + + return re.sub( + r'\b(\w+)\b', lambda mobj: symbol_table[mobj.group(0)], + obfucasted_code)