Added CSV mode
This commit is contained in:
parent
72da41e4fc
commit
b0257ba12a
|
@ -91,6 +91,7 @@ Usage
|
||||||
--mini MINI URL of the Speedtest Mini server
|
--mini MINI URL of the Speedtest Mini server
|
||||||
--source SOURCE Source IP address to bind to
|
--source SOURCE Source IP address to bind to
|
||||||
--timeout TIMEOUT HTTP timeout in seconds. Default 10
|
--timeout TIMEOUT HTTP timeout in seconds. Default 10
|
||||||
|
--csv CSV Write output to CSV file
|
||||||
--version Show the version number and exit
|
--version Show the version number and exit
|
||||||
|
|
||||||
Inconsistency
|
Inconsistency
|
||||||
|
|
|
@ -58,6 +58,12 @@ URL of the Speedtest Mini server
|
||||||
Source IP address to bind to
|
Source IP address to bind to
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
|
\fB\-\-csv CSV\fR
|
||||||
|
.RS
|
||||||
|
CSV file to write to
|
||||||
|
.RE
|
||||||
|
|
||||||
|
|
||||||
\fB\-\-version\fR
|
\fB\-\-version\fR
|
||||||
.RS
|
.RS
|
||||||
Show the version number and exit
|
Show the version number and exit
|
||||||
|
|
|
@ -23,6 +23,8 @@ import signal
|
||||||
import socket
|
import socket
|
||||||
import timeit
|
import timeit
|
||||||
import threading
|
import threading
|
||||||
|
import csv
|
||||||
|
import datetime
|
||||||
|
|
||||||
__version__ = '0.3.2'
|
__version__ = '0.3.2'
|
||||||
|
|
||||||
|
@ -547,6 +549,7 @@ def speedtest():
|
||||||
parser.add_argument('--source', help='Source IP address to bind to')
|
parser.add_argument('--source', help='Source IP address to bind to')
|
||||||
parser.add_argument('--timeout', default=10, type=int,
|
parser.add_argument('--timeout', default=10, type=int,
|
||||||
help='HTTP timeout in seconds. Default 10')
|
help='HTTP timeout in seconds. Default 10')
|
||||||
|
parser.add_argument('--csv', help='Add data to file using csv format')
|
||||||
parser.add_argument('--version', action='store_true',
|
parser.add_argument('--version', action='store_true',
|
||||||
help='Show the version number and exit')
|
help='Show the version number and exit')
|
||||||
|
|
||||||
|
@ -703,6 +706,39 @@ def speedtest():
|
||||||
print_('Upload: %0.2f M%s/s' %
|
print_('Upload: %0.2f M%s/s' %
|
||||||
((ulspeed / 1000 / 1000) * args.units[1], args.units[0]))
|
((ulspeed / 1000 / 1000) * args.units[1], args.units[0]))
|
||||||
|
|
||||||
|
if args.csv:
|
||||||
|
filename = args.csv
|
||||||
|
file_exists = os.path.isfile(filename)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(filename, 'ab+') as csvfile:
|
||||||
|
|
||||||
|
headers = ['Test server', 'Date/Time', 'Latency (ms)',
|
||||||
|
'Dowload Speed (Kb/s)', 'Upload Speed (Kb/s)']
|
||||||
|
csvwriter = csv.DictWriter(csvfile, delimiter=';',
|
||||||
|
lineterminator='\n',fieldnames=headers)
|
||||||
|
|
||||||
|
server = '%(sponsor)s (%(name)s) [%(d)0.2f km]' % best
|
||||||
|
current_time = datetime.datetime.now().isoformat()
|
||||||
|
dlspeedk = int(round((dlspeed / 1000) * 8, 0))
|
||||||
|
ping = float(round(best['latency'], 2))
|
||||||
|
ulspeedk = int(round((ulspeed / 1000) * 8, 0))
|
||||||
|
|
||||||
|
|
||||||
|
if not file_exists:
|
||||||
|
csvwriter.writeheader()
|
||||||
|
|
||||||
|
csvwriter.writerow({'Test server': server,
|
||||||
|
'Date/Time': current_time,
|
||||||
|
'Latency': ping,
|
||||||
|
'Dowload Speed (Kb/s)': dlspeedk,
|
||||||
|
'Upload Speed (Kb/s)': ulspeedk
|
||||||
|
})
|
||||||
|
csvfile.close()
|
||||||
|
except IOError:
|
||||||
|
print_("Unable to write CSV file")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if args.share and args.mini:
|
if args.share and args.mini:
|
||||||
print_('Cannot generate a speedtest.net share results image while '
|
print_('Cannot generate a speedtest.net share results image while '
|
||||||
'testing against a Speedtest Mini server')
|
'testing against a Speedtest Mini server')
|
||||||
|
|
Loading…
Reference in New Issue