[README.md] Document license field for output template
[youtube-dl] / youtube_dl / utils.py
index fc7e2fb7f11620bd07c5ba90427170ceedd1a3a3..606977c5874ac613f0224815e8c91fc5ef62400a 100644 (file)
@@ -2621,15 +2621,17 @@ def ohdave_rsa_encrypt(data, exponent, modulus):
     return '%x' % encrypted
 
 
-def base_n(num, n, table=None):
-    if num == 0:
-        return '0'
-
+def encode_base_n(num, n, table=None):
     FULL_TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
-    assert n <= len(FULL_TABLE)
     if not table:
         table = FULL_TABLE[:n]
 
+    if n > len(table):
+        raise ValueError('base %d exceeds table length %d' % (n, len(table)))
+
+    if num == 0:
+        return table[0]
+
     ret = ''
     while num:
         ret = table[num % n] + ret
@@ -2639,7 +2641,7 @@ def base_n(num, n, table=None):
 
 def decode_packed_codes(code):
     mobj = re.search(
-        r"'([^']+)',(\d+),(\d+),'([^']+)'\.split\('\|'\),[^,]+,{}",
+        r"}\('(.+)',(\d+),(\d+),'([^']+)'\.split\('\|'\)",
         code)
     obfucasted_code, base, count, symbols = mobj.groups()
     base = int(base)
@@ -2649,7 +2651,7 @@ def decode_packed_codes(code):
 
     while count:
         count -= 1
-        base_n_count = base_n(count, base)
+        base_n_count = encode_base_n(count, base)
         symbol_table[base_n_count] = symbols[count] or base_n_count
 
     return re.sub(