interface web
This commit is contained in:
Executable
+224
@@ -0,0 +1,224 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script de démonstration pour tester l'interface web du TwitchBot Controller
|
||||
Génère des données de test pour montrer les fonctionnalités
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
import threading
|
||||
from datetime import datetime
|
||||
import random
|
||||
|
||||
def create_demo_data():
|
||||
"""Créer des données de démonstration"""
|
||||
|
||||
# Créer les dossiers nécessaires
|
||||
os.makedirs('working_bot/storage', exist_ok=True)
|
||||
os.makedirs('config', exist_ok=True)
|
||||
|
||||
# Données de démonstration pour les sous-titres
|
||||
demo_subtitles = {
|
||||
"14h30m15s": "Salut les viewers ! Comment ça va aujourd'hui ?",
|
||||
"14h31m22s": "On va jouer à ce nouveau jeu, j'ai hâte de voir ce que ça donne",
|
||||
"14h32m45s": "Oh non, je suis mort déjà ! C'est plus dur que je pensais",
|
||||
"14h33m12s": "Merci pour le follow @nouveau_viewer !",
|
||||
"14h34m30s": "Cette partie est vraiment intense, regardez ça !",
|
||||
"14h35m18s": "Je pense qu'on devrait essayer une autre stratégie",
|
||||
"14h36m05s": "Excellent, on progresse enfin dans ce niveau",
|
||||
"14h37m22s": "N'hésitez pas à poser vos questions dans le chat"
|
||||
}
|
||||
|
||||
# Données de démonstration pour les générations IA
|
||||
demo_generations = {
|
||||
"14h30m20s": "Salut ! Ça va super bien merci ! 😊",
|
||||
"14h31m28s": "Ce jeu a l'air génial, bonne chance !",
|
||||
"14h32m50s": "Ça arrive aux meilleurs, tu vas y arriver !",
|
||||
"14h33m15s": "Bienvenue dans la communauté ! 🎉",
|
||||
"14h34m35s": "Waouh cette action était épique ! 🔥",
|
||||
"14h35m25s": "Bonne idée, change de tactique !",
|
||||
"14h36m10s": "Bravo ! Tu maîtrises de mieux en mieux",
|
||||
"14h37m28s": "Toujours là pour aider ! 💪"
|
||||
}
|
||||
|
||||
# Sauvegarder les données de démonstration
|
||||
with open('working_bot/storage/subtitle_data.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(demo_subtitles, f, indent=4, ensure_ascii=False)
|
||||
|
||||
with open('working_bot/storage/IA_generator.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(demo_generations, f, indent=4, ensure_ascii=False)
|
||||
|
||||
print("✅ Données de démonstration créées")
|
||||
|
||||
def create_demo_config():
|
||||
"""Créer une configuration de démonstration"""
|
||||
|
||||
demo_config = {
|
||||
"twitchname": "demo_streamer",
|
||||
"recordtime": 60,
|
||||
"threads": 1,
|
||||
"language": "fr",
|
||||
"max_flux_lifetime": 3600,
|
||||
"active_flux": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "demo_streamer",
|
||||
"twitchname": "demo_streamer",
|
||||
"quantity": 1,
|
||||
"lifetime": 3600,
|
||||
"created_at": datetime.now().isoformat(),
|
||||
"active": True
|
||||
}
|
||||
],
|
||||
"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 : ",
|
||||
"Réponse sarcastique en 5 mots : ",
|
||||
"Blague rapide en 6 mots : ",
|
||||
"Commentaire décalé en 7 mots : ",
|
||||
"Réponse ironique en 6 mots : ",
|
||||
"Réponse punchy en 7 mots : ",
|
||||
"Réaction wtf en 5 mots : ",
|
||||
"Commentaire troll en 7 mots : "
|
||||
],
|
||||
"bad_answer": [
|
||||
"suis un assistant",
|
||||
"Je ne comprends pas.",
|
||||
"pas un humain",
|
||||
"je suis désolé"
|
||||
]
|
||||
}
|
||||
|
||||
demo_user = [
|
||||
{
|
||||
"tw_acc_pseudo": "demo_bot_1",
|
||||
"tw_acc_token": "oauth:demo_token_1",
|
||||
"charactere": "😊"
|
||||
},
|
||||
{
|
||||
"tw_acc_pseudo": "demo_bot_2",
|
||||
"tw_acc_token": "oauth:demo_token_2",
|
||||
"charactere": "🤖"
|
||||
}
|
||||
]
|
||||
|
||||
# Sauvegarder les configurations
|
||||
with open('config/config.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(demo_config, f, indent=4, ensure_ascii=False)
|
||||
|
||||
with open('config/user.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(demo_user, f, indent=4, ensure_ascii=False)
|
||||
|
||||
print("✅ Configuration de démonstration créée")
|
||||
|
||||
def simulate_live_updates():
|
||||
"""Simuler des mises à jour en temps réel"""
|
||||
|
||||
def update_data():
|
||||
while True:
|
||||
try:
|
||||
# Simuler un nouveau sous-titre
|
||||
current_time = datetime.now().strftime("%Hh%Mm%Ss")
|
||||
|
||||
demo_messages = [
|
||||
"Cette partie devient vraiment intéressante !",
|
||||
"Merci pour tous vos messages dans le chat !",
|
||||
"Je vais essayer cette nouvelle technique",
|
||||
"Waouh, je ne m'attendais pas à ça !",
|
||||
"Vous avez vu cette action incroyable ?",
|
||||
"On approche du boss final !",
|
||||
"N'oubliez pas de follow si vous aimez le contenu",
|
||||
"Cette musique de fond est parfaite"
|
||||
]
|
||||
|
||||
demo_responses = [
|
||||
"C'est parti pour l'action ! 🎮",
|
||||
"Toujours un plaisir de vous lire ! 💬",
|
||||
"Bonne stratégie, ça va marcher ! 👍",
|
||||
"Plot twist inattendu ! 😮",
|
||||
"Action de malade ! 🔥",
|
||||
"Le boss va trembler ! 💪",
|
||||
"Contenu de qualité garanti ! ⭐",
|
||||
"Parfait pour l'ambiance ! 🎵"
|
||||
]
|
||||
|
||||
# Charger les données existantes
|
||||
try:
|
||||
with open('working_bot/storage/subtitle_data.json', 'r', encoding='utf-8') as f:
|
||||
subtitles = json.load(f)
|
||||
with open('working_bot/storage/IA_generator.json', 'r', encoding='utf-8') as f:
|
||||
generations = json.load(f)
|
||||
except:
|
||||
subtitles = {}
|
||||
generations = {}
|
||||
|
||||
# Ajouter de nouvelles données
|
||||
new_message = random.choice(demo_messages)
|
||||
new_response = random.choice(demo_responses)
|
||||
|
||||
subtitles[current_time] = new_message
|
||||
generations[current_time] = new_response
|
||||
|
||||
# Limiter à 20 entrées maximum
|
||||
if len(subtitles) > 20:
|
||||
oldest_key = min(subtitles.keys())
|
||||
del subtitles[oldest_key]
|
||||
del generations[oldest_key]
|
||||
|
||||
# Sauvegarder
|
||||
with open('working_bot/storage/subtitle_data.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(subtitles, f, indent=4, ensure_ascii=False)
|
||||
|
||||
with open('working_bot/storage/IA_generator.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(generations, f, indent=4, ensure_ascii=False)
|
||||
|
||||
print(f"🔄 Mise à jour simulée: {current_time}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Erreur lors de la simulation: {e}")
|
||||
|
||||
# Attendre entre 30 secondes et 2 minutes
|
||||
time.sleep(random.randint(30, 120))
|
||||
|
||||
# Démarrer la simulation dans un thread
|
||||
update_thread = threading.Thread(target=update_data, daemon=True)
|
||||
update_thread.start()
|
||||
|
||||
print("🎭 Simulation des mises à jour en temps réel démarrée")
|
||||
|
||||
def main():
|
||||
print("🎬 TwitchBot Controller - Mode Démonstration")
|
||||
print("=" * 50)
|
||||
|
||||
# Créer les données et configuration de démonstration
|
||||
create_demo_data()
|
||||
create_demo_config()
|
||||
|
||||
# Démarrer la simulation des mises à jour
|
||||
simulate_live_updates()
|
||||
|
||||
print("\n🚀 Démarrage de l'interface web en mode démonstration...")
|
||||
print("📍 Les données de test sont générées automatiquement")
|
||||
print("🔄 De nouvelles données apparaîtront toutes les 30s-2min")
|
||||
print("=" * 50)
|
||||
|
||||
# Importer et démarrer l'interface web
|
||||
try:
|
||||
from web_interface import app, socketio
|
||||
|
||||
socketio.run(
|
||||
app,
|
||||
host='0.0.0.0',
|
||||
port=5000,
|
||||
debug=False
|
||||
)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("\n🛑 Arrêt de la démonstration...")
|
||||
except Exception as e:
|
||||
print(f"❌ Erreur: {e}")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user