diff options
author | Philipp Hagemeister <phihag@phihag.de> | 2014-03-18 14:27:42 +0100 |
---|---|---|
committer | Philipp Hagemeister <phihag@phihag.de> | 2014-03-18 14:27:42 +0100 |
commit | e68301af21310864546b97cee77c720cf307a502 (patch) | |
tree | 89a1a92533916164a8d60eda62d6499429e7c4ab | |
parent | 17286a96f233426506f08d8d6664af59f0973200 (diff) |
Fix getpass on Windows (Fixes #2547)
-rw-r--r-- | youtube_dl/__init__.py | 4 | ||||
-rw-r--r-- | youtube_dl/utils.py | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 0e9504c14..07c9074fe 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -56,7 +56,6 @@ __authors__ = ( __license__ = 'Public Domain' import codecs -import getpass import io import locale import optparse @@ -68,6 +67,7 @@ import sys from .utils import ( + compat_getpass, compat_print, DateRange, decodeOption, @@ -611,7 +611,7 @@ def _real_main(argv=None): if opts.usetitle and opts.useid: parser.error(u'using title conflicts with using video ID') if opts.username is not None and opts.password is None: - opts.password = getpass.getpass(u'Type account password and press return:') + opts.password = compat_getpass(u'Type account password and press [Return]: ') if opts.ratelimit is not None: numeric_limit = FileDownloader.parse_bytes(opts.ratelimit) if numeric_limit is None: diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 3cf29e63a..7e7d1e8b6 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -6,6 +6,7 @@ import ctypes import datetime import email.utils import errno +import getpass import gzip import itertools import io @@ -1279,3 +1280,12 @@ def parse_xml(s): parser = xml.etree.ElementTree.XMLParser(target=TreeBuilder()) kwargs = {'parser': parser} if sys.version_info >= (2, 7) else {} return xml.etree.ElementTree.XML(s.encode('utf-8'), **kwargs) + + +if sys.version_info < (3, 0) and sys.platform == 'win32': + def compat_getpass(prompt, *args, **kwargs): + if isinstance(prompt, compat_str): + prompt = prompt.encode(getpreferredencoding()) + return getpass.getpass(prompt, *args, **kwargs) +else: + compat_getpass = getpass.getpass |