This commit is contained in:
gpatruno
2025-09-06 17:26:38 +02:00
parent baefddd6b3
commit 68cf59ae75
29 changed files with 1387 additions and 1476 deletions
+105 -108
View File
@@ -1,140 +1,137 @@
#!/usr/bin/env python3
"""
Script de démarrage pour l'interface web du TwitchBot Controller
Script de démarrage amélioré pour TwitchBot Controller
Utilise l'architecture centralisée avec contrôle depuis l'interface web
"""
import os
import sys
import subprocess
import argparse
import time
from datetime import datetime
# Configurer l'environnement Python pour l'interface web
def setup_environment():
"""Configurer l'environnement Python"""
# Ajouter le chemin de l'environnement virtuel au PYTHONPATH
venv_path = os.path.join(os.path.dirname(__file__), 'env', 'lib', 'python3.10', 'site-packages')
if venv_path not in sys.path:
sys.path.insert(0, venv_path)
print(f"✓ Environnement Python configuré: {venv_path}")
# Ajouter le répertoire courant au PYTHONPATH
current_dir = os.path.dirname(__file__)
if current_dir not in sys.path:
sys.path.insert(0, current_dir)
def print_banner():
"""Afficher la bannière de démarrage"""
print("🤖 TwitchBot Controller - Interface Web")
print("=" * 50)
print("✓ Architecture centralisée")
print("✓ Contrôle depuis l'interface web")
print("✓ Gestion des composants modulaire")
print("=" * 50)
def check_dependencies():
"""Vérifier que les dépendances sont installées"""
try:
import flask
import flask_socketio
print("✓ Dépendances Flask installées")
return True
except ImportError as e:
print(f"✗ Dépendances manquantes: {e}")
print("Installez les dépendances avec: pip install -r requirements_web.txt")
"""Vérifier les dépendances requises"""
print("🔧 Vérification des dépendances...")
required_packages = [
'flask',
'flask-socketio',
'requests',
'pytmi'
]
missing_packages = []
for package in required_packages:
try:
__import__(package.replace('-', '_'))
print(f"{package}")
except ImportError:
missing_packages.append(package)
print(f"{package} - MANQUANT")
if missing_packages:
print(f"\n❌ Dépendances manquantes: {', '.join(missing_packages)}")
print("💡 Installez-les avec: pip install " + " ".join(missing_packages))
return False
print("✅ Toutes les dépendances sont installées")
return True
def check_config_files():
"""Vérifier les fichiers de configuration"""
print("\n📁 Vérification des fichiers de configuration...")
required_files = [
'config/config.json',
'config/user.json'
]
missing_files = []
for file_path in required_files:
if os.path.exists(file_path):
print(f"{file_path}")
else:
missing_files.append(file_path)
print(f"{file_path} - MANQUANT")
if missing_files:
print(f"\n⚠️ Fichiers de configuration manquants: {', '.join(missing_files)}")
print("💡 Créez ces fichiers avant de continuer")
return False
print("✅ Tous les fichiers de configuration sont présents")
return True
def create_directories():
"""Créer les dossiers nécessaires s'ils n'existent pas"""
"""Créer les répertoires nécessaires"""
print("\n📂 Création des répertoires...")
directories = [
'working_bot/storage',
'config',
'templates',
'static/css',
'static/js'
'storage',
'record',
'in_record'
]
for directory in directories:
if not os.path.exists(directory):
os.makedirs(directory)
print(f"Dossier créé: {directory}")
print(f"Créé: {directory}")
else:
print(f"✓ Existe: {directory}")
def check_config_files():
"""Vérifier que les fichiers de configuration existent"""
config_files = {
'config/config.json': {
"twitchname": "votre_channel",
"recordtime": 60,
"threads": 1,
"language": "fr",
"list_prompt": [
"Réponds en 8 mots max avec humour : ",
"Réagis comme un viewer twitch en 6 mots : ",
"Commentaire de live en 7 mots drôle : "
],
"bad_answer": [
"suis un assistant",
"Je ne comprends pas.",
"pas un humain"
]
},
'config/user.json': [
{
"tw_acc_pseudo": "votre_pseudo",
"tw_acc_token": "oauth:votre_token",
"charactere": "😊"
}
]
}
import json
for file_path, default_content in config_files.items():
if not os.path.exists(file_path):
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(default_content, f, indent=4, ensure_ascii=False)
print(f"✓ Fichier de configuration créé: {file_path}")
print(f"⚠️ Pensez à modifier {file_path} avec vos propres paramètres")
def main():
parser = argparse.ArgumentParser(description='Démarrer l\'interface web du TwitchBot Controller')
parser.add_argument('--host', default='0.0.0.0', help='Adresse IP d\'écoute (défaut: 0.0.0.0)')
parser.add_argument('--port', type=int, default=5000, help='Port d\'écoute (défaut: 5000)')
parser.add_argument('--debug', action='store_true', help='Mode debug')
parser.add_argument('--no-check', action='store_true', help='Ignorer la vérification des dépendances')
args = parser.parse_args()
print("🤖 TwitchBot Controller - Interface Web")
print("=" * 50)
# Vérifications préliminaires
if not args.no_check:
if not check_dependencies():
sys.exit(1)
create_directories()
check_config_files()
# Changer vers le répertoire de travail si nécessaire
if not os.path.exists('working_bot'):
os.makedirs('working_bot')
def start_web_interface():
"""Démarrer l'interface web"""
print("\n🚀 Démarrage de l'interface web...")
print(f"📍 Adresse: http://{args.host}:{args.port}")
print("📍 Adresse: http://0.0.0.0:5000")
print("🔧 Utilisez Ctrl+C pour arrêter le serveur")
print("=" * 50)
# Importer et démarrer l'application Flask
try:
# Importer et démarrer l'interface web
from web_interface import app, socketio
# Configurer l'application
app.config['DEBUG'] = args.debug
# Démarrer le serveur
socketio.run(
app,
host=args.host,
port=args.port,
debug=args.debug,
use_reloader=False # Éviter les problèmes avec les threads
)
socketio.run(app, host='0.0.0.0', port=5000, debug=False)
except KeyboardInterrupt:
print("\n🛑 Arrêt de l'interface web...")
print("\n🛑 Arrêt demandé par l'utilisateur")
except Exception as e:
print(f"❌ Erreur lors du démarrage: {e}")
sys.exit(1)
print(f"\n❌ Erreur lors du démarrage: {e}")
return False
return True
if __name__ == '__main__':
main()
def main():
"""Fonction principale"""
print_banner()
# Vérifier les dépendances
if not check_dependencies():
return False
# Vérifier les fichiers de configuration
if not check_config_files():
return False
# Créer les répertoires nécessaires
create_directories()
# Démarrer l'interface web
return start_web_interface()
if __name__ == "__main__":
success = main()
if not success:
sys.exit(1)