This commit is contained in:
VisualPlugin 2024-10-16 02:39:41 +00:00 committed by GitHub
commit 44bb7c036f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 59 additions and 50 deletions

View File

@ -17,7 +17,7 @@ speedtest.net
Versions
--------
speedtest-cli works with Python 2.4-3.7
speedtest-cli works with Python 2.4-3.12
.. image:: https://img.shields.io/pypi/pyversions/speedtest-cli.svg
:target: https://pypi.python.org/pypi/speedtest-cli/
@ -75,54 +75,37 @@ Usage
::
$ speedtest-cli -h
usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes]
[--share] [--simple] [--csv]
[--csv-delimiter CSV_DELIMITER] [--csv-header] [--json]
[--list] [--server SERVER] [--exclude EXCLUDE]
[--mini MINI] [--source SOURCE] [--timeout TIMEOUT]
[--secure] [--no-pre-allocate] [--version]
Command line interface for testing internet bandwidth using speedtest.net.
--------------------------------------------------------------------------
usage: speedtest.py [-h] [--no-download] [--no-upload] [--single] [--bytes] [--units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}] [--share]
[--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI]
[--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version]
Command line interface for testing internet bandwidth using speedtest.net. --------------------------------------------------------------------------
https://github.com/sivel/speedtest-cli
optional arguments:
options:
-h, --help show this help message and exit
--no-download Do not perform download test
--no-upload Do not perform upload test
--single Only use a single connection instead of multiple. This
simulates a typical file transfer.
--bytes Display values in bytes instead of bits. Does not
affect the image generated by --share, nor output from
--json or --csv
--share Generate and provide a URL to the speedtest.net share
results image, not displayed with --csv
--single Only use a single connection instead of multiple. This simulates a typical file transfer.
--bytes Display values in bytes instead of bits. Does not affect the image generated by --share, nor output from --json or --csv
--units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}
Determines which units to display values in. Does not affect the image generated by --share, nor output from --json or --csv
--share Generate and provide a URL to the speedtest.net share results image, not displayed with --csv
--simple Suppress verbose output, only show basic information
--csv Suppress verbose output, only show basic information
in CSV format. Speeds listed in bit/s and not affected
by --bytes
--csv Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by --bytes or --units
--csv-delimiter CSV_DELIMITER
Single character delimiter to use in CSV output.
Default ","
Single character delimiter to use in CSV output. Default ","
--csv-header Print CSV headers
--json Suppress verbose output, only show basic information
in JSON format. Speeds listed in bit/s and not
affected by --bytes
--list Display a list of speedtest.net servers sorted by
distance
--server SERVER Specify a server ID to test against. Can be supplied
multiple times
--exclude EXCLUDE Exclude a server from selection. Can be supplied
multiple times
--json Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected by --bytes or --units
--list Display a list of speedtest.net servers sorted by distance
--server SERVER Specify a server ID to test against. Can be supplied multiple times
--exclude EXCLUDE Exclude a server from selection. Can be supplied multiple times
--mini MINI URL of the Speedtest Mini server
--source SOURCE Source IP address to bind to
--timeout TIMEOUT HTTP timeout in seconds. Default 10
--secure Use HTTPS instead of HTTP when communicating with
speedtest.net operated servers
--no-pre-allocate Do not pre allocate upload data. Pre allocation is
enabled by default to improve upload performance. To
support systems with insufficient memory, use this
option to avoid a MemoryError
--secure Use HTTPS instead of HTTP when communicating with speedtest.net operated servers
--no-pre-allocate Do not pre allocate upload data. Pre allocation is enabled by default to improve upload performance. To support systems with
insufficient memory, use this option to avoid a MemoryError
--version Show the version number and exit

View File

@ -59,6 +59,18 @@ PY25PLUS = sys.version_info[:2] >= (2, 5)
PY26PLUS = sys.version_info[:2] >= (2, 6)
PY32PLUS = sys.version_info[:2] >= (3, 2)
PY310PLUS = sys.version_info[:2] >= (3, 10)
SIZEMAP = {
"Mibyte": 8. * 1024 * 1024,
"Mbyte": 8. * 1000 * 1000,
"Mibit": 1. * 1024 * 1024,
"Mbit": 1. * 1000 * 1000,
"Kibyte": 8. * 1024,
"Kbyte": 8. * 1000,
"Kibit": 1. * 1024,
"Kbit": 1. * 1000,
"byte": 8.,
"bit": 1.,
}
# Begin import game to handle Python 2 and Python 3
try:
@ -957,7 +969,7 @@ class SpeedtestResults(object):
self.client = client or {}
self._share = None
self.timestamp = '%sZ' % datetime.datetime.utcnow().isoformat()
self.timestamp = '%sZ' % datetime.datetime.now(datetime.UTC).isoformat()
self.bytes_received = 0
self.bytes_sent = 0
@ -1733,11 +1745,14 @@ def parse_args():
help='Only use a single connection instead of '
'multiple. This simulates a typical file '
'transfer.')
parser.add_argument('--bytes', dest='units', action='store_const',
const=('byte', 8), default=('bit', 1),
parser.add_argument('--bytes', default=False, action='store_true',
help='Display values in bytes instead of bits. Does '
'not affect the image generated by --share, nor '
'output from --json or --csv')
parser.add_argument('--units', choices=tuple(SIZEMAP),
help='Determines which units to display values in. Does '
'not affect the image generated by --share, nor '
'output from --json or --csv')
parser.add_argument('--share', action='store_true',
help='Generate and provide a URL to the speedtest.net '
'share results image, not displayed with --csv')
@ -1747,7 +1762,7 @@ def parse_args():
parser.add_argument('--csv', action='store_true', default=False,
help='Suppress verbose output, only show basic '
'information in CSV format. Speeds listed in '
'bit/s and not affected by --bytes')
'bit/s and not affected by --bytes or --units')
parser.add_argument('--csv-delimiter', default=',', type=PARSER_TYPE_STR,
help='Single character delimiter to use in CSV '
'output. Default ","')
@ -1756,7 +1771,7 @@ def parse_args():
parser.add_argument('--json', action='store_true', default=False,
help='Suppress verbose output, only show basic '
'information in JSON format. Speeds listed in '
'bit/s and not affected by --bytes')
'bit/s and not affected by --bytes or --units')
parser.add_argument('--list', action='store_true',
help='Display a list of speedtest.net servers '
'sorted by distance')
@ -1850,6 +1865,10 @@ def shell():
raise SpeedtestCLIError('Cannot supply both --no-download and '
'--no-upload')
if args.bytes and args.units:
raise SpeedtestCLIError('Cannot supply both --bytes and '
'--units')
if len(args.csv_delimiter) != 1:
raise SpeedtestCLIError('--csv-delimiter must be a single character')
@ -1864,6 +1883,13 @@ def shell():
if debug:
DEBUG = True
if args.bytes:
units = 'Mbyte'
elif args.units:
units = args.units
else:
units = 'Mbit'
if args.simple or args.csv or args.json:
quiet = True
else:
@ -1951,9 +1977,9 @@ def shell():
callback=callback,
threads=(None, 1)[args.single]
)
printer('Download: %0.2f M%s/s' %
((results.download / 1000.0 / 1000.0) / args.units[1],
args.units[0]),
printer('Download: %0.2f %s/s' %
(results.download / SIZEMAP[units],
units),
quiet)
else:
printer('Skipping download test', quiet)
@ -1966,9 +1992,9 @@ def shell():
pre_allocate=args.pre_allocate,
threads=(None, 1)[args.single]
)
printer('Upload: %0.2f M%s/s' %
((results.upload / 1000.0 / 1000.0) / args.units[1],
args.units[0]),
printer('Upload: %0.2f %s/s' %
(results.upload / SIZEMAP[units],
units),
quiet)
else:
printer('Skipping upload test', quiet)