# 🎬 Procesador de Videos TikTok

Herramienta completa para automatizar el procesamiento de videos de TikTok: descarga, limpieza de subtítulos, transcripción, reescritura y generación de audio con voz clonada.

## ✨ Características

- 📥 **Descarga videos de TikTok** desde URL
- 📤 **Sube videos directamente** desde tu ordenador
- 🧹 **Elimina subtítulos automáticamente** usando IA
- 🎤 **Transcribe el audio** con Whisper de OpenAI
- ✍️ **Reescribe el texto** de forma natural con GPT-4
- 🔊 **Genera audio con tu voz clonada** usando ElevenLabs
- 🎞️ **Monta el video final** con nuevos subtítulos

## 📋 Requisitos Previos

### Software necesario:
- Python 3.8 o superior
- FFmpeg (para procesamiento de video)
- pip (gestor de paquetes de Python)

### APIs necesarias:
- **OpenAI API Key** (para Whisper y GPT-4)
- **ElevenLabs API Key** (para generación de voz)
- **Voice ID de ElevenLabs** (tu voz clonada)

## 🚀 Instalación

### 1. Clonar o descargar el proyecto

```bash
cd backend
```

### 2. Instalar FFmpeg

**En Linux (Ubuntu/Debian):**
```bash
sudo apt-get update
sudo apt-get install ffmpeg
```

**En macOS:**
```bash
brew install ffmpeg
```

**En Windows:**
Descarga desde [ffmpeg.org](https://ffmpeg.org/download.html)

### 3. Ejecutar el script de instalación

```bash
chmod +x install.sh
./install.sh
```

O instalar manualmente:

```bash
python3 -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate
pip install -r requirements.txt
```

### 4. Configurar las API Keys

Copia el archivo de ejemplo:
```bash
cp .env.example .env
```

Edita `.env` y añade tus claves:
```env
OPENAI_API_KEY=sk-tu-clave-aqui
ELEVENLABS_API_KEY=tu-clave-aqui
ELEVENLABS_VOICE_ID=tu-voice-id-aqui
```

## 🎯 Uso

### Iniciar el servidor

```bash
source venv/bin/activate  # Activar entorno virtual
python server.py
```

El servidor estará disponible en: `http://localhost:5000`

### Usar la interfaz web

1. Abre `tiktok-processor-demo.html` en tu navegador
2. Configura tus API Keys en la interfaz
3. Pega una URL de TikTok o sube un video
4. Click en "Procesar Video"
5. Espera a que termine el procesamiento
6. Descarga tu video final

### Usar la API directamente

**Procesar video desde URL:**

```bash
curl -X POST http://localhost:5000/api/process-video \
  -F "url=https://www.tiktok.com/@usuario/video/123456" \
  -F "openai_key=tu_key" \
  -F "elevenlabs_key=tu_key" \
  -F "voice_id=tu_voice_id"
```

**Procesar video subido:**

```bash
curl -X POST http://localhost:5000/api/process-video \
  -F "file=@video.mp4" \
  -F "openai_key=tu_key" \
  -F "elevenlabs_key=tu_key" \
  -F "voice_id=tu_voice_id"
```

## 📁 Estructura del Proyecto

```
backend/
├── server.py                 # Servidor Flask principal
├── video_downloader.py       # Módulo de descarga de TikTok
├── subtitle_remover.py       # Eliminación de subtítulos
├── transcriber.py            # Transcripción con Whisper
├── text_rewriter.py          # Reescritura con GPT-4
├── audio_generator.py        # Generación de voz con ElevenLabs
├── video_assembler.py        # Ensamblaje del video final
├── requirements.txt          # Dependencias de Python
├── install.sh               # Script de instalación
└── .env.example             # Ejemplo de configuración
```

## 🔧 Configuración Avanzada

### Ajustar calidad de subtítulos

Edita `video_assembler.py` y modifica el estilo:

```python
subtitle_style = (
    "FontName=Arial,FontSize=28,PrimaryColour=&H00FFFFFF,"
    "OutlineColour=&H00000000,BorderStyle=3,Outline=3"
)
```

### Cambiar modelo de Whisper

En `transcriber.py`:

```python
# Para usar modelo local más preciso (pero más lento)
model = whisper.load_model("large")
```

### Ajustar configuración de voz

En `audio_generator.py`:

```python
"voice_settings": {
    "stability": 0.7,        # Más estable (0.0-1.0)
    "similarity_boost": 0.8, # Más similar a tu voz (0.0-1.0)
    "style": 0.2            # Más expresivo (0.0-1.0)
}
```

## 🐛 Solución de Problemas

### Error: "FFmpeg not found"
- Asegúrate de que FFmpeg está instalado: `ffmpeg -version`
- Añade FFmpeg al PATH del sistema

### Error: "OpenAI API Key invalid"
- Verifica que tu API key es correcta
- Comprueba que tienes créditos en tu cuenta de OpenAI

### Error: "ElevenLabs voice not found"
- Verifica tu Voice ID en [ElevenLabs](https://elevenlabs.io)
- Asegúrate de que la voz está activa

### Video sin audio después del procesamiento
- Verifica que el video original tiene audio
- Comprueba los logs del servidor para errores de FFmpeg

### Subtítulos no se eliminan correctamente
- El módulo usa detección por IA, puede fallar en algunos casos
- Alternativa: usa el método simple que recorta el video

## 📊 Costes Estimados

- **OpenAI Whisper**: ~$0.006 por minuto de audio
- **OpenAI GPT-4**: ~$0.03 por 1K tokens (~750 palabras)
- **ElevenLabs**: Depende del plan (10K-100K caracteres/mes)

**Coste aproximado por video de 1 minuto**: $0.10 - $0.20

## 🛠️ Desarrollo

### Ejecutar en modo desarrollo

```bash
export FLASK_ENV=development
python server.py
```

### Ejecutar tests (próximamente)

```bash
pytest tests/
```

## 📝 Próximas Mejoras

- [ ] Soporte para múltiples idiomas
- [ ] Detección automática de región de subtítulos mejorada
- [ ] Cola de procesamiento para múltiples videos
- [ ] Panel de administración
- [ ] Integración con más plataformas (YouTube Shorts, Instagram Reels)
- [ ] Opción de agregar efectos de video
- [ ] Sistema de templates de subtítulos

## 🤝 Contribuir

¿Tienes ideas para mejorar la herramienta? ¡Las contribuciones son bienvenidas!

## 📄 Licencia

Este proyecto es de uso personal. Asegúrate de respetar los términos de servicio de:
- TikTok
- OpenAI
- ElevenLabs

## ⚠️ Disclaimer

Esta herramienta es para uso personal y educativo. Asegúrate de:
- Tener derechos sobre el contenido que procesas
- Respetar las políticas de copyright
- No usar para spam o contenido malicioso
- Cumplir con los términos de servicio de las plataformas

## 📞 Soporte

Si encuentras problemas:
1. Revisa la sección de "Solución de Problemas"
2. Verifica los logs del servidor
3. Comprueba que todas las dependencias están instaladas

---

Hecho con ❤️ para automatizar la creación de contenido
