224 lines
8.3 KiB
Python
Executable File
224 lines
8.3 KiB
Python
Executable File
#!/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() |