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 re
import json
import csv
import sys
import math
@ -1224,10 +1225,12 @@ class Speedtest(object):
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
to servers matching those specified in the ``servers`` argument
"""
if servers_json is None:
if servers is None:
servers = []
@ -1347,9 +1350,14 @@ class Speedtest(object):
if (servers or exclude) and not self.servers:
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
def set_mini_server(self, server):
"""Instead of querying for a list of servers, set a link to a
speedtest mini server
@ -1744,6 +1752,8 @@ def parse_args():
help='Suppress verbose output, only show basic '
'information in JSON format. Speeds listed in '
'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',
help='Display a list of speedtest.net servers '
'sorted by distance')
@ -1903,7 +1913,7 @@ def shell():
if not args.mini:
printer('Retrieving speedtest.net server list...', quiet)
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:
raise SpeedtestCLIError(
'No matched servers: %s' %