X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=youtube_dl%2Futils.py;h=e54ea9d617e217686691312ef53d5a42e71df03c;hb=97b557384836660bbff02198e0407d70bdd65705;hp=68d590ba25f812ba96f0c97d81f932200059a155;hpb=912b38b428e882c1ab79b6537b94b30e3e3c1def;p=youtube-dl.git diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 68d590ba2..e54ea9d61 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -539,7 +539,6 @@ def encodeFilename(s, for_subprocess=False): encoding = 'utf-8' return s.encode(encoding, 'ignore') - def decodeOption(optval): if optval is None: return optval @@ -1181,12 +1180,16 @@ def int_or_none(v, scale=1): return v if v is None else (int(v) // scale) +def float_or_none(v, scale=1): + return v if v is None else (float(v) / scale) + + def parse_duration(s): if s is None: return None m = re.match( - r'(?:(?:(?P[0-9]+)[:h])?(?P[0-9]+)[:m])?(?P[0-9]+)s?$', s) + r'(?:(?:(?P[0-9]+)[:h])?(?P[0-9]+)[:m])?(?P[0-9]+)s?(?::[0-9]+)?$', s) if not m: return None res = int(m.group('secs')) @@ -1261,8 +1264,8 @@ class PagedList(object): def uppercase_escape(s): return re.sub( - r'\\U([0-9a-fA-F]{8})', - lambda m: compat_chr(int(m.group(1), base=16)), s) + r'\\U[0-9a-fA-F]{8}', + lambda m: m.group(0).decode('unicode-escape'), s) try: struct.pack(u'!I', 0) @@ -1328,3 +1331,7 @@ US_RATINGS = { 'R': 16, 'NC': 18, } + + +def strip_jsonp(code): + return re.sub(r'(?s)^[a-zA-Z_]+\s*\(\s*(.*)\);\s*?\s*$', r'\1', code)