Antiscam / start.py
Sousaneitor30000's picture
Create start.py
e1983e2 verified
#!/usr/bin/env python3
"""
🛡️ AntiScam AI Pro - Script de Inicio
Verifica configuración y lanza la aplicación
"""
import os
import sys
import subprocess
from pathlib import Path
def check_python_version():
"""Verifica versión de Python"""
if sys.version_info < (3, 8):
print("❌ Python 3.8+ requerido")
print(f" Tu versión: {sys.version}")
return False
print(f"✅ Python {sys.version_info.major}.{sys.version_info.minor}")
return True
def check_requirements():
"""Verifica si están instaladas las dependencias"""
try:
import gradio
import stripe
import transformers
print("✅ Dependencias principales instaladas")
return True
except ImportError as e:
print(f"❌ Dependencia faltante: {e}")
print("💡 Ejecuta: pip install -r requirements.txt")
return False
def check_env_file():
"""Verifica archivo .env"""
env_path = Path(".env")
if not env_path.exists():
print("⚠️ Archivo .env no encontrado")
print("💡 Copia .env.example como .env y configura tus credenciales")
return False
# Verificar variables críticas
from dotenv import load_dotenv
load_dotenv()
missing_vars = []
optional_vars = []
# Variables críticas
if not os.getenv("STRIPE_SECRET_KEY"):
missing_vars.append("STRIPE_SECRET_KEY")
if not os.getenv("EMAIL_USER"):
optional_vars.append("EMAIL_USER")
if missing_vars:
print(f"❌ Variables de entorno faltantes: {', '.join(missing_vars)}")
return False
if optional_vars:
print(f"⚠️ Variables opcionales no configuradas: {', '.join(optional_vars)}")
print(" La aplicación funcionará en modo simulado")
print("✅ Archivo .env configurado")
return True
def check_database():
"""Verifica/crea base de datos"""
try:
import sqlite3
conn = sqlite3.connect("antiscam_pro.db")
conn.close()
print("✅ Base de datos accesible")
return True
except Exception as e:
print(f"❌ Error con base de datos: {e}")
return False
def install_requirements():
"""Instala dependencias automáticamente"""
print("📦 Instalando dependencias...")
try:
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"])
print("✅ Dependencias instaladas")
return True
except subprocess.CalledProcessError:
print("❌ Error instalando dependencias")
return False
def create_env_template():
"""Crea archivo .env desde template"""
if not Path(".env.example").exists():
print("❌ Archivo .env.example no encontrado")
return False
try:
import shutil
shutil.copy(".env.example", ".env")
print("✅ Archivo .env creado desde template")
print("⚠️ IMPORTANTE: Edita .env con tus credenciales reales")
return True
except Exception as e:
print(f"❌ Error creando .env: {e}")
return False
def main():
"""Función principal de verificación y inicio"""
print("🛡️ ANTISCAM AI PRO - VERIFICACIÓN DE SISTEMA")
print("=" * 50)
# Verificaciones paso a paso
checks = [
("Versión de Python", check_python_version),
("Base de datos", check_database),
]
# Verificar dependencias
if not check_requirements():
response = input("¿Instalar dependencias automáticamente? (y/N): ")
if response.lower() == 'y':
if not install_requirements():
sys.exit(1)
else:
print("❌ Dependencias requeridas no instaladas")
sys.exit(1)
# Verificar .env
if not check_env_file():
if not Path(".env").exists():
response = input("¿Crear archivo .env desde template? (y/N): ")
if response.lower() == 'y':
if create_env_template():
print("\n📝 SIGUIENTE PASO:")
print(" 1. Edita el archivo .env con tus credenciales")
print(" 2. Ejecuta este script nuevamente")
sys.exit(0)
print("\n🔧 CONFIGURACIÓN REQUERIDA:")
print(" 1. Copia .env.example como .env")
print(" 2. Configura tus credenciales de Stripe y Gmail")
print(" 3. Ejecuta este script nuevamente")
sys.exit(1)
# Ejecutar verificaciones
all_passed = True
for name, check_func in checks:
try:
if not check_func():
all_passed = False
except Exception as e:
print(f"❌ Error en {name}: {e}")
all_passed = False
print("\n" + "=" * 50)
if all_passed:
print("🚀 SISTEMA LISTO - INICIANDO ANTISCAM AI PRO...")
print("=" * 50)
# Importar y ejecutar la aplicación
try:
from app import create_interface
app = create_interface()
app.launch(
server_name="0.0.0.0",
server_port=7860,
share=True,
show_error=True
)
except Exception as e:
print(f"❌ Error iniciando aplicación: {e}")
sys.exit(1)
else:
print("❌ VERIFICACIONES FALLIDAS")
print(" Resuelve los errores arriba y ejecuta nuevamente")
sys.exit(1)
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n👋 Aplicación detenida por el usuario")
except Exception as e:
print(f"\n💥 Error crítico: {e}")
sys.exit(1)