38413-vm/core/management/commands/activate_all_games.py
2026-02-14 05:58:06 +00:00

60 lines
2.7 KiB
Python

from django.core.management.base import BaseCommand
from core.models import GameProject
from core.views import generate_game_script
from core.pexels import fetch_first
import time
class Command(BaseCommand):
help = 'Ativa todos os jogos, gera scripts de IA (com história e correção) e capas automaticamente para todo o catálogo.'
def add_arguments(self, parser):
parser.add_argument(
'--force',
action='store_true',
help='Força a re-geração de todos os scripts, mesmo que já existam.',
)
def handle(self, *args, **options):
force = options['force']
games = GameProject.objects.all()
self.stdout.write(f"Iniciando processamento de {games.count()} jogos (Force={force})...")
for game in games:
self.stdout.write(f"Processando: {game.title}...")
# 1. Ativar o jogo
game.is_active = True
# 2. Gerar script se estiver vazio, for placeholder ou se force for True
needs_script = force or not game.script_code or len(game.script_code) < 500
if needs_script:
if not game.external_url:
self.stdout.write(f" -> Gerando script de IA Autônomo para {game.title}...")
script = generate_game_script(game.title, game.prompt, game.genre)
if script:
game.script_code = script
self.stdout.write(self.style.SUCCESS(f" -> Script gerado com sucesso."))
else:
self.stdout.write(self.style.ERROR(f" -> Falha ao gerar script para {game.title}"))
else:
self.stdout.write(f" -> Jogo possui URL externa, pulando geração de script.")
# 3. Gerar Capa se não tiver
if not game.image_reference:
self.stdout.write(f" -> Buscando capa no Pexels para {game.title}...")
pexels_data = fetch_first(f"{game.title} game background")
if pexels_data:
game.image_reference = pexels_data['local_path'].replace('media/', '')
self.stdout.write(self.style.SUCCESS(f" -> Capa encontrada e salva."))
else:
self.stdout.write(self.style.WARNING(f" -> Capa não encontrada para {game.title}"))
game.save()
self.stdout.write(self.style.SUCCESS(f" -> {game.title} ATUALIZADO E ATIVO!"))
# Pequena pausa para evitar sobrecarga na API de IA/Pexels
time.sleep(2)
self.stdout.write(self.style.SUCCESS("Processamento concluído! Todos os jogos estão online e atualizados com IA Autônoma."))