From f52354a88927eb66bcb1f603d2d91162b5bd2b5f Mon Sep 17 00:00:00 2001 From: Yen Chi Hsuan Date: Fri, 26 Feb 2016 14:58:29 +0800 Subject: [utils] Move codes for handling eval() from iqiyi.py --- youtube_dl/utils.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'youtube_dl/utils.py') diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 900e07a8e..fc7e2fb7f 100644 --- 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) -- cgit v1.2.3