diff --git a/youtube_dl/extractor/iqiyi.py b/youtube_dl/extractor/iqiyi.py index 4f02b9f87..76ecd55a4 100644 --- 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 ( - base62, + base_n, ExtractorError, ohdave_rsa_encrypt, remove_start, @@ -143,7 +143,7 @@ class IqiyiSDKInterpreter(object): while count: count -= 1 - b62count = base62(count) + b62count = base_n(count, 62) symbol_table[b62count] = symbols[count] or b62count self.sdk_code = re.sub( diff --git a/youtube_dl/extractor/vidzi.py b/youtube_dl/extractor/vidzi.py index 4ec07db3a..d671e27de 100644 --- a/youtube_dl/extractor/vidzi.py +++ b/youtube_dl/extractor/vidzi.py @@ -5,7 +5,7 @@ import re from .jwplatform import JWPlatformBaseIE from ..utils import ( - base36, + base_n, js_to_json, ) @@ -42,7 +42,7 @@ class VidziIE(JWPlatformBaseIE): while count: count -= 1 if symbols[count]: - code = re.sub(r'\b%s\b' % base36(count), symbols[count], code) + code = re.sub(r'\b%s\b' % base_n(count, 36), symbols[count], code) code = code.replace('\\\'', '\'') jwplayer_data = self._parse_json( diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index be1f3b0d7..900e07a8e 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -2621,19 +2621,17 @@ def ohdave_rsa_encrypt(data, exponent, modulus): return '%x' % encrypted -def base_n(num, n, table): +def base_n(num, n, table=None): if num == 0: return '0' + + FULL_TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + assert n <= len(FULL_TABLE) + if not table: + table = FULL_TABLE[:n] + ret = '' while num: ret = table[num % n] + ret num = num // n return ret - - -def base36(num): - return base_n(num, 36, '0123456789abcdefghijklmnopqrstuvwxyz') - - -def base62(num): - return base_n(num, 62, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')