diff options
Diffstat (limited to 'youtube_dl/utils.py')
| -rw-r--r-- | youtube_dl/utils.py | 21 | 
1 files changed, 20 insertions, 1 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 67c6af507..057cd20d1 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -17,6 +17,7 @@ import platform  import re  import ssl  import socket +import struct  import subprocess  import sys  import traceback @@ -761,6 +762,7 @@ def unified_strdate(date_str):      date_str = re.sub(r' ?(\+|-)[0-9]{2}:?[0-9]{2}$', '', date_str)      format_expressions = [          '%d %B %Y', +        '%d %b %Y',          '%B %d %Y',          '%b %d %Y',          '%Y-%m-%d', @@ -1143,7 +1145,7 @@ def parse_duration(s):          return None      m = re.match( -        r'(?:(?:(?P<hours>[0-9]+):)?(?P<mins>[0-9]+):)?(?P<secs>[0-9]+)$', s) +        r'(?:(?:(?P<hours>[0-9]+)[:h])?(?P<mins>[0-9]+)[:m])?(?P<secs>[0-9]+)s?$', s)      if not m:          return None      res = int(m.group('secs')) @@ -1220,3 +1222,20 @@ 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) + +try: +    struct.pack(u'!I', 0) +except TypeError: +    # In Python 2.6 (and some 2.7 versions), struct requires a bytes argument +    def struct_pack(spec, *args): +        if isinstance(spec, compat_str): +            spec = spec.encode('ascii') +        return struct.pack(spec, *args) + +    def struct_unpack(spec, *args): +        if isinstance(spec, compat_str): +            spec = spec.encode('ascii') +        return struct.unpack(spec, *args) +else: +    struct_pack = struct.pack +    struct_unpack = struct.unpack  | 
