aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2014-03-18 14:27:42 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2014-03-18 14:27:42 +0100
commite68301af21310864546b97cee77c720cf307a502 (patch)
tree89a1a92533916164a8d60eda62d6499429e7c4ab
parent17286a96f233426506f08d8d6664af59f0973200 (diff)
downloadyoutube-dl-e68301af21310864546b97cee77c720cf307a502.tar.xz
Fix getpass on Windows (Fixes #2547)
-rw-r--r--youtube_dl/__init__.py4
-rw-r--r--youtube_dl/utils.py10
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