#!/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()