Add speedtest mini support
This commit is contained in:
parent
d9cd9c8562
commit
e5935b7400
|
@ -26,6 +26,7 @@ import os
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import binascii
|
import binascii
|
||||||
|
import re
|
||||||
from xml.dom import minidom as DOM
|
from xml.dom import minidom as DOM
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -33,6 +34,11 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
|
|
||||||
|
try:
|
||||||
|
from urlparse import urlparse
|
||||||
|
except ImportError:
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from urlparse import parse_qs
|
from urlparse import parse_qs
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -51,7 +57,6 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from optparse import OptionParser as ArgParser
|
from optparse import OptionParser as ArgParser
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import builtins
|
import builtins
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -362,6 +367,7 @@ def speedtest():
|
||||||
help='Display a list of speedtest.net servers '
|
help='Display a list of speedtest.net servers '
|
||||||
'sorted by distance')
|
'sorted by distance')
|
||||||
parser.add_argument('--server', help='Specify a server ID to test against')
|
parser.add_argument('--server', help='Specify a server ID to test against')
|
||||||
|
parser.add_argument('--mini', help='URL of the Speedtest Mini server')
|
||||||
|
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
if isinstance(options, tuple):
|
if isinstance(options, tuple):
|
||||||
|
@ -402,6 +408,37 @@ def speedtest():
|
||||||
except IndexError:
|
except IndexError:
|
||||||
print_('Invalid server ID')
|
print_('Invalid server ID')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
if args.mini:
|
||||||
|
name, ext = os.path.splitext(args.mini)
|
||||||
|
if ext:
|
||||||
|
url = os.path.dirname(args.mini)
|
||||||
|
else:
|
||||||
|
url = args.mini
|
||||||
|
urlparts = urlparse(url)
|
||||||
|
try:
|
||||||
|
f = urlopen(args.mini)
|
||||||
|
except:
|
||||||
|
print_('Invalid Speedtest Mini URL')
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
text = f.read()
|
||||||
|
f.close()
|
||||||
|
extension = re.findall('upload_extension: "([^"]+)"', text.decode())
|
||||||
|
if not urlparts or not extension:
|
||||||
|
print_('Please provide the full URL of your Speedtest Mini server')
|
||||||
|
sys.exit(1)
|
||||||
|
servers = [{
|
||||||
|
'sponsor': 'Speedtest Mini',
|
||||||
|
'name': urlparts[1],
|
||||||
|
'd': 0,
|
||||||
|
'url': '%s/speedtest/upload.%s' % (url.rstrip('/'), extension[0]),
|
||||||
|
'latency': 0,
|
||||||
|
'id': 0
|
||||||
|
}]
|
||||||
|
try:
|
||||||
|
best = getBestServer(servers)
|
||||||
|
except:
|
||||||
|
best = servers[0]
|
||||||
else:
|
else:
|
||||||
if not args.simple:
|
if not args.simple:
|
||||||
print_('Selecting best server based on ping...')
|
print_('Selecting best server based on ping...')
|
||||||
|
@ -438,7 +475,10 @@ def speedtest():
|
||||||
print_()
|
print_()
|
||||||
print_('Upload: %0.2f Mbit/s' % ((ulspeed / 1000 / 1000) * 8))
|
print_('Upload: %0.2f Mbit/s' % ((ulspeed / 1000 / 1000) * 8))
|
||||||
|
|
||||||
if args.share:
|
if args.share and args.mini:
|
||||||
|
print_('Cannot generate a speedtest.net share results image while '
|
||||||
|
'testing against a Speedtest Mini server')
|
||||||
|
elif args.share:
|
||||||
dlspeedk = int(round((dlspeed / 1000) * 8, 0))
|
dlspeedk = int(round((dlspeed / 1000) * 8, 0))
|
||||||
ping = int(round(best['latency'], 0))
|
ping = int(round(best['latency'], 0))
|
||||||
ulspeedk = int(round((ulspeed / 1000) * 8, 0))
|
ulspeedk = int(round((ulspeed / 1000) * 8, 0))
|
||||||
|
|
Loading…
Reference in New Issue