py-speedtest: проверь скорость интернета

py-speedtest: проверь скорость интернета

  • mdo  Admin
  •   Туториал
  •   Октябрь 12, 2024

Хотите узнать, насколько быстро работает ваш интернет? В этой статье мы рассмотрим простую программу на Python, которая поможет вам проверить скорость загрузки и отправки данных.

Мы узнаем, как клонировать проект из GitHub, установить необходимые пакеты и запустить программу. Также мы рассмотрим некоторые полезные опции и особенности тестирования скорости Интернета.

1. Создание виртуальной среды:

• Откройте терминал или командную строку.

• Перейдите в директорию, где вы хотите создать виртуальную среду (например, в папку проекта).

• Используйте команду python3 -m venv .venv, чтобы создать виртуальную среду с именем .venv:

$ python -m venv .venv

2. Активация виртуальной среды:

•  Активируйте  виртуальную  среду,  используя  команду  source .venv/bin/activate  (для  Linux/macOS)  или  .venv\Scripts\activate  (для  Windows):

$ source .venv/bin/activate

3. Клонирование репозитория:

• Используйте команду  git clone https://github.com/yanik-v86/py-speedtest.git, чтобы  клонировать репозиторий на ваш компьютер:

$ git clone https://github.com/yanik-v86/py-speedtest.git

4. Переход в директорию проекта:

• Перейдите в  директорию  клонированного  проекта:

$ cd py-speedtest

5. Установка зависимостей:

• Установите  необходимые  пакеты,  используя  pip:

$ pip install -r requirements.txt

6. Запуск программы:

• Запустите  программу  speedtest.py  с  помощью  python:

$  python speedtest.py

7. Выход из виртуальной среды:

•  После  завершения  работы  с  проектом  вы  можете  выйти  из  виртуальной  среды  с  помощью  команды  deactivate.

Пример вывода:

   [Начало проверки] 2024-10-12 00:25:07
 [Скорость загрузки] 74.80 Мбит/с
 [Скорость выгрузки] 42.53 Мбит/с
              [Пинг] 41.27 мс
    [Конец проверки] 2024-10-12 00:25:31

   [Начало проверки] 2024-10-12 00:26:31
 [Скорость загрузки] 72.22 Мбит/с
 [Скорость выгрузки] 42.83 Мбит/с
              [Пинг] 18.268 мс
    [Конец проверки] 2024-10-12 00:26:53

Важно:

•  Для  корректной  работы  программы  необходимо  иметь  установленное  соединение  с  Интернетом.

•  Скорость  Интернета  может  изменяться  в  зависимости  от  времени  дня,  нагрузки  на  сеть  и  других  факторов. 

Код полностью:

import speedtest
import time
import datetime
import csv

from colorama import Fore, Style

# Сохранение в файл
def save_to_csv(data):
    with open('speedtest_results.csv', mode='a', newline='') as file:
        writer = csv.writer(file, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        writer.writerow(data)

# Форматирование вывода
def test(left, right):
    print('{0:>20} {1}'.format(left, right))

# Определение цветов для вывода
def get_color(speed, threshold):
    return Fore.GREEN if speed >= threshold else Fore.RED

def check_speed():
    # Пороговые значения для цветового выделения
    download_threshold = 50  # Мбит/с
    upload_threshold = 10  # Мбит/с
    ping_threshold = 50  # мс

    # Получить текущую дату и время
    current_date_time = datetime.datetime.now()

    # Форматирование даты и времени в нужный формат
    formatted_date_time = current_date_time.strftime("%Y-%m-%d %H:%M:%S")

    # Вывести отформатированную дату и время
    test("[Начало проверки]", formatted_date_time)

    # Создаем объект Speedtest
    st = speedtest.Speedtest(secure=True)

    # Измеряем скорость загрузки, выгрузки и пинг
    download_speed = st.download() / 10**6  # Мбит/с
    upload_speed = st.upload() / 10**6  # Мбит/с
    ping = st.results.ping  # мс

    # Вывод результатов в цвете
    test("[Скорость загрузки]",f"{get_color(download_speed, download_threshold)}{download_speed:.2f} Мбит/с{Style.RESET_ALL}")
    test("[Скорость выгрузки]",f"{get_color(upload_speed, upload_threshold)}{upload_speed:.2f} Мбит/с{Style.RESET_ALL}")
    test("[Пинг]", f"{get_color(ping, ping_threshold)}{ping} мс{Style.RESET_ALL}")

    # Получить текущую дату и время
    current_date_time = datetime.datetime.now()

    # Форматирование даты и времени в нужный формат
    formatted_date_time2 = current_date_time.strftime("%Y-%m-%d %H:%M:%S")

    # Вывести отформатированную дату и время
    test("[Конец проверки]", formatted_date_time2)
    print("\n")    

    # Сохранмть результат
    save_to_csv([formatted_date_time, formatted_date_time2, f"{download_speed:.2f} Мбит/с", f"{upload_speed:.2f} Мбит/с", f"{ping} мс"])

#main
if __name__ =="__main__":
    while True:
        check_speed()
        time.sleep(600)


Powered by Bludit - Theme by BlThemes
© 2024 В mozGG