This commit is contained in:
kingy444 2017-11-22 07:16:08 +00:00 committed by GitHub
commit e7332f8fa3
1 changed files with 36 additions and 6 deletions

View File

@ -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: