88 lines
3.5 KiB
Python
88 lines
3.5 KiB
Python
"""
|
||
Управляющее приложение для бота с веб-интерфейсом
|
||
"""
|
||
|
||
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()
|