33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
|
import speedtest
|
||
|
|
||
|
from jarvis.skills import Skill, SkillRegistering
|
||
|
from jarvis.skills.decorators import intent_file_handler
|
||
|
|
||
|
|
||
|
class SpeedTestSkill(Skill, metaclass=SkillRegistering):
|
||
|
def __init__(self, data=dict):
|
||
|
super().__init__("SpeedTestSkill", data)
|
||
|
|
||
|
@intent_file_handler("start_speedtest.intent", "StartSpeedTestIntent")
|
||
|
def handle_speedtest(self, data):
|
||
|
try:
|
||
|
self.speak_dialog('starting_speedtest')
|
||
|
|
||
|
speed = speedtest.Speedtest()
|
||
|
# speed.get_servers([])
|
||
|
speed.get_best_server()
|
||
|
speed.download()
|
||
|
speed.upload(pre_allocate=False)
|
||
|
# speed.results.share()
|
||
|
result = speed.results.dict()
|
||
|
down_speed = ('%.2f' % float((result["download"]) / 1000000))
|
||
|
up_speed = ('%.2f' % float((result["upload"]) / 1000000))
|
||
|
|
||
|
self.speak_dialog('result', {'DOWN': down_speed, 'UP': up_speed})
|
||
|
except:
|
||
|
self.speak_dialog("error")
|
||
|
|
||
|
|
||
|
def create_skill(data):
|
||
|
return SpeedTestSkill(data)
|