# πŸš€ GuΓ­a de Inicio RΓ‘pido - TubeScript API ## ⚑ Inicio RΓ‘pido en 3 Pasos ### 1️⃣ Crear Red de Docker ```bash ./docker-create-network.sh ``` ### 2️⃣ Iniciar Servicios ```bash # OpciΓ³n A: Usar el gestor interactivo (Recomendado) ./docker-manager.sh # OpciΓ³n B: Iniciar con Docker Compose docker-compose up -d # OpciΓ³n C: Iniciar servicios por separado ./docker-start-api.sh # Solo API ./docker-start-streamlit.sh # Solo Streamlit ``` ### 3️⃣ Acceder al Panel - **Panel Web**: http://localhost:8501 - **API**: http://localhost:8080 - **DocumentaciΓ³n API**: http://localhost:8080/docs --- ## 🎯 ΒΏQuΓ© Puedes Hacer? ### ✨ Funcionalidades Principales 1. **πŸ” Buscar Videos en Vivo de YouTube** - Busca por palabra clave - O ingresa URL directa 2. **πŸ“Ί Seleccionar Video para Transmitir** - Ve el preview con miniatura - Verifica que estΓ© EN VIVO (πŸ”΄) 3. **βš™οΈ Configurar Plataformas de Destino** - YouTube, Facebook, Twitch, X, Instagram, TikTok - Solo necesitas el Stream Key - RTMP URLs configuradas por defecto 4. **πŸŽ›οΈ Controlar Transmisiones** - Switches individuales por plataforma - Iniciar/Detener todas a la vez - Ver estado en tiempo real 5. **πŸ“Š Monitorear en Tiempo Real** - SemΓ‘foros de estado (🟒 πŸ”΄ βšͺ) - PIDs de procesos FFmpeg - Tiempo activo de cada transmisiΓ³n - VerificaciΓ³n de salud de procesos --- ## πŸ› οΈ GestiΓ³n de Servicios ### Gestor Interactivo (Recomendado) ```bash ./docker-manager.sh ``` **MenΓΊ disponible:** ``` SERVICIOS: 1) Iniciar TODOS los servicios 2) Iniciar solo FastAPI 3) Iniciar solo Streamlit CONTROL: 4) Detener todos los servicios 5) Reiniciar todos los servicios 6) Reconstruir contenedores MONITOREO: 7) Ver logs de FastAPI 8) Ver logs de Streamlit 9) Ver logs de ambos 10) Ver estado de servicios MANTENIMIENTO: 11) Actualizar yt-dlp 12) Crear red de Docker 13) Limpiar contenedores UTILIDADES: 14) Abrir panel web 15) Abrir documentaciΓ³n API 16) Editar configuraciΓ³n ``` ### Comandos RΓ‘pidos ```bash # Iniciar ./docker-start-api.sh # Solo API ./docker-start-streamlit.sh # Solo Streamlit docker-compose up -d # Ambos servicios # Detener ./docker-stop-all.sh # Detener todos docker-compose down # Con Docker Compose # Ver Logs ./docker-logs-separate.sh api # Logs de API ./docker-logs-separate.sh streamlit # Logs de Streamlit docker logs -f tubescript_api # Direct Docker # Estado docker ps # Ver contenedores activos docker stats # Ver uso de recursos ``` --- ## βš™οΈ ConfiguraciΓ³n ### 1. Variables de Entorno Crea tu archivo `.env` (o edita el existente): ```bash cp .env.example .env nano .env ``` **Configuraciones principales:** ```env # URL del API (para Streamlit) API_URL=http://tubescript-api:8000 # Dentro de Docker # API_URL=http://localhost:8080 # Para desarrollo local # API_URL=https://api.tudominio.com # Para producciΓ³n # Puertos API_PORT=8080 STREAMLIT_PORT=8501 ``` ### 2. Configurar Plataformas En el panel web (http://localhost:8501): 1. **Abre el menΓΊ lateral** (βš™οΈ ConfiguraciΓ³n) 2. **Para cada plataforma:** - βœ… Activa "Habilitar esta plataforma" - πŸ”‘ Ingresa tu **Stream Key** - 🌐 (Opcional) Personaliza RTMP URL 3. **Guarda la configuraciΓ³n** (πŸ’Ύ Guardar ConfiguraciΓ³n) **URLs RTMP por defecto:** - 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/` ### 3. Cookies de YouTube (Opcional) Si necesitas acceder a videos con restricciones: ```bash # Exporta cookies de tu navegador # Usa extensiΓ³n: "Get cookies.txt" # Guarda como cookies.txt en el directorio raΓ­z ``` --- ## πŸ“Ί CΓ³mo Usar el Panel Web ### Flujo Completo #### Paso 1: Configurar (Primera vez) ``` βš™οΈ ConfiguraciΓ³n (Sidebar) β”œβ”€β”€ Activar plataformas deseadas β”œβ”€β”€ Ingresar Stream Keys └── Guardar configuraciΓ³n ``` #### Paso 2: Buscar Video ``` πŸ” BΓΊsqueda (Tab) β”œβ”€β”€ Buscar: "noticias", "gaming", etc. └── O pegar URL directa ``` #### Paso 3: Controlar TransmisiΓ³n ``` πŸŽ›οΈ Control (Tab) β”œβ”€β”€ Ver preview del video β”œβ”€β”€ Activar switches por plataforma └── O iniciar todas a la vez ``` #### Paso 4: Monitorear ``` πŸ“Š Monitor (Tab) β”œβ”€β”€ Ver estado en tiempo real β”œβ”€β”€ Verificar PIDs de procesos β”œβ”€β”€ Tiempo activo └── Detener si es necesario ``` --- ## πŸ” Ejemplo PrΓ‘ctico ### Transmitir a YouTube y Facebook ```bash # 1. Iniciar servicios ./docker-manager.sh # Selecciona opciΓ³n 1 # 2. Abrir panel web # OpciΓ³n 14 del menΓΊ, o: open http://localhost:8501 # 3. En el panel: # - Sidebar β†’ Configurar YouTube y Facebook # - BΓΊsqueda β†’ Buscar "CNN live" # - Control β†’ Activar switches de YouTube y Facebook # - Monitor β†’ Ver que ambas estΓ©n transmitiendo 🟒 # 4. Detener cuando termines # Control β†’ Desactivar switches # O desde terminal: ./docker-stop-all.sh ``` --- ## 🎨 SemΓ‘foros de Estado | SΓ­mbolo | Estado | Significado | |---------|--------|-------------| | 🟒 | TRANSMITIENDO | Activo y funcionando | | βšͺ | LISTO | Configurado, no transmitiendo | | πŸ”΄ | ERROR | Problema con la transmisiΓ³n | | ⚠️ | DESHABILITADA | Configurada pero desactivada | --- ## πŸ†˜ SoluciΓ³n de Problemas ### ❌ "No se pudo obtener la URL del stream" **Causas:** - Video no estΓ‘ EN VIVO (πŸ”΄) - Video con restricciones - yt-dlp desactualizado **Soluciones:** ```bash # Actualizar yt-dlp ./docker-manager.sh # Selecciona opciΓ³n 11 # O manualmente: docker exec streamlit_panel pip install --upgrade yt-dlp # Reconstruir contenedores ./docker-manager.sh # Selecciona opciΓ³n 6 ``` ### ❌ "Error al descargar subtΓ­tulos" **SoluciΓ³n:** - El video puede no tener subtΓ­tulos disponibles - Intenta con otro video - Verifica que el video sea accesible pΓΊblicamente ### ❌ "TransmisiΓ³n se detuvo" **Verificar:** ```bash # Ver logs docker logs streamlit_panel # Verificar PIDs en el Monitor (Tab) # Estado del proceso: βœ… Vivo / ❌ Muerto # Verificar que video siga en vivo # Verificar Stream Key correcta ``` ### ❌ "Puerto ya en uso" **SoluciΓ³n:** ```bash # Ver quΓ© usa el puerto lsof -i :8080 # FastAPI lsof -i :8501 # Streamlit # Cambiar puerto en docker-compose.yml # O detener el proceso que lo usa ``` --- ## πŸ“Š Arquitectura ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Panel Web Streamlit (8501) β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚BΓΊsquedaβ”‚ Control β”‚ Monitor β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ HTTP β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ FastAPI Backend (8000/8080) β”‚ β”‚ /stream/{video_id} - Obtener URL m3u8 β”‚ β”‚ /transcript/{video_id} - Obtener subtΓ­ts. β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ yt-dlp β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ YouTube Live β”‚ β”‚ (Extrae URL m3u8 HLS) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ URL m3u8 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Procesos FFmpeg (PIDs) β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚YouTube β”‚ Facebook β”‚ Twitch ... β”‚ β”‚ β”‚ β”‚PID:1234 β”‚PID:1235 β”‚ PID:1236 β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ RTMP/RTMPS β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Plataformas de Destino β”‚ β”‚ YouTube β”‚ Facebook β”‚ Twitch β”‚ X β”‚ etc. β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸ“ Archivos de ConfiguraciΓ³n ``` TubeScript-API/ β”œβ”€β”€ stream_config.json # ConfiguraciΓ³n de plataformas β”œβ”€β”€ process_state.json # Estado de procesos FFmpeg β”œβ”€β”€ streams_state.json # Estado de transmisiones β”œβ”€β”€ cookies.txt # Cookies de YouTube (opcional) └── .env # Variables de entorno ``` --- ## πŸš€ Actualizar el Sistema ```bash # 1. Detener servicios ./docker-stop-all.sh # 2. Obtener ΓΊltimos cambios (si usas Git) git pull # 3. Reconstruir contenedores docker-compose build --no-cache # 4. Iniciar servicios docker-compose up -d # 5. Actualizar yt-dlp docker exec tubescript_api pip install --upgrade yt-dlp docker exec streamlit_panel pip install --upgrade yt-dlp ``` O usando el gestor: ```bash ./docker-manager.sh # Selecciona: 6) Reconstruir contenedores # Luego: 11) Actualizar yt-dlp ``` --- ## πŸ“š DocumentaciΓ³n Completa - **[Panel Streamlit](PANEL_STREAMLIT_GUIA.md)**: GuΓ­a detallada del panel web - **[Comandos Docker](DOCKER_COMANDOS_SEPARADOS_COMPLETO.md)**: Comandos separados - **[Docker Guide](DOCKER_GUIDE.md)**: GuΓ­a completa de Docker - **[API Config](API_URL_CONFIG.md)**: ConfiguraciΓ³n de URLs --- ## πŸ”— Enlaces Útiles - **Panel Web**: http://localhost:8501 - **API FastAPI**: http://localhost:8080 - **API Docs**: http://localhost:8080/docs - **API Redoc**: http://localhost:8080/redoc --- ## πŸ’‘ Consejos y Trucos ### Para Desarrollo ```bash # Usar API externa en Streamlit echo "API_URL=http://192.168.1.100:8080" > .env ./docker-start-streamlit.sh ``` ### Para ProducciΓ³n ```bash # Usar dominio real echo "API_URL=https://api.tudominio.com" > .env docker-compose up -d ``` ### Para Debugging ```bash # Ejecutar en modo interactivo docker run -it --rm \ --network tubescript-network \ -p 8080:8000 \ tubescript-api \ uvicorn main:app --host 0.0.0.0 --port 8000 ``` --- ## πŸ“¦ Requisitos del Sistema **MΓ­nimos:** - Docker 20.10+ - 2 GB RAM - 5 GB Disco - 10 Mbps Upload **Recomendados:** - Docker 24+ - 4 GB RAM - 10 GB SSD - 25 Mbps Upload (por transmisiΓ³n) --- ## 🎯 PrΓ³ximos Pasos 1. βœ… Configura tus plataformas 2. βœ… Prueba con un video en vivo 3. βœ… Monitorea el estado en tiempo real 4. πŸ“– Lee la [GuΓ­a Completa del Panel](PANEL_STREAMLIT_GUIA.md) 5. πŸš€ Β‘Comienza a transmitir! --- ## πŸ“ž Soporte ΒΏProblemas? Revisa: 1. Los logs: `docker logs -f streamlit_panel` 2. El estado: `docker ps` 3. La documentaciΓ³n completa en los archivos MD --- **TubeScript API Pro Β© 2026** Transmite en vivo a mΓΊltiples plataformas simultΓ‘neamente πŸš€