修复win下CMD不能打印二维码的问题,为UnicodeStreamFilter重写flush方法

This commit is contained in:
sharpdeep
2016-02-16 14:30:01 +08:00
parent 8b0536c331
commit 86fb8be1a5
+20
View File
@@ -101,8 +101,25 @@ class WebWeixin(object):
return False return False
def genQRCode(self): def genQRCode(self):
if sys.platform.find('win') >= 0:
self._showQRCodeImg()
else:
self._str2qr('https://login.weixin.qq.com/l/' + self.uuid) self._str2qr('https://login.weixin.qq.com/l/' + self.uuid)
def _showQRCodeImg(self):
QRCODE_PATH = os.path.join(os.getcwd(),'qrcode.jpg')
url = 'https://login.weixin.qq.com/qrcode/' + self.uuid
params = {
't' : 'webwx',
'_' : int(time.time())
}
data = self._post(url,params,False)
with open(QRCODE_PATH, 'wb') as f:
f.write(data)
os.startfile(QRCODE_PATH)
def waitForLogin(self, tip = 1): def waitForLogin(self, tip = 1):
time.sleep(tip) time.sleep(tip)
url = 'https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=%s&uuid=%s&_=%s' % (tip, self.uuid, int(time.time())) url = 'https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=%s&uuid=%s&_=%s' % (tip, self.uuid, int(time.time()))
@@ -589,6 +606,9 @@ class UnicodeStreamFilter:
s = s.encode(self.encode_to, self.errors).decode(self.encode_to) s = s.encode(self.encode_to, self.errors).decode(self.encode_to)
self.target.write(s) self.target.write(s)
def flush(self):
self.target.flush()
if __name__ == '__main__': if __name__ == '__main__':
if sys.stdout.encoding == 'cp936': if sys.stdout.encoding == 'cp936':
sys.stdout = UnicodeStreamFilter(sys.stdout) sys.stdout = UnicodeStreamFilter(sys.stdout)