mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-06 00:48:18 -07:00
Closes: https://bugs.gentoo.org/904968 Signed-off-by: Conrad Kostecki <conikost@gentoo.org>
89 lines
3.4 KiB
Diff
89 lines
3.4 KiB
Diff
diff --git a/speedtest.py b/speedtest.py
|
|
index a33296d..e7490b1 100755
|
|
--- a/speedtest.py
|
|
+++ b/speedtest.py
|
|
@@ -20,6 +20,7 @@ import re
|
|
import csv
|
|
import sys
|
|
import math
|
|
+import json
|
|
import errno
|
|
import signal
|
|
import socket
|
|
@@ -1250,10 +1251,7 @@ class Speedtest(object):
|
|
)
|
|
|
|
urls = [
|
|
- '://www.speedtest.net/speedtest-servers-static.php',
|
|
- 'http://c.speedtest.net/speedtest-servers-static.php',
|
|
- '://www.speedtest.net/speedtest-servers.php',
|
|
- 'http://c.speedtest.net/speedtest-servers.php',
|
|
+ "://www.speedtest.net/api/js/servers",
|
|
]
|
|
|
|
headers = {}
|
|
@@ -1296,53 +1294,31 @@ class Speedtest(object):
|
|
printer('Servers XML:\n%s' % serversxml, debug=True)
|
|
|
|
try:
|
|
- try:
|
|
- try:
|
|
- 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):
|
|
+ elements = json.loads(serversxml)
|
|
+ except SyntaxError:
|
|
raise ServersRetrievalError()
|
|
|
|
for server in elements:
|
|
- try:
|
|
- attrib = server.attrib
|
|
- except AttributeError:
|
|
- attrib = dict(list(server.attributes.items()))
|
|
-
|
|
- if servers and int(attrib.get('id')) not in servers:
|
|
+ if servers and int(server.get('id')) not in servers:
|
|
continue
|
|
|
|
- if (int(attrib.get('id')) in self.config['ignore_servers']
|
|
- or int(attrib.get('id')) in exclude):
|
|
+ if (int(server.get('id')) in self.config['ignore_servers']
|
|
+ or int(server.get('id')) in exclude):
|
|
continue
|
|
|
|
try:
|
|
d = distance(self.lat_lon,
|
|
- (float(attrib.get('lat')),
|
|
- float(attrib.get('lon'))))
|
|
+ (float(server.get('lat')),
|
|
+ float(server.get('lon'))))
|
|
except Exception:
|
|
continue
|
|
|
|
- attrib['d'] = d
|
|
+ server['d'] = d
|
|
|
|
try:
|
|
- self.servers[d].append(attrib)
|
|
+ self.servers[d].append(server)
|
|
except KeyError:
|
|
- self.servers[d] = [attrib]
|
|
+ self.servers[d] = [server]
|
|
|
|
break
|
|
|