Merge 93fb9120b0 into 22210ca352
This commit is contained in:
commit
6db6dc7a4b
48
speedtest.py
48
speedtest.py
|
|
@ -742,6 +742,7 @@ def catch_request(request, opener=None):
|
||||||
return uh, False
|
return uh, False
|
||||||
except HTTP_ERRORS:
|
except HTTP_ERRORS:
|
||||||
e = get_exception()
|
e = get_exception()
|
||||||
|
printer('Error: %s' % e, debug=True)
|
||||||
return None, e
|
return None, e
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1259,10 +1260,7 @@ class Speedtest(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
urls = [
|
urls = [
|
||||||
'://www.speedtest.net/speedtest-servers-static.php',
|
"://www.speedtest.net/api/js/servers",
|
||||||
'http://c.speedtest.net/speedtest-servers-static.php',
|
|
||||||
'://www.speedtest.net/speedtest-servers.php',
|
|
||||||
'http://c.speedtest.net/speedtest-servers.php',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
headers = {}
|
headers = {}
|
||||||
|
|
@ -1305,53 +1303,31 @@ class Speedtest(object):
|
||||||
printer('Servers XML:\n%s' % serversxml, debug=True)
|
printer('Servers XML:\n%s' % serversxml, debug=True)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
try:
|
elements = json.loads(serversxml)
|
||||||
try:
|
except SyntaxError:
|
||||||
root = ET.fromstring(serversxml)
|
|
||||||
except ET.ParseError:
|
|
||||||
e = get_exception()
|
|
||||||
raise SpeedtestServersError(
|
|
||||||
'Malformed speedtest.net server list: %s' % e
|
|
||||||
)
|
|
||||||
elements = etree_iter(root, 'server')
|
|
||||||
except AttributeError:
|
|
||||||
try:
|
|
||||||
root = DOM.parseString(serversxml)
|
|
||||||
except ExpatError:
|
|
||||||
e = get_exception()
|
|
||||||
raise SpeedtestServersError(
|
|
||||||
'Malformed speedtest.net server list: %s' % e
|
|
||||||
)
|
|
||||||
elements = root.getElementsByTagName('server')
|
|
||||||
except (SyntaxError, xml.parsers.expat.ExpatError):
|
|
||||||
raise ServersRetrievalError()
|
raise ServersRetrievalError()
|
||||||
|
|
||||||
for server in elements:
|
for server in elements:
|
||||||
try:
|
if servers and int(server.get('id')) not in servers:
|
||||||
attrib = server.attrib
|
|
||||||
except AttributeError:
|
|
||||||
attrib = dict(list(server.attributes.items()))
|
|
||||||
|
|
||||||
if servers and int(attrib.get('id')) not in servers:
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if (int(attrib.get('id')) in self.config['ignore_servers']
|
if (int(server.get('id')) in self.config['ignore_servers']
|
||||||
or int(attrib.get('id')) in exclude):
|
or int(server.get('id')) in exclude):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
d = distance(self.lat_lon,
|
d = distance(self.lat_lon,
|
||||||
(float(attrib.get('lat')),
|
(float(server.get('lat')),
|
||||||
float(attrib.get('lon'))))
|
float(server.get('lon'))))
|
||||||
except Exception:
|
except Exception:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
attrib['d'] = d
|
server['d'] = d
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.servers[d].append(attrib)
|
self.servers[d].append(server)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self.servers[d] = [attrib]
|
self.servers[d] = [server]
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue