Chcete v reálnom čase sledovať svoj ping ? Na internete nájdeme rôzne aplikácie … spĺňajú však naše predstavy ? Napíšme si svoju vlastnú !

V dnešnom kódo-článku sa pozrieme na okomentovaný kód z programovacieho jazyka Python. Môžete si ho stiahnuť z GitHub-u 👍✔

Čo robí tento kód ? V cykle dokola testuje vaše internetové pripojenie na rýchlosť. V prípade, že sa vyskytne nárast odozvy internetu, zapípa a zapíše do premennej iMax alebo iMid hodnoty. Na začiatku si môžeme nastaviť hodnoty premenných, na základe ktorých cyklus bude vyhodnocovať, či sú prekročené. Keď program zapípa 2x, dá vám vedieť, že môžete očakávať spomalenú reakciu. Hodí sa to najmä v hrách, keď si pustíte skript popri hre a viete, že keď zapípa, pravdepodobne to, kam ste sa pohli, server nezaregistruje a budete tak musieť spraviť znova. Na konci behu 500 opakovaní vám program v prípade, že našiel veľa maximálnych hodnôt pingu, oznámi, že internet v danej chvíli nie je veľmi vhodný na používanie pre hry. Tento kód si samozrejme môžete uspôsobiť podľa seba, tak, aby vyhovoval vašim predstavám 👍 . Pre správne fungovanie je potrebné použiť nástroj pip, ktorý je balený vo väčšine prípadov priamo s knižnicami pythonu a nainštalovať knižnice pre meranie odozvy „pythonping“ (príkaz: pip install pythonping). Zvyšné by malo byť už prítomné v základných balíčkoch 🙂 .

Kód

# Import knižníc na ping, farbu terminálového textu a merania času, taktiež winsound pre pípanie
from pythonping import ping
from termcolor import colored
from datetime import datetime
import winsound

# Nastavenie minimálnej a maximálnej hodnoty pingu, pri ktorej program zapípa a zapíše zvýšenie do počítadla
Min = 50
Max = 100

# Vynulovanie premenných pred začiatkom započítavania, tieto slúžia ako počítadlo samostatne pre max a mid hodnoty
i=0
#iMin = 0
iMid = 0
iMax = 0

# Cyklus while, ktorý beží cyklicky donekonečna
while(True):
    # Získavame aktuálny dátum a čas
    now = datetime.now()
    current_time = now.strftime("%H:%M:%S -> ")
    
    # Pričítavanie do počítadla cyklov, po 500 opakovaniach sa resetuje
    i+=1

    # Tu bude uložená hodnota pingu
    response_list = ping('google.com', size=40, count=10)

    # Ak ping (odozva) presiahol minimálnu hodnotu (0, čiže vždy), zapíše na obrazovku ping zelenou farbou, máme
    # pripravené
    # pípnutie, ak by niekto mal záujem obrátiť logiku a prestať pípať, vtedy, keď ping vyskočí, čo sa môže v tomto 
    # algoritme hodiť viac pri hrách
    if(response_list.rtt_avg_ms<Min):
        print("[{}]".format(i),current_time,"Ping is: ",colored(response_list.rtt_avg_ms, 'green'),"ms")
        #winsound.Beep(2500, 50)
        #iMin+=1

    # Ak ping presiahol min hodnotu ale zároveň nedosiahol max, zapíše ping žltou farbou a raz pípne, pričíta do 
    # počítadla iMid pre finálne vyhodnotenie
    elif(response_list.rtt_avg_ms<Max and response_list.rtt_avg_ms>=Min):
        print("[{}]".format(i),current_time,"Ping is: ",colored(response_list.rtt_avg_ms, 'yellow'),"ms")
        winsound.Beep(2000, 50)
        iMid+=1

    # Ak ping presiahne maximálnu hodnotu, zapípa 2x, zapíše červenou
    elif(response_list.rtt_avg_ms>=Max):
        print("[{}]".format(i),current_time,"Ping is: ",colored(response_list.rtt_avg_ms, 'red'),"ms")
        winsound.Beep(2200, 25)
        winsound.Beep(2200, 25)
        iMax+=1

    # Keď cyklus dosiahne počet opakovaní 500, resetuje počítadlá
    if(i>=500):
        # Ak hodnôt presahujúcich max bolo viac ako 20 alebo presahujúcich mid viac ako 50, vypíše, že náš internet nie je 
        # momentálne vhodný pre využitie v hrách, spýta sa, či má opakovať test, ak užívateľ zadá 1, pokračuje, inak končí
        if(iMax>20 or iMid>50):
            print(colored("Internet is not ready for gaming","red"))
            x = input("Do you want to repeat test ? 1 - continue, 0 - stop")
            if(x==1):
                iMax=0
                iMid=0
                i=0
            else:
                break

        # Ak je odozva v poriadku a neprekročil nami dané limity, pokračuje v testovaní, vypíše počet max a mid zápisov
        else:
            print(colored("Mid: {} Max: {}".format(iMid,iMax),"green"))
            iMax=0
            iMid=0
            i=0
Tags:

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *