diff options
Diffstat (limited to 'youtube_dl/utils.py')
| -rw-r--r-- | youtube_dl/utils.py | 39 | 
1 files changed, 30 insertions, 9 deletions
| diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 54fa17c38..475fad3c9 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -62,6 +62,11 @@ std_headers = {  } +ENGLISH_MONTH_NAMES = [ +    'January', 'February', 'March', 'April', 'May', 'June', +    'July', 'August', 'September', 'October', 'November', 'December'] + +  def preferredencoding():      """Get preferred encoding. @@ -895,8 +900,8 @@ def _windows_write_string(s, out):      def not_a_console(handle):          if handle == INVALID_HANDLE_VALUE or handle is None:              return True -        return ((GetFileType(handle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR -                or GetConsoleMode(handle, ctypes.byref(ctypes.wintypes.DWORD())) == 0) +        return ((GetFileType(handle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR or +                GetConsoleMode(handle, ctypes.byref(ctypes.wintypes.DWORD())) == 0)      if not_a_console(h):          return False @@ -1185,11 +1190,18 @@ def get_term_width():  def month_by_name(name):      """ Return the number of a month by (locale-independently) English name """ -    ENGLISH_NAMES = [ -        'January', 'February', 'March', 'April', 'May', 'June', -        'July', 'August', 'September', 'October', 'November', 'December']      try: -        return ENGLISH_NAMES.index(name) + 1 +        return ENGLISH_MONTH_NAMES.index(name) + 1 +    except ValueError: +        return None + + +def month_by_abbreviation(abbrev): +    """ Return the number of a month by (locale-independently) English +        abbreviations """ + +    try: +        return [s[:3] for s in ENGLISH_MONTH_NAMES].index(abbrev) + 1      except ValueError:          return None @@ -1548,8 +1560,8 @@ def js_to_json(code):          return '"%s"' % v      res = re.sub(r'''(?x) -        "(?:[^"\\]*(?:\\\\|\\")?)*"| -        '(?:[^'\\]*(?:\\\\|\\')?)*'| +        "(?:[^"\\]*(?:\\\\|\\['"nu]))*[^"\\]*"| +        '(?:[^'\\]*(?:\\\\|\\['"nu]))*[^'\\]*'|          [a-zA-Z_][.a-zA-Z_0-9]*          ''', fix_kv, code)      res = re.sub(r',(\s*\])', lambda m: m.group(1), res) @@ -1604,6 +1616,15 @@ def args_to_str(args):      return ' '.join(shlex_quote(a) for a in args) +def mimetype2ext(mt): +    _, _, res = mt.rpartition('/') + +    return { +        'x-ms-wmv': 'wmv', +        'x-mp4-fragmented': 'mp4', +    }.get(res, res) + +  def urlhandle_detect_ext(url_handle):      try:          url_handle.headers @@ -1619,7 +1640,7 @@ def urlhandle_detect_ext(url_handle):              if e:                  return e -    return getheader('Content-Type').split("/")[1] +    return mimetype2ext(getheader('Content-Type'))  def age_restricted(content_limit, age_limit): | 
