Files
2025-09-22 11:54:42 +05:00

88 lines
3.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Управляющее приложение для бота с веб-интерфейсом
"""
import http.server
import socketserver
import os
import sys
import webbrowser
import threading
import time
from pathlib import Path
class WebInterface:
def __init__(self, port=3000):
self.port = port
self.web_dir = Path(__file__).parent / "web"
def start_server(self):
"""Запуск веб-сервера"""
try:
# Меняем рабочую директорию на папку с веб-файлами
os.chdir(self.web_dir)
# Создаем HTTP сервер
handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", self.port), handler) as httpd:
print(f"🚀 Веб-интерфейс управления тестами запущен!")
print(f"📡 Адрес: http://localhost:{self.port}")
print(f"📁 Директория: {self.web_dir}")
print(f"⚠️ Убедитесь, что API сервер запущен на http://localhost:8000")
print(f"💡 Для остановки нажмите Ctrl+C")
print("-" * 60)
# Открываем браузер через 2 секунды
def open_browser():
time.sleep(2)
try:
webbrowser.open(f"http://localhost:{self.port}")
except Exception as e:
print(f"Не удалось открыть браузер: {e}")
browser_thread = threading.Thread(target=open_browser)
browser_thread.daemon = True
browser_thread.start()
# Запускаем сервер
httpd.serve_forever()
except KeyboardInterrupt:
print("\n🛑 Сервер остановлен")
except OSError as e:
if e.errno == 10048: # Windows: Address already in use
print(f"❌ Ошибка: Порт {self.port} уже используется")
print(f"💡 Попробуйте другой порт или остановите процесс, использующий порт {self.port}")
else:
print(f"❌ Ошибка запуска сервера: {e}")
except Exception as e:
print(f"❌ Неожиданная ошибка: {e}")
def main():
"""Главная функция приложения"""
# Проверяем существование веб-директории
web_dir = Path(__file__).parent / "web"
if not web_dir.exists():
print("❌ Ошибка: Веб-директория не найдена!")
print(f"Ожидаемый путь: {web_dir}")
return
# Проверяем существование основных файлов
index_file = web_dir / "index.html"
if not index_file.exists():
print("❌ Ошибка: Файл index.html не найден!")
print(f"Ожидаемый путь: {index_file}")
return
print("🤖 Управляющее приложение для Telegram бота")
print("=" * 50)
# Запускаем веб-интерфейс
web_interface = WebInterface()
web_interface.start_server()
if __name__ == "__main__":
main()