This program calculates up and downspeed of a given connection for as long as it is running.
#upspeed/downspeed indicator
#written by Chubak -> [email protected]
import requests
import time
import os
def get_seconds(datetime):
time = datetime.split(' ')[3].split(':')
time_hours = int(time[0])
time_minutes = int(time[1])
time_seconds = int(time[2])
return time_hours*360 + time_minutes*60 + time_seconds
def downspeed():
url = "http://speedtest.ftp.otenet.gr/files/test100k.db"
current_seconds = get_seconds(time.asctime())
file = requests.get(url)
headers = file.headers
file_size = int(headers['Content-Length'])/1000
dl_seconds = get_seconds(time.asctime())
time_difference = dl_seconds - current_seconds
return round(file_size / time_difference)
def upspeed():
current_seconds = get_seconds(time.asctime())
dummy_file = os.path.join(os.getenv('APPDATA'), 'dummy.txt')
post_url = 'http://httpbin.org/post'
with open(dummy_file, 'wb') as dummy:
for i in range (1500):
dummy.write(str.encode('This is a dummy text. Its sole propose is being uploaded to a server. '))
dummy.close()
files = {'file' : open(dummy_file, 'rb')}
request = requests.post(post_url, data=files)
headers = request.headers
file_size = int(headers['Content-Length'])/1000
dl_seconds = get_seconds(time.asctime())
time_difference = dl_seconds - current_seconds
return round(file_size / time_difference)
if __name__ == '__main__':
while True:
up = None
down = None
if up == None and down == None:
up = upspeed()
down = downspeed()
print('At {0} your Downspeed is: {1}, and your Upspeed is: {2}'.format(time.asctime(), down, up))
time.sleep(5)
up = None
down = None
I'd appreciate it if your dropped any hints about turning this into a desktop widget.
APPDATA
environment variable is required. \$\endgroup\$