diff options
| author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2015-02-28 21:42:16 +0100 | 
|---|---|---|
| committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2015-02-28 21:44:57 +0100 | 
| commit | 003c69a84b68cadb46aeb8e03115848a722fd675 (patch) | |
| tree | c562f029a2868fc1f8efa3753f8acedcd0583a97 | |
| parent | 01349011088b10861e283c245f5da56aa3d5fba0 (diff) | |
Use shutil.get_terminal_size for getting the terminal width if it's available (python >= 3.3)
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 4 | ||||
| -rw-r--r-- | youtube_dl/compat.py | 30 | ||||
| -rw-r--r-- | youtube_dl/options.py | 4 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 17 | 
4 files changed, 34 insertions, 21 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 74e426168..d7c6db0ff 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -28,6 +28,7 @@ from .compat import (      compat_basestring,      compat_cookiejar,      compat_expanduser, +    compat_get_terminal_size,      compat_http_client,      compat_kwargs,      compat_str, @@ -46,7 +47,6 @@ from .utils import (      ExtractorError,      format_bytes,      formatSeconds, -    get_term_width,      locked_file,      make_HTTPS_handler,      MaxDownloadsReached, @@ -284,7 +284,7 @@ class YoutubeDL(object):              try:                  import pty                  master, slave = pty.openpty() -                width = get_term_width() +                width = compat_get_terminal_size().columns                  if width is None:                      width_args = []                  else: diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index e989cdbbd..b2bf149ef 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -1,9 +1,11 @@  from __future__ import unicode_literals +import collections  import getpass  import optparse  import os  import re +import shutil  import socket  import subprocess  import sys @@ -364,6 +366,33 @@ def workaround_optparse_bug9161():              return real_add_option(self, *bargs, **bkwargs)          optparse.OptionGroup.add_option = _compat_add_option +if hasattr(shutil, 'get_terminal_size'):  # Python >= 3.3 +    compat_get_terminal_size = shutil.get_terminal_size +else: +    _terminal_size = collections.namedtuple('terminal_size', ['columns', 'lines']) + +    def compat_get_terminal_size(): +        columns = compat_getenv('COLUMNS', None) +        if columns: +            columns = int(columns) +        else: +            columns = None +        lines = compat_getenv('LINES', None) +        if lines: +            lines = int(lines) +        else: +            lines = None + +        try: +            sp = subprocess.Popen( +                ['stty', 'size'], +                stdout=subprocess.PIPE, stderr=subprocess.PIPE) +            out, err = sp.communicate() +            lines, columns = map(int, out.split()) +        except: +            pass +        return _terminal_size(columns, lines) +  __all__ = [      'compat_HTTPError', @@ -371,6 +400,7 @@ __all__ = [      'compat_chr',      'compat_cookiejar',      'compat_expanduser', +    'compat_get_terminal_size',      'compat_getenv',      'compat_getpass',      'compat_html_entities', diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 58f811162..a2ffe96bc 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -8,11 +8,11 @@ import sys  from .downloader.external import list_external_downloaders  from .compat import (      compat_expanduser, +    compat_get_terminal_size,      compat_getenv,      compat_kwargs,  )  from .utils import ( -    get_term_width,      write_string,  )  from .version import __version__ @@ -100,7 +100,7 @@ def parseOpts(overrideArguments=None):          return opts      # No need to wrap help messages if we're on a wide console -    columns = get_term_width() +    columns = compat_get_terminal_size().columns      max_width = columns if columns else 80      max_help_position = 80 diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 1f3bfef7d..d4938ec36 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -35,7 +35,6 @@ import zlib  from .compat import (      compat_basestring,      compat_chr, -    compat_getenv,      compat_html_entities,      compat_http_client,      compat_parse_qs, @@ -1173,22 +1172,6 @@ def parse_filesize(s):      return int(float(num_str) * mult) -def get_term_width(): -    columns = compat_getenv('COLUMNS', None) -    if columns: -        return int(columns) - -    try: -        sp = subprocess.Popen( -            ['stty', 'size'], -            stdout=subprocess.PIPE, stderr=subprocess.PIPE) -        out, err = sp.communicate() -        return int(out.split()[1]) -    except: -        pass -    return None - -  def month_by_name(name):      """ Return the number of a month by (locale-independently) English name """ | 
