Merge f11a21dd5b
into 20e5d12a5c
This commit is contained in:
commit
e7332f8fa3
42
speedtest.py
42
speedtest.py
|
@ -36,7 +36,7 @@ except ImportError:
|
||||||
gzip = None
|
gzip = None
|
||||||
GZIP_BASE = object
|
GZIP_BASE = object
|
||||||
|
|
||||||
__version__ = '1.0.7'
|
__version__ = '1.0.8'
|
||||||
|
|
||||||
|
|
||||||
class FakeShutdownEvent(object):
|
class FakeShutdownEvent(object):
|
||||||
|
@ -723,6 +723,19 @@ class SpeedtestResults(object):
|
||||||
writer.writerow([to_utf8(v) for v in row])
|
writer.writerow([to_utf8(v) for v in row])
|
||||||
return out.getvalue()
|
return out.getvalue()
|
||||||
|
|
||||||
|
def csvShare(self, delimiter=','):
|
||||||
|
"""Return data in CSV format"""
|
||||||
|
shareInfo = self.share()
|
||||||
|
data = self.dict()
|
||||||
|
out = StringIO()
|
||||||
|
writer = csv.writer(out, delimiter=delimiter, lineterminator='')
|
||||||
|
row = [data['server']['id'], data['server']['sponsor'],
|
||||||
|
data['server']['name'], data['timestamp'],
|
||||||
|
data['server']['d'], data['ping'], data['download'],
|
||||||
|
data['upload'], shareInfo]
|
||||||
|
writer.writerow([to_utf8(v) for v in row])
|
||||||
|
return out.getvalue()
|
||||||
|
|
||||||
def json(self, pretty=False):
|
def json(self, pretty=False):
|
||||||
"""Return data in JSON format"""
|
"""Return data in JSON format"""
|
||||||
|
|
||||||
|
@ -924,7 +937,7 @@ class Speedtest(object):
|
||||||
d = distance(self.lat_lon,
|
d = distance(self.lat_lon,
|
||||||
(float(attrib.get('lat')),
|
(float(attrib.get('lat')),
|
||||||
float(attrib.get('lon'))))
|
float(attrib.get('lon'))))
|
||||||
except:
|
except BaseException:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
attrib['d'] = d
|
attrib['d'] = d
|
||||||
|
@ -974,7 +987,7 @@ class Speedtest(object):
|
||||||
for ext in ['php', 'asp', 'aspx', 'jsp']:
|
for ext in ['php', 'asp', 'aspx', 'jsp']:
|
||||||
try:
|
try:
|
||||||
f = urlopen('%s/speedtest/upload.%s' % (url, ext))
|
f = urlopen('%s/speedtest/upload.%s' % (url, ext))
|
||||||
except:
|
except BaseException:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
data = f.read().strip().decode()
|
data = f.read().strip().decode()
|
||||||
|
@ -1224,6 +1237,18 @@ def csv_header(delimiter=','):
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
def csv_headerShare(delimiter=','):
|
||||||
|
"""Print the CSV Headers"""
|
||||||
|
|
||||||
|
row = ['Server ID', 'Sponsor', 'Server Name', 'Timestamp', 'Distance',
|
||||||
|
'Ping', 'Download', 'Upload', 'ShareURL']
|
||||||
|
out = StringIO()
|
||||||
|
writer = csv.writer(out, delimiter=delimiter, lineterminator='')
|
||||||
|
writer.writerow([to_utf8(v) for v in row])
|
||||||
|
print_(out.getvalue())
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
def parse_args():
|
def parse_args():
|
||||||
"""Function to handle building and parsing of command line arguments"""
|
"""Function to handle building and parsing of command line arguments"""
|
||||||
description = (
|
description = (
|
||||||
|
@ -1253,7 +1278,7 @@ def parse_args():
|
||||||
'output from --json or --csv')
|
'output from --json or --csv')
|
||||||
parser.add_argument('--share', action='store_true',
|
parser.add_argument('--share', action='store_true',
|
||||||
help='Generate and provide a URL to the speedtest.net '
|
help='Generate and provide a URL to the speedtest.net '
|
||||||
'share results image, not displayed with --csv')
|
'share results image')
|
||||||
parser.add_argument('--simple', action='store_true', default=False,
|
parser.add_argument('--simple', action='store_true', default=False,
|
||||||
help='Suppress verbose output, only show basic '
|
help='Suppress verbose output, only show basic '
|
||||||
'information')
|
'information')
|
||||||
|
@ -1265,7 +1290,8 @@ def parse_args():
|
||||||
help='Single character delimiter to use in CSV '
|
help='Single character delimiter to use in CSV '
|
||||||
'output. Default ","')
|
'output. Default ","')
|
||||||
parser.add_argument('--csv-header', action='store_true', default=False,
|
parser.add_argument('--csv-header', action='store_true', default=False,
|
||||||
help='Print CSV headers')
|
help='Print CSV headers, add --share if you intend '
|
||||||
|
'on that output format')
|
||||||
parser.add_argument('--json', action='store_true', default=False,
|
parser.add_argument('--json', action='store_true', default=False,
|
||||||
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 '
|
||||||
|
@ -1356,7 +1382,9 @@ def shell():
|
||||||
if len(args.csv_delimiter) != 1:
|
if len(args.csv_delimiter) != 1:
|
||||||
raise SpeedtestCLIError('--csv-delimiter must be a single character')
|
raise SpeedtestCLIError('--csv-delimiter must be a single character')
|
||||||
|
|
||||||
if args.csv_header:
|
if args.csv_header and args.share:
|
||||||
|
csv_headerShare(args.csv_delimiter)
|
||||||
|
elif args.csv_header:
|
||||||
csv_header(args.csv_delimiter)
|
csv_header(args.csv_delimiter)
|
||||||
|
|
||||||
validate_optional_args(args)
|
validate_optional_args(args)
|
||||||
|
@ -1482,6 +1510,8 @@ def shell():
|
||||||
args.units[0],
|
args.units[0],
|
||||||
(results.upload / 1000.0 / 1000.0) / args.units[1],
|
(results.upload / 1000.0 / 1000.0) / args.units[1],
|
||||||
args.units[0]))
|
args.units[0]))
|
||||||
|
elif args.csv and args.share:
|
||||||
|
print_(results.csvShare(delimiter=args.csv_delimiter))
|
||||||
elif args.csv:
|
elif args.csv:
|
||||||
print_(results.csv(delimiter=args.csv_delimiter))
|
print_(results.csv(delimiter=args.csv_delimiter))
|
||||||
elif args.json:
|
elif args.json:
|
||||||
|
|
Loading…
Reference in New Issue