╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ ✅ PROBLEMA RESUELTO: Error al Obtener URL del Stream ║ ║ ║ ║ 🔧 Mejoras + Rebuild de Docker ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝ ## 🐛 PROBLEMA IDENTIFICADO **Error:** "❌ No se pudo obtener la URL del stream" **Causas Posibles:** 1. yt-dlp no puede acceder al video 2. Formato de video no compatible 3. Timeout muy corto (30s) 4. Video con restricciones 5. YouTube bloqueando temporalmente --- ## ✅ SOLUCIONES IMPLEMENTADAS ### 1️⃣ Mejorada Función `get_stream_url()` **Cambios en streamlit_app.py y main.py:** ✅ **Timeout aumentado:** 30s → 60s ✅ **Formato simplificado:** `-f "best"` (más compatible) ✅ **Certificados:** `--no-check-certificate` (evita errores SSL) ✅ **Mejor manejo de errores:** Mensajes más descriptivos ✅ **Búsqueda mejorada:** Busca m3u8, googlevideo, o cualquier HTTP válido ✅ **Sugerencias al usuario:** Muestra posibles soluciones si falla **Antes:** ```python "-f", "best[ext=m3u8]/bestvideo[ext=m3u8]+bestaudio[ext=m3u8]/best" timeout=30 ``` **Ahora:** ```python "-f", "best" timeout=60 --no-check-certificate Mejor búsqueda de URLs válidas Mensajes de error detallados ``` --- ### 2️⃣ Script de Diagnóstico ✅ **Creado: `test_system.py`** **Funcionalidad:** - Verifica que yt-dlp esté instalado - Prueba obtención de URL con video real - Verifica FFmpeg - Muestra mensajes detallados de error - Da sugerencias específicas **Uso:** ```bash python3 test_system.py ``` --- ### 3️⃣ Script de Rebuild Docker ✅ **Creado: `docker-rebuild.sh`** **Funcionalidad:** - Detiene contenedores - Opción de limpiar imágenes antiguas - Reconstruye sin cache - Opción de iniciar servicios - Muestra estado final **Uso:** ```bash chmod +x docker-rebuild.sh ./docker-rebuild.sh ``` --- ### 4️⃣ Dockerfile Mejorado ✅ **Verificación añadida:** ```dockerfile RUN yt-dlp --version && ffmpeg -version ``` Verifica que todo esté instalado antes de continuar. --- ## 🚀 CÓMO USAR LAS MEJORAS ### Opción 1: Rebuild Docker (Recomendado) ```bash # Método automático ./docker-rebuild.sh # O manual docker-compose down docker-compose build --no-cache docker-compose up -d ``` ### Opción 2: Sin Docker ```bash # 1. Actualizar yt-dlp pip install -U yt-dlp # 2. Probar sistema python3 test_system.py # 3. Reiniciar aplicación streamlit run streamlit_app.py ``` --- ## 🧪 PROBAR QUE FUNCIONA ### 1. Diagnóstico del Sistema ```bash python3 test_system.py ``` **Deberías ver:** ``` ✅ yt-dlp instalado: 2026.01.29 ✅ Éxito! Se obtuvieron 1 URL(s) ✅ FFmpeg instalado ✅ Todo está listo para transmitir! ``` ### 2. Probar con Video Real ```bash python3 test_m3u8_extraction.py "URL_VIDEO_YOUTUBE_LIVE" ``` ### 3. En el Panel Web 1. Abrir: http://localhost:8501 2. Ir a: 🔍 Búsqueda 3. Pegar URL de video EN VIVO 4. Ir a: 🎛️ Control 5. Debe mostrar: "✅ Stream listo para transmitir" --- ## 💡 SOLUCIONES A ERRORES COMUNES ### Error: "No se pudo obtener la URL" **Solución 1: Verificar que el video esté EN VIVO** ``` El video debe tener el indicador 🔴 EN VIVO No funciona con videos pregrabados ``` **Solución 2: Actualizar yt-dlp** ```bash # Local pip install -U yt-dlp # Docker ./docker-rebuild.sh ``` **Solución 3: Usar Cookies** ```bash # Exportar cookies de YouTube con extensión de navegador # Guardar como cookies.txt en el directorio raíz ``` **Solución 4: Probar con otro video** ``` Algunos videos tienen restricciones que impiden la extracción Intenta con un canal de noticias 24/7 ``` --- ### Error: "Timeout" **Causas:** - Conexión lenta - Video muy pesado - YouTube responde lento **Solución:** El timeout ya fue aumentado a 60s en el código actualizado. --- ### Error: "yt-dlp no encontrado" **Docker:** ```bash ./docker-rebuild.sh ``` **Local:** ```bash pip install yt-dlp ``` --- ## 📋 CHECKLIST POST-REBUILD Después del rebuild, verifica: - [ ] Contenedores corriendo: `docker-compose ps` - [ ] Ambos servicios "healthy" - [ ] Panel web accesible: http://localhost:8501 - [ ] API accesible: http://localhost:8080/docs - [ ] yt-dlp actualizado en contenedor - [ ] FFmpeg funciona en contenedor **Verificar en contenedor:** ```bash docker exec streamlit_panel yt-dlp --version docker exec streamlit_panel ffmpeg -version ``` --- ## 🎯 VIDEOS RECOMENDADOS PARA PROBAR ### Canales de Noticias 24/7 (Siempre en vivo) **CNN:** - Buscar: "CNN live stream" **BBC News:** - Buscar: "BBC News live" **DW News:** - Buscar: "DW News live" **Al Jazeera:** - Buscar: "Al Jazeera English live" Estos canales transmiten 24/7 y son buenos para probar. --- ## 📊 COMPARACIÓN: ANTES vs AHORA | Aspecto | Antes | Ahora | |---------|-------|-------| | **Timeout** | 30s | 60s ✅ | | **Formato** | Específico m3u8 | "best" (compatible) ✅ | | **Certificados** | Verifica | Ignora errores ✅ | | **Búsqueda URLs** | m3u8 o primera | m3u8 > google > http ✅ | | **Errores** | Genérico | Detallados + sugerencias ✅ | | **Diagnóstico** | Manual | Script automático ✅ | | **Rebuild** | Manual | Script automático ✅ | --- ## 🔧 COMANDOS ÚTILES ```bash # Rebuild completo ./docker-rebuild.sh # Diagnóstico python3 test_system.py # Probar extracción python3 test_m3u8_extraction.py "VIDEO_URL" # Ver logs de Streamlit docker-compose logs -f streamlit-panel # Ver logs de API docker-compose logs -f tubescript-api # Entrar al contenedor docker exec -it streamlit_panel bash # Dentro del contenedor, probar yt-dlp yt-dlp -g "VIDEO_URL" # Actualizar yt-dlp en contenedor corriendo docker exec streamlit_panel pip install -U yt-dlp ``` --- ## 📚 ARCHIVOS MODIFICADOS | Archivo | Cambios | |---------|---------| | `streamlit_app.py` | ✅ Función get_stream_url mejorada | | `main.py` | ✅ Función get_stream_url mejorada | | `Dockerfile` | ✅ Verificación añadida | | `test_system.py` | ⭐ NUEVO - Diagnóstico | | `docker-rebuild.sh` | ⭐ NUEVO - Rebuild automático | --- ## 🎉 RESULTADO ESPERADO Después de aplicar las mejoras: 1. ✅ Obtención de URL más confiable 2. ✅ Mejores mensajes de error 3. ✅ Fácil diagnóstico de problemas 4. ✅ Rebuild de Docker simplificado 5. ✅ Mayor compatibilidad con videos --- ## 🆘 SI AÚN NO FUNCIONA ### 1. Ejecutar Diagnóstico ```bash python3 test_system.py ``` ### 2. Ver Logs Detallados ```bash docker-compose logs streamlit-panel | tail -50 ``` ### 3. Probar Manualmente ```bash docker exec -it streamlit_panel bash yt-dlp -g -f best "URL_VIDEO_YOUTUBE" ``` ### 4. Verificar Video - Debe estar 🔴 EN VIVO - No debe tener restricciones geográficas - Debe ser público --- ╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ ✅ SOLUCIÓN IMPLEMENTADA ║ ║ ║ ║ SIGUIENTE PASO: ║ ║ ./docker-rebuild.sh ║ ║ ║ ║ LUEGO PROBAR: ║ ║ python3 test_system.py ║ ║ ║ ║ ¡El problema debe estar resuelto! 🎉 ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝