From: Orakaro Date: Sat, 4 Oct 2014 08:01:29 +0000 (+0900) Subject: Add python2 compatibility to PR #66 X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=commitdiff_plain;h=a65129d47a38d80460bf19aa6003015f7606dde7;hp=49a95766f33c88d43165ca937dee47791f513b9e Add python2 compatibility to PR #66 --- diff --git a/docs/conf.py b/docs/conf.py index 670689f..dee298a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -48,9 +48,9 @@ copyright = u'2014, Vu Nhat Minh' # built documents. # # The short X.Y version. -version = '1.1.4' +version = '1.1.5' # The full version, including alpha/beta/rc tags. -release = '1.1.4' +release = '1.1.5' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/rainbowstream/draw.py b/rainbowstream/draw.py index a947506..6b57041 100644 --- a/rainbowstream/draw.py +++ b/rainbowstream/draw.py @@ -7,6 +7,7 @@ import arrow import re import os +from io import BytesIO from twitter.util import printNicely from functools import wraps from pyfiglet import figlet_format diff --git a/rainbowstream/py3patch.py b/rainbowstream/py3patch.py index 4ba9591..7e71e2a 100644 --- a/rainbowstream/py3patch.py +++ b/rainbowstream/py3patch.py @@ -1,17 +1,13 @@ import sys # Library compatibility -# StringIO module -try: - from StringIO import StringIO, BytesIO -except: - from io import StringIO, BytesIO - -# HTMLParser module if sys.version[0] == "2": from HTMLParser import HTMLParser + from urllib2 import URLError else: from html.parser import HTMLParser + from urllib.error import URLError + unescape = HTMLParser().unescape # According to https://github.com/python/cpython/blob/master/Lib/html/parser.py#L547 , # in python 3.5 maybe I should use diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index c1563a3..06bdd54 100644 --- a/rainbowstream/rainbow.py +++ b/rainbowstream/rainbow.py @@ -12,14 +12,13 @@ import pkg_resources import socks import socket +from io import BytesIO from twitter.stream import TwitterStream, Timeout, HeartbeatTimeout, Hangup from twitter.api import * from twitter.oauth import OAuth, read_token_file from twitter.oauth_dance import oauth_dance from twitter.util import printNicely -from urllib import error - from .draw import * from .colors import * from .config import * @@ -79,6 +78,31 @@ def parse_arguments(): return parser.parse_args() +def proxy_connect(args): + """ + Connect to specified proxy + """ + if args.proxy_host: + # Setup proxy by monkeypatching the standard lib + if args.proxy_type.lower() == "socks5" or not args.proxy_type: + socks.set_default_proxy( + socks.SOCKS5, args.proxy_host, + int(args.proxy_port)) + elif args.proxy_type.lower() == "http": + socks.set_default_proxy( + socks.HTTP, args.proxy_host, + int(args.proxy_port)) + elif args.proxy_type.lower() == "socks4": + socks.set_default_proxy( + socks.SOCKS4, args.proxy_host, + int(args.proxy_port)) + else: + printNicely( + magenta("Sorry, wrong proxy type specified! Aborting...")) + sys.exit() + socket.socket = socks.socksocket + + def authen(): """ Authenticate with Twitter OAuth @@ -2042,21 +2066,9 @@ def fly(): # Initial args = parse_arguments() try: - if args.proxy_host: - # Setup proxy by monkeypatching the standard lib - # You might want to check https://github.com/Anorov/PySocks for further - # further info. - if args.proxy_type.lower() == "socks5" or not args.proxy_type: - socks.set_default_proxy(socks.SOCKS5, args.proxy_host, int(args.proxy_port)) - elif args.proxy_type.lower() == "http": - socks.set_default_proxy(socks.HTTP, args.proxy_host, int(args.proxy_port)) - elif args.proxy_type.lower() == "socks4": - socks.set_default_proxy(socks.SOCKS4, args.proxy_host, int(args.proxy_port)) - else: - printNicely(magenta("Sorry, wrong proxy type specified! Aborting...")) - sys.exit() - socket.socket = socks.socksocket + proxy_connect(args) init(args) + # Twitter API connection problem except TwitterHTTPError: printNicely('') printNicely( @@ -2064,7 +2076,8 @@ def fly(): printNicely(magenta("Let's try again later.")) save_history() sys.exit() - except (ConnectionRefusedError, socks.ProxyConnectionError, error.URLError): + # Proxy connection problem + except (socks.ProxyConnectionError, URLError): printNicely( magenta("There seems to be a connection problem.")) printNicely( diff --git a/setup.py b/setup.py index 472666a..c86e68c 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ import os import os.path # Bumped version -version = '1.1.4' +version = '1.1.5' # Require install_requires = [