[utils] Move base62 to utils
authorYen Chi Hsuan <yan12125@gmail.com>
Wed, 24 Feb 2016 14:08:40 +0000 (22:08 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Fri, 26 Feb 2016 06:26:26 +0000 (14:26 +0800)
youtube_dl/extractor/iqiyi.py
youtube_dl/utils.py

index c3e33009a00a5174138c08ae3aec78ae9b7c899a..4f02b9f87e868443b1a33f6030b35eef3ff5292a 100644 (file)
@@ -18,6 +18,7 @@ from ..compat import (
     compat_urllib_parse_urlparse,
 )
 from ..utils import (
+    base62,
     ExtractorError,
     ohdave_rsa_encrypt,
     remove_start,
@@ -126,21 +127,9 @@ class IqiyiSDK(object):
 
 
 class IqiyiSDKInterpreter(object):
-    BASE62_TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
     def __init__(self, sdk_code):
         self.sdk_code = sdk_code
 
-    @classmethod
-    def base62(cls, num):
-        if num == 0:
-            return '0'
-        ret = ''
-        while num:
-            ret = cls.BASE62_TABLE[num % 62] + ret
-            num = num // 62
-        return ret
-
     def decode_eval_codes(self):
         self.sdk_code = self.sdk_code[5:-3]
 
@@ -154,7 +143,7 @@ class IqiyiSDKInterpreter(object):
 
         while count:
             count -= 1
-            b62count = self.base62(count)
+            b62count = base62(count)
             symbol_table[b62count] = symbols[count] or b62count
 
         self.sdk_code = re.sub(
index a3df90fadd40ece81b7daddbeb0f4e2904ddf6bb..d7a1586c0f4cf883610bf11d1e9163edf5a98b2e 100644 (file)
@@ -2619,3 +2619,17 @@ def ohdave_rsa_encrypt(data, exponent, modulus):
     payload = int(binascii.hexlify(data[::-1]), 16)
     encrypted = pow(payload, exponent, modulus)
     return '%x' % encrypted
+
+
+def base_n(num, n, table):
+    if num == 0:
+        return '0'
+    ret = ''
+    while num:
+        ret = table[num % n] + ret
+        num = num // n
+    return ret
+
+
+def base62(num):
+    return base_n(num, 62, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')