#!/usr/bin/env python3

import requests
import os
import subprocess
from requests.exceptions import RequestException
from bs4 import BeautifulSoup

Конфигурация (можно менять)

TARGET_PLAYERS = {"Ayumi", "fax", "svt", "Tony", "Broadklin"} # Добавьте нужные ники
ALARM_FILE = "alarm.wav" # Путь к звуковому файлу

def check_players(url):
"""Проверяет наличие целевых игроков на сервере"""
try:
response = requests.get(url)
response.raise_for_status()
soup = BeautifulSoup(response.content, 'html.parser')

Извлекаем все имена игроков

players = set()
for div in soup.find_all('div', {'id': 'handle'}):
players.add(div.text.strip())

return players

except RequestException as e:
print(f"Ошибка подключения: {e}")
return set()

def play_alarm():
"""Воспроизводит звуковой сигнал"""
if os.path.exists(ALARM_FILE):
try:

Для систем с pulseaudio (большинство дистрибутивов)

subprocess.run(["paplay", ALARM_FILE], check=True)

Альтернатива для ALSA:

subprocess.run(["aplay", ALARM_FILE], check=True)

except (subprocess.CalledProcessError, FileNotFoundError):
print("Ошибка воспроизведения звука")
else:
print(f"Файл {ALARM_FILE} не найден!")

if __name__ == "__main__":

URL сервера из первого скрипта

SERVER_URL = "http://dpmaster.deathmask.net/?game=openarena&server=141.147.45.166:27960"

Получаем текущих игроков

current_players = check_players(SERVER_URL)

Проверяем пересечение с целевыми игроками

detected = current_players & TARGET_PLAYERS

if detected:
print(f"Обнаружены целевые игроки: {', '.join(detected)}")
play_alarm()
else:
print("Целевые игроки не обнаружены")

[file-name 000065_2025-03-18_10-07-07.txt]