X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=Robots%2Fbkmk_rurllib2.py;h=a5714a19abd4e0d1c0e2b76404d23b0dd143f129;hb=97202bf84e9c78d8fac912a82a85fb1cbb233a4b;hp=49c556850c8bd2718d70b9604750a3aa43ad8b37;hpb=b4dc970296be1f8e78c548424d3f3561db2d9410;p=bookmarks_db.git diff --git a/Robots/bkmk_rurllib2.py b/Robots/bkmk_rurllib2.py index 49c5568..a5714a1 100644 --- a/Robots/bkmk_rurllib2.py +++ b/Robots/bkmk_rurllib2.py @@ -5,7 +5,7 @@ This file is a part of Bookmarks database and Internet robot. """ __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2014 PhiloSoft Design" +__copyright__ = "Copyright (C) 2014-2017 PhiloSoft Design" __license__ = "GNU GPL" __all__ = ['robot_urllib2'] @@ -17,9 +17,19 @@ import urllib2 from Robots.bkmk_robot_base import robot_base, get_error +_fw = None + +class FTPHandler(urllib2.FTPHandler): + def connect_ftp(self, user, passwd, host, port, dirs, timeout): + global _fw + _fw = urllib2.FTPHandler.connect_ftp(self, user, passwd, host, port, + dirs, timeout) + return _fw + + opener = urllib2.OpenerDirector() default_classes = [urllib2.HTTPHandler, urllib2.HTTPDefaultErrorHandler, - urllib2.FTPHandler, urllib2.HTTPErrorProcessor] + FTPHandler, urllib2.HTTPErrorProcessor] if hasattr(httplib, 'HTTPS'): default_classes.insert(0, urllib2.HTTPSHandler) for klass in default_classes: @@ -35,7 +45,7 @@ _x_user_agent = "bookmarks_db (Python %d.%d.%d; urllib2)" % ( class robot_urllib2(robot_base): - def get(self, bookmark, url, accept_charset=False): + def get(self, bookmark, url, accept_charset=False): request = urllib2.Request(url) request.add_header('Accept', '*/*') if accept_charset and bookmark.charset: @@ -47,27 +57,37 @@ class robot_urllib2(robot_base): request.add_header('User-agent', _user_agent) request.add_header('X-User-Agent', _x_user_agent) + global _fw + _fw = None + try: response = urllib2.urlopen(request) - except urllib2.HTTPError, e: + + except urllib2.HTTPError as e: if e.code in (301, 302, 303, 307): return None, e.code, e.hdrs['Location'], None, None else: self.log(' HTTP Error %s: %s' % (e.code, e.msg)) return "HTTP Error %s: %s" % (e.code, e.msg), None, None, None, None - except urllib2.URLError, e: + + except urllib2.URLError as e: self.log(' URL Error: %s' % e.reason) return "URL Error: %s" % e.reason, None, None, None, None - except httplib.HTTPException, e: + + except httplib.HTTPException as e: error = get_error(e) self.log(' HTTP Exception: %s' % error) return "HTTP Exception: %s" % error, None, None, None, None - except IOError, e: + + except IOError as e: error = get_error(e) self.log(' I/O Error: %s' % error) return "I/O Error: %s" % error, None, None, None, None + else: return None, None, None, response.info(), response.read() - def get_ftp_welcome(self): - return '' + def get_ftp_welcome(self): + if _fw is None: + return '' + return _fw.ftp.welcome