baqarhussain commited on
Commit
54c8305
·
verified ·
1 Parent(s): 925d24c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -7
app.py CHANGED
@@ -1,23 +1,33 @@
1
  import streamlit as st
2
  import speedtest
3
  import plotly.graph_objects as go
 
4
 
5
- # Function to get the speed
6
  def get_speed():
7
  st.spinner("Testing your internet speed...")
8
  speed_test = speedtest.Speedtest() # Initialize Speedtest instance
9
-
10
- # Get the best server based on ping (you can also specify a server if needed)
11
  speed_test.get_best_server()
12
 
13
- # Download and upload speeds in Mbps
14
- download_speed = speed_test.download() / 1_000_000 # Convert to Mbps
15
- upload_speed = speed_test.upload() / 1_000_000 # Convert to Mbps
 
 
 
 
 
 
 
 
 
16
 
17
  # Optionally, add latency information for a more detailed report
18
  ping = speed_test.results.ping
19
 
20
- return download_speed, upload_speed, ping
21
 
22
  # Function to visualize the speed in a circular gauge with a pointer
23
  def plot_speedometer(speed, speed_type):
 
1
  import streamlit as st
2
  import speedtest
3
  import plotly.graph_objects as go
4
+ import time
5
 
6
+ # Function to get the best server and calculate average download/upload speeds
7
  def get_speed():
8
  st.spinner("Testing your internet speed...")
9
  speed_test = speedtest.Speedtest() # Initialize Speedtest instance
10
+
11
+ # Get the best server based on ping
12
  speed_test.get_best_server()
13
 
14
+ # Run the speed test multiple times to average the results
15
+ download_speeds = []
16
+ upload_speeds = []
17
+
18
+ for _ in range(3): # Run the test 3 times for better accuracy
19
+ download_speeds.append(speed_test.download() / 1_000_000) # Convert to Mbps
20
+ upload_speeds.append(speed_test.upload() / 1_000_000) # Convert to Mbps
21
+ time.sleep(1) # Adding a small delay between tests to avoid network congestion
22
+
23
+ # Average the results for more accuracy
24
+ avg_download_speed = sum(download_speeds) / len(download_speeds)
25
+ avg_upload_speed = sum(upload_speeds) / len(upload_speeds)
26
 
27
  # Optionally, add latency information for a more detailed report
28
  ping = speed_test.results.ping
29
 
30
+ return avg_download_speed, avg_upload_speed, ping
31
 
32
  # Function to visualize the speed in a circular gauge with a pointer
33
  def plot_speedometer(speed, speed_type):