Add speedtest mini support
This commit is contained in:
parent
d9cd9c8562
commit
e5935b7400
|
@ -26,6 +26,7 @@ import os
|
|||
import sys
|
||||
import threading
|
||||
import binascii
|
||||
import re
|
||||
from xml.dom import minidom as DOM
|
||||
|
||||
try:
|
||||
|
@ -33,6 +34,11 @@ try:
|
|||
except ImportError:
|
||||
from queue import Queue
|
||||
|
||||
try:
|
||||
from urlparse import urlparse
|
||||
except ImportError:
|
||||
from urllib.parse import urlparse
|
||||
|
||||
try:
|
||||
from urlparse import parse_qs
|
||||
except ImportError:
|
||||
|
@ -51,7 +57,6 @@ try:
|
|||
except ImportError:
|
||||
from optparse import OptionParser as ArgParser
|
||||
|
||||
|
||||
try:
|
||||
import builtins
|
||||
except ImportError:
|
||||
|
@ -362,6 +367,7 @@ def speedtest():
|
|||
help='Display a list of speedtest.net servers '
|
||||
'sorted by distance')
|
||||
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()
|
||||
if isinstance(options, tuple):
|
||||
|
@ -402,6 +408,37 @@ def speedtest():
|
|||
except IndexError:
|
||||
print_('Invalid server ID')
|
||||
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:
|
||||
if not args.simple:
|
||||
print_('Selecting best server based on ping...')
|
||||
|
@ -438,7 +475,10 @@ def speedtest():
|
|||
print_()
|
||||
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))
|
||||
ping = int(round(best['latency'], 0))
|
||||
ulspeedk = int(round((ulspeed / 1000) * 8, 0))
|
||||
|
|
Loading…
Reference in New Issue