498 lines
13 KiB
Markdown
498 lines
13 KiB
Markdown
# Nota: Streamlit eliminado
|
|
|
|
> El frontend Streamlit fue eliminado. Usa `main.py` o Docker para ejecutar la API.
|
|
|
|
# START HERE
|
|
|
|
# 🎉 IMPLEMENTACIÓN COMPLETADA - TubeScript API Pro
|
|
|
|
## ✅ Estado: COMPLETADO Y LISTO PARA USAR
|
|
|
|
---
|
|
|
|
## 📋 Resumen de lo Implementado
|
|
|
|
### 🔧 Mejoras en el Backend (main.py)
|
|
|
|
1. **✅ Función `get_transcript_data` mejorada:**
|
|
- Manejo robusto de errores con mensajes claros
|
|
- Soporte para subtítulos automáticos como fallback
|
|
- Timeout de 60 segundos
|
|
- Validación exhaustiva de respuestas
|
|
- Uso del cliente Android para mayor compatibilidad
|
|
|
|
2. **✅ Función `get_stream_url` mejorada:**
|
|
- Estrategia de fallback con 4 formatos diferentes
|
|
- Cliente Android para mejor compatibilidad con YouTube
|
|
- Manejo inteligente de timeouts
|
|
- Mensajes de error descriptivos y útiles
|
|
|
|
### 🖥️ Panel Streamlit (streamlit_app.py)
|
|
|
|
**Ya estaba completo con:**
|
|
- ✅ Sistema de switches funcional por plataforma
|
|
- ✅ Gestión de PIDs de procesos FFmpeg
|
|
- ✅ Semáforos de estado en tiempo real (🟢 🔴 ⚪)
|
|
- ✅ Monitoreo activo con auto-refresh (5 segundos)
|
|
- ✅ 6 plataformas preconfiguradas con URLs RTMP por defecto
|
|
- ✅ Persistencia de configuración en JSON
|
|
- ✅ Preview de video con miniatura
|
|
- ✅ Control individual y grupal de transmisiones
|
|
|
|
### 🐳 Scripts Docker Creados
|
|
|
|
1. **✅ docker-manager.sh** - Gestor interactivo todo-en-uno
|
|
2. **✅ docker-start-api.sh** - Iniciar solo FastAPI
|
|
3. **✅ docker-start-streamlit.sh** - Iniciar solo Streamlit
|
|
4. **✅ docker-stop-all.sh** - Detener todos los servicios
|
|
5. **✅ docker-logs-separate.sh** - Ver logs por servicio
|
|
6. **✅ docker-create-network.sh** - Crear red de Docker
|
|
7. **✅ COMANDOS_RAPIDOS.sh** - Referencia rápida de comandos
|
|
|
|
### 📚 Documentación Creada
|
|
|
|
1. **✅ QUICKSTART_COMPLETO.md** - Guía de inicio rápido completa
|
|
2. **✅ PANEL_STREAMLIT_GUIA.md** - Guía detallada del panel web
|
|
3. **✅ DOCKER_COMANDOS_SEPARADOS_COMPLETO.md** - Comandos Docker detallados
|
|
4. **✅ API_EXAMPLES.md** - Ejemplos de uso de la API con cURL, Python, Node.js
|
|
5. **✅ RESUMEN_IMPLEMENTACION.md** - Resumen ejecutivo completo
|
|
|
|
---
|
|
|
|
## 🚀 Cómo Empezar AHORA
|
|
|
|
### Opción 1: Gestor Interactivo (Más Fácil)
|
|
|
|
```bash
|
|
./docker-manager.sh
|
|
```
|
|
|
|
Selecciona las opciones del menú:
|
|
1. Opción 12: Crear red de Docker
|
|
2. Opción 1: Iniciar todos los servicios
|
|
3. Opción 14: Abrir panel web
|
|
|
|
### Opción 2: Comandos Directos
|
|
|
|
```bash
|
|
# 1. Crear red
|
|
./docker-create-network.sh
|
|
|
|
# 2. Iniciar servicios
|
|
docker-compose up -d
|
|
|
|
# 3. Verificar que estén corriendo
|
|
docker ps
|
|
|
|
# 4. Acceder al panel
|
|
open http://localhost:8501
|
|
```
|
|
|
|
### Opción 3: Servicios Separados
|
|
|
|
```bash
|
|
# 1. Crear red
|
|
./docker-create-network.sh
|
|
|
|
# 2. Iniciar API
|
|
./docker-start-api.sh
|
|
|
|
# 3. Iniciar Streamlit
|
|
./docker-start-streamlit.sh
|
|
|
|
# 4. Verificar logs
|
|
docker logs -f streamlit_panel
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Funcionalidades Completas
|
|
|
|
### Panel Web (http://localhost:8501)
|
|
|
|
#### Pestaña 1: 🔍 Búsqueda
|
|
- Buscar videos en vivo por palabra clave
|
|
- Ingresar URL directa de YouTube
|
|
- Preview con miniatura y datos del canal
|
|
- Verificación de estado EN VIVO (🔴)
|
|
|
|
#### Pestaña 2: 🎛️ Control
|
|
- Vista del video seleccionado
|
|
- Switches individuales por plataforma
|
|
- Botón "Iniciar Todas" / "Detener Todas"
|
|
- Tabla resumen con estado de redes
|
|
- Tarjetas por plataforma con:
|
|
* Semáforo de estado (🟢 🔴 ⚪)
|
|
* PID del proceso
|
|
* Tiempo activo
|
|
* Switch para activar/desactivar
|
|
|
|
#### Pestaña 3: 📊 Monitor
|
|
- Auto-refresh cada 5 segundos
|
|
- Resumen general con métricas
|
|
- Estado detallado por plataforma
|
|
- Verificación de PIDs en tiempo real
|
|
- Botones para detener individualmente
|
|
|
|
#### Barra Lateral: ⚙️ Configuración
|
|
- 6 plataformas: YouTube, Facebook, Twitch, X, Instagram, TikTok
|
|
- Switch para habilitar/deshabilitar cada una
|
|
- Campo para Stream Key (obligatorio)
|
|
- RTMP URL con valor por defecto (opcional personalizar)
|
|
- Indicadores visuales de estado
|
|
- Guías de ayuda incluidas
|
|
|
|
### API FastAPI (http://localhost:8080)
|
|
|
|
#### Endpoints Disponibles:
|
|
|
|
1. **GET /stream/{video_id}**
|
|
- Obtiene URL m3u8 de video en vivo
|
|
- Estrategia de fallback inteligente
|
|
- Mensajes de error claros
|
|
|
|
2. **GET /transcript/{video_id}?lang={idioma}**
|
|
- Obtiene subtítulos/transcripción
|
|
- Soporte para múltiples idiomas
|
|
- Fallback a subtítulos automáticos
|
|
|
|
3. **GET /docs**
|
|
- Documentación interactiva Swagger
|
|
|
|
4. **GET /redoc**
|
|
- Documentación ReDoc
|
|
|
|
---
|
|
|
|
## 🎯 Plataformas Configuradas
|
|
|
|
| Plataforma | RTMP URL | Configurada |
|
|
|------------|----------|-------------|
|
|
| YouTube | rtmp://a.rtmp.youtube.com/live2 | ✅ |
|
|
| Facebook | rtmps://live-api-s.facebook.com:443/rtmp/ | ✅ |
|
|
| Twitch | rtmp://live.twitch.tv/app | ✅ |
|
|
| X (Twitter) | rtmps://fa.contribute.live-video.net/app | ✅ |
|
|
| Instagram | rtmps://live-upload.instagram.com:443/rtmp/ | ✅ |
|
|
| TikTok | rtmp://push.live.tiktok.com/live/ | ✅ |
|
|
|
|
---
|
|
|
|
## 🔄 Flujo de Trabajo Completo
|
|
|
|
### 1. Configuración Inicial (Primera Vez)
|
|
|
|
```bash
|
|
# Ejecutar gestor
|
|
./docker-manager.sh
|
|
|
|
# Opciones del menú:
|
|
# 12 - Crear red de Docker
|
|
# 1 - Iniciar todos los servicios
|
|
# 14 - Abrir panel web
|
|
```
|
|
|
|
### 2. Configurar Plataformas
|
|
|
|
En el panel web (http://localhost:8501):
|
|
1. Abrir barra lateral (⚙️ Configuración)
|
|
2. Para cada plataforma:
|
|
- ✅ Activar "Habilitar esta plataforma"
|
|
- 🔑 Ingresar Stream Key
|
|
- 🌐 (Opcional) Personalizar RTMP URL
|
|
3. 💾 Guardar Configuración
|
|
|
|
### 3. Buscar Video en Vivo
|
|
|
|
Pestaña 🔍 Búsqueda:
|
|
- Buscar: "noticias live" o "CNN live"
|
|
- O pegar URL: https://www.youtube.com/watch?v=VIDEO_ID
|
|
- Seleccionar video
|
|
- Verificar que esté 🔴 EN VIVO
|
|
|
|
### 4. Iniciar Transmisiones
|
|
|
|
Pestaña 🎛️ Control:
|
|
- Ver preview del video
|
|
- Activar switches de las plataformas deseadas
|
|
- O clic en "▶️ Iniciar Todas"
|
|
- Ver semáforos cambiar a 🟢
|
|
|
|
### 5. Monitorear
|
|
|
|
Pestaña 📊 Monitor:
|
|
- Ver estado en tiempo real
|
|
- Verificar PIDs activos
|
|
- Comprobar tiempo de transmisión
|
|
- Detener cuando sea necesario
|
|
|
|
---
|
|
|
|
## 🎨 Semáforos de Estado
|
|
|
|
| Semáforo | Estado | Acción |
|
|
|----------|--------|--------|
|
|
| 🟢 | TRANSMITIENDO | Todo funcionando correctamente |
|
|
| ⚪ | LISTO | Configurada pero no transmitiendo |
|
|
| 🔴 | ERROR | Revisar logs o reiniciar |
|
|
| ⚠️ | DESHABILITADA | Activar en Configuración |
|
|
|
|
---
|
|
|
|
## 🛠️ Comandos Útiles
|
|
|
|
### Ver Logs
|
|
```bash
|
|
# API
|
|
docker logs -f tubescript_api
|
|
|
|
# Streamlit
|
|
docker logs -f streamlit_panel
|
|
|
|
# Ambos
|
|
docker-compose logs -f
|
|
```
|
|
|
|
### Actualizar yt-dlp
|
|
```bash
|
|
docker exec tubescript_api pip install --upgrade yt-dlp
|
|
docker exec streamlit_panel pip install --upgrade yt-dlp
|
|
```
|
|
|
|
### Reiniciar
|
|
```bash
|
|
docker-compose restart
|
|
```
|
|
|
|
### Detener
|
|
```bash
|
|
./docker-stop-all.sh
|
|
# o
|
|
docker-compose down
|
|
```
|
|
|
|
### Reconstruir
|
|
```bash
|
|
docker-compose down
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
---
|
|
|
|
## 🆘 Solución de Problemas
|
|
|
|
### ❌ "No se pudo obtener URL del stream"
|
|
|
|
**Causas:**
|
|
- Video no está EN VIVO (🔴)
|
|
- Video con restricciones
|
|
- yt-dlp desactualizado
|
|
|
|
**Solución:**
|
|
```bash
|
|
# Actualizar yt-dlp
|
|
./docker-manager.sh
|
|
# Selecciona opción 11
|
|
|
|
# O reconstruir
|
|
docker-compose down
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
### ❌ "Puerto ya en uso"
|
|
|
|
```bash
|
|
# Ver qué usa el puerto
|
|
lsof -i :8080 # API
|
|
lsof -i :8501 # Streamlit
|
|
|
|
# Matar proceso
|
|
kill -9 $(lsof -ti:8080)
|
|
```
|
|
|
|
### ❌ "Network not found"
|
|
|
|
```bash
|
|
./docker-create-network.sh
|
|
```
|
|
|
|
### ❌ "Transmisión se detuvo"
|
|
|
|
**Verificar:**
|
|
- Video sigue en vivo
|
|
- Stream Key correcta
|
|
- Ver logs: `docker logs streamlit_panel`
|
|
|
|
---
|
|
|
|
## 📦 Archivos Importantes
|
|
|
|
```
|
|
TubeScript-API/
|
|
├── main.py # ✅ Backend FastAPI (mejorado)
|
|
├── streamlit_app.py # ✅ Frontend Streamlit (completo)
|
|
├── docker-compose.yml # Docker Compose
|
|
├── Dockerfile # Imagen Docker
|
|
├── requirements.txt # Dependencias
|
|
├── .env.example # Variables de entorno
|
|
│
|
|
├── Scripts:
|
|
│ ├── docker-manager.sh # ✅ Gestor interactivo
|
|
│ ├── docker-start-api.sh # ✅ Iniciar API
|
|
│ ├── docker-start-streamlit.sh # ✅ Iniciar Streamlit
|
|
│ ├── docker-stop-all.sh # ✅ Detener todos
|
|
│ ├── docker-logs-separate.sh # ✅ Ver logs
|
|
│ ├── docker-create-network.sh # ✅ Crear red
|
|
│ └── COMANDOS_RAPIDOS.sh # ✅ Referencia rápida
|
|
│
|
|
├── Documentación:
|
|
│ ├── QUICKSTART_COMPLETO.md # ✅ Inicio rápido
|
|
│ ├── PANEL_STREAMLIT_GUIA.md # ✅ Guía del panel
|
|
│ ├── DOCKER_COMANDOS_...md # ✅ Comandos Docker
|
|
│ ├── API_EXAMPLES.md # ✅ Ejemplos API
|
|
│ └── RESUMEN_IMPLEMENTACION.md # ✅ Resumen completo
|
|
│
|
|
└── Config:
|
|
├── stream_config.json # Configuración de plataformas
|
|
├── process_state.json # Estado de procesos
|
|
├── streams_state.json # Estado de streams
|
|
└── cookies.txt # Cookies de YouTube (opcional)
|
|
```
|
|
|
|
---
|
|
|
|
## 🌐 URLs de Acceso
|
|
|
|
| Servicio | URL | Descripción |
|
|
|----------|-----|-------------|
|
|
| Panel Web | http://localhost:8501 | Interfaz Streamlit |
|
|
| API | http://localhost:8080 | FastAPI Backend |
|
|
| API Docs | http://localhost:8080/docs | Documentación Swagger |
|
|
| API ReDoc | http://localhost:8080/redoc | Documentación alternativa |
|
|
|
|
---
|
|
|
|
## 📈 Características Técnicas
|
|
|
|
### Arquitectura
|
|
```
|
|
Usuario → Streamlit (8501)
|
|
↓
|
|
FastAPI (8000/8080) → yt-dlp → YouTube
|
|
↓
|
|
FFmpeg (PIDs) → RTMP → Plataformas
|
|
```
|
|
|
|
### Gestión de Procesos
|
|
- Cada transmisión = Proceso FFmpeg independiente
|
|
- PID registrado y monitoreado
|
|
- Verificación continua de estado
|
|
- Logs separados por plataforma
|
|
|
|
### Comando FFmpeg
|
|
```bash
|
|
ffmpeg -re -i "URL_M3U8" -c copy -f flv RTMP_URL/STREAM_KEY
|
|
```
|
|
|
|
---
|
|
|
|
## ✨ Próximos Pasos
|
|
|
|
1. ✅ **Ejecutar el gestor:** `./docker-manager.sh`
|
|
2. ✅ **Crear red:** Opción 12
|
|
3. ✅ **Iniciar servicios:** Opción 1
|
|
4. ✅ **Abrir panel:** Opción 14 o http://localhost:8501
|
|
5. ✅ **Configurar plataformas:** Stream Keys en la barra lateral
|
|
6. ✅ **Buscar video en vivo:** Pestaña Búsqueda
|
|
7. ✅ **Iniciar transmisión:** Pestaña Control
|
|
8. ✅ **Monitorear:** Pestaña Monitor
|
|
|
|
---
|
|
|
|
## 📚 Documentación Completa
|
|
|
|
Para más detalles, consulta:
|
|
- **QUICKSTART_COMPLETO.md** - Guía de inicio rápido
|
|
- **PANEL_STREAMLIT_GUIA.md** - Guía completa del panel
|
|
- **API_EXAMPLES.md** - Ejemplos de uso de la API
|
|
- **DOCKER_COMANDOS_SEPARADOS_COMPLETO.md** - Todos los comandos Docker
|
|
- **COMANDOS_RAPIDOS.sh** - Referencia rápida ejecutable
|
|
|
|
---
|
|
|
|
## 🎉 ¡Listo para Producción!
|
|
|
|
El sistema está **100% funcional** y **listo para usar**:
|
|
|
|
✅ Backend optimizado con manejo robusto de errores
|
|
✅ Frontend completo con interfaz intuitiva
|
|
✅ Sistema de switches funcional
|
|
✅ Gestión de PIDs y monitoreo
|
|
✅ Scripts de gestión automatizados
|
|
✅ Documentación exhaustiva
|
|
✅ 6 plataformas preconfiguradas
|
|
✅ Docker Compose para despliegue fácil
|
|
|
|
---
|
|
|
|
## 🎯 Características Destacadas
|
|
|
|
1. **Interfaz Intuitiva** - Diseño limpio con iconos visuales
|
|
2. **Control Granular** - Switches individuales por plataforma
|
|
3. **Monitoreo en Tiempo Real** - Semáforos y PIDs activos
|
|
4. **Fácil Despliegue** - Docker Compose + Scripts automatizados
|
|
5. **Multi-Plataforma** - Hasta 6 plataformas simultáneas
|
|
6. **Documentación Completa** - Guías paso a paso
|
|
7. **Manejo Robusto de Errores** - Mensajes claros y útiles
|
|
8. **Persistencia de Config** - No pierde configuración al reiniciar
|
|
|
|
---
|
|
|
|
## 💡 Tips Finales
|
|
|
|
1. **Lee los comandos rápidos:** `./COMANDOS_RAPIDOS.sh`
|
|
2. **Usa el gestor interactivo:** `./docker-manager.sh`
|
|
3. **Mantén yt-dlp actualizado:** Opción 11 del gestor
|
|
4. **Revisa los logs** si algo falla
|
|
5. **Guarda tus Stream Keys** en el panel
|
|
6. **Usa videos 24/7** como CNN/BBC para pruebas
|
|
|
|
---
|
|
|
|
## 🏆 Estado del Proyecto
|
|
|
|
```
|
|
┌─────────────────────────────────────────┐
|
|
│ ✅ IMPLEMENTACIÓN COMPLETADA │
|
|
│ │
|
|
│ Estado: PRODUCCIÓN │
|
|
│ Versión: 2.0.0 │
|
|
│ Fecha: 30 Enero 2026 │
|
|
│ │
|
|
│ Backend: ✅ Optimizado │
|
|
│ Frontend: ✅ Completo │
|
|
│ Docker: ✅ Configurado │
|
|
│ Scripts: ✅ Creados │
|
|
│ Docs: ✅ Exhaustiva │
|
|
│ │
|
|
│ 🎉 LISTO PARA USAR 🎉 │
|
|
└─────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
**TubeScript API Pro © 2026**
|
|
Sistema de Retransmisión Multi-Plataforma
|
|
✨ Transmite a 6 redes sociales simultáneamente ✨
|
|
|
|
---
|
|
|
|
## 🚀 EMPIEZA AHORA:
|
|
|
|
```bash
|
|
./docker-manager.sh
|
|
```
|
|
|
|
¡Éxito con tus transmisiones! 🎥📡🌍
|