TrashNotes

2025-03-18 10:07:07
OpenArena check gamers

#!/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("Целевые игроки не обнаружены")
← Previous Next →
Back to list