From 4aca699e13eb9ca03686a6ffc0c635bdc62abb2b Mon Sep 17 00:00:00 2001 From: ClF3 Date: Mon, 22 Jan 2024 15:58:22 +0800 Subject: [PATCH] first commit --- .gitignore | 4 +++ main.py | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 .gitignore create mode 100644 main.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f441848 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.png +*.jpg +*.bmp +*.jpeg \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..b4f661a --- /dev/null +++ b/main.py @@ -0,0 +1,73 @@ +import cv2 +import numpy as np +import urllib.request +from datetime import datetime +recent=[] +history=[] +width=720 +height=100 +red=(0x00,0x00,0xff) +orange=(0x00,0x66,0xff) +yellow=(0x00,0xcc,0xff) +light_green=(0x33,0xff,0xcc) +green=(0x00,0xcc,0x00) +def update_history(): + average=0 + for i in recent: + average+=i + average/=len(recent) + if len(history)>=144: + del(history[0]) + history.append(average) +def fill(img,pos,color): + for i in range(5): + for j in range(100): + img[j,i+5*pos,:]=[color[0]%256,color[1]%256,color[2]%256] +def update_graph(): + img=np.ones([height,width,3],dtype=np.uint8) + for i,delay in enumerate(history): + if delay>=5000: + fill(img,i,red) + elif delay>=2000: + fill(img,i,orange) + elif delay>=1000: + fill(img,i,yellow) + elif delay>=500: + fill(img,i,light_green) + else: + fill(img,i,green) + cv2.imwrite("image.bmp", img) + + + +def testConnect(url): + try: + time1=datetime.now().timestamp() + code=urllib.request.urlopen(url,timeout=5).getcode() + time2=datetime.now().timestamp() + delay=int((time2-time1)*1000) + except: + code=404 + if code/100>=4: + delay=10000 + return (code,delay) + +if __name__=="__main__": + lastminute=-1 + while True: + if datetime.now().second==0 and datetime.now().minute!=lastminute: + # if True: + (code,delay)=testConnect("https://blog.clf3.org") + print(code,end=" ") + if code/100<=3: + print("connected",delay,"ms") + else: + print("error") + if len(recent)<10: + recent.append(delay) + else: + update_history() + update_graph() + recent=[] + recent.append(delay) + lastminute=datetime.now().minute \ No newline at end of file