Added static option for static server list

This commit is contained in:
Nils Gerke 2020-10-30 09:51:35 +01:00
parent c58ad3367b
commit 67985db684
1 changed files with 108 additions and 98 deletions

View File

@ -17,6 +17,7 @@
import os import os
import re import re
import json
import csv import csv
import sys import sys
import math import math
@ -1224,10 +1225,12 @@ class Speedtest(object):
return self.config return self.config
def get_servers(self, servers=None, exclude=None): def get_servers(self, servers=None, exclude=None, servers_json=None):
"""Retrieve a the list of speedtest.net servers, optionally filtered """Retrieve a the list of speedtest.net servers, optionally filtered
to servers matching those specified in the ``servers`` argument to servers matching those specified in the ``servers`` argument
""" """
if servers_json is None:
if servers is None: if servers is None:
servers = [] servers = []
@ -1347,9 +1350,14 @@ class Speedtest(object):
if (servers or exclude) and not self.servers: if (servers or exclude) and not self.servers:
raise NoMatchedServers() raise NoMatchedServers()
else:
printer('Loading Servers from:\n%s' % servers_json, debug=True)
with open(servers_json) as json_file:
self.servers = json.load(json_file)
return self.servers return self.servers
def set_mini_server(self, server): def set_mini_server(self, server):
"""Instead of querying for a list of servers, set a link to a """Instead of querying for a list of servers, set a link to a
speedtest mini server speedtest mini server
@ -1744,6 +1752,8 @@ def parse_args():
help='Suppress verbose output, only show basic ' help='Suppress verbose output, only show basic '
'information in JSON format. Speeds listed in ' 'information in JSON format. Speeds listed in '
'bit/s and not affected by --bytes') 'bit/s and not affected by --bytes')
parser.add_argument('--load-servers-from-json', dest='servers_json', type=PARSER_TYPE_STR,
help='Serverlist for static testing in json Format')
parser.add_argument('--list', action='store_true', parser.add_argument('--list', action='store_true',
help='Display a list of speedtest.net servers ' help='Display a list of speedtest.net servers '
'sorted by distance') 'sorted by distance')
@ -1903,7 +1913,7 @@ def shell():
if not args.mini: if not args.mini:
printer('Retrieving speedtest.net server list...', quiet) printer('Retrieving speedtest.net server list...', quiet)
try: try:
speedtest.get_servers(servers=args.server, exclude=args.exclude) speedtest.get_servers(servers=args.server, exclude=args.exclude, servers_json=args.servers_json)
except NoMatchedServers: except NoMatchedServers:
raise SpeedtestCLIError( raise SpeedtestCLIError(
'No matched servers: %s' % 'No matched servers: %s' %