╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ 🔧 SOLUCIÓN AL ERROR DE YT-DLP (Traceback) ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝ ## 🐛 ERROR DETECTADO ``` {"detail":"Error de yt-dlp: Traceback (most recent call last): File \"/usr/local/bin/yt-dlp\", line 7, in sys.exit(main()) ^^^^^^ File \"/usr/local/lib/python3.11/site-packages/yt_dlp/__init__.py\", lin"} ``` **Causa:** yt-dlp está corrupto o incompatible en el contenedor Docker. --- ## ✅ SOLUCIONES IMPLEMENTADAS ### 1️⃣ Logging Mejorado **Archivo:** `streamlit_app.py` Ahora el panel web muestra: - ✅ Errores detallados de yt-dlp - ✅ Mensajes de cada intento de formato - ✅ Sugerencias específicas de solución - ✅ Comandos para ejecutar --- ### 2️⃣ Script de Reinstalación **Archivo:** `fix-ytdlp.sh` Script que: - ✅ Desinstala yt-dlp corrupto - ✅ Limpia cache de pip - ✅ Reinstala desde cero - ✅ Verifica instalación - ✅ Reinicia contenedores --- ## 🚀 SOLUCIÓN PASO A PASO ### Paso 1: Asegúrate que Docker esté corriendo ```bash # Verificar Docker Desktop está activo docker ps ``` Si no muestra nada, abre Docker Desktop. --- ### Paso 2: Iniciar Contenedores ```bash cd /Users/cesarmendivil/Documents/Nextream/TubeScript-API # Iniciar servicios docker-compose up -d # Esperar 10 segundos sleep 10 # Verificar que estén corriendo docker-compose ps ``` **Debe mostrar:** ``` NAME STATUS streamlit_panel Up tubescript_api Up ``` --- ### Paso 3: Ejecutar Script de Reinstalación ```bash # Dar permisos (solo la primera vez) chmod +x fix-ytdlp.sh # Ejecutar script de reinstalación ./fix-ytdlp.sh ``` **El script hará:** 1. Desinstalar yt-dlp antiguo 2. Limpiar cache 3. Reinstalar desde cero 4. Verificar versión 5. Reiniciar contenedores --- ### Paso 4: Verificar Instalación ```bash # Verificar yt-dlp en streamlit docker exec streamlit_panel yt-dlp --version # Verificar yt-dlp en API docker exec tubescript_api yt-dlp --version ``` **Debe mostrar:** Una versión como `2024.XX.XX` o `2026.XX.XX` --- ### Paso 5: Probar en el Panel Web ```bash # Abrir panel open http://localhost:8501 ``` **Probar:** 1. Ir a pestaña 🔍 Búsqueda 2. Buscar: "DW News live" 3. Seleccionar un video 4. Ir a pestaña 🎛️ Control 5. Debe mostrar: "✅ URL obtenida con: Mejor calidad disponible" --- ## 🔧 SOLUCIONES ALTERNATIVAS ### Solución A: Reinstalación Manual ```bash # Entrar al contenedor docker exec -it streamlit_panel bash # Dentro del contenedor: pip uninstall -y yt-dlp pip cache purge pip install --no-cache-dir --force-reinstall yt-dlp exit # Reiniciar contenedor docker-compose restart streamlit-panel ``` --- ### Solución B: Rebuild Completo (Si persiste) ```bash # Detener todo docker-compose down # Limpiar imágenes docker-compose down --rmi all # Reconstruir sin cache docker-compose build --no-cache # Iniciar docker-compose up -d # Verificar docker-compose ps ``` --- ### Solución C: Actualizar requirements.txt ```bash # Editar requirements.txt nano requirements.txt # Agregar o cambiar: yt-dlp>=2024.1.1 # Guardar y rebuild docker-compose build --no-cache docker-compose up -d ``` --- ## 🧪 TESTING ### Test 1: Verificar yt-dlp Funciona ```bash # Probar directamente en contenedor docker exec streamlit_panel yt-dlp -g -f best \ "https://www.youtube.com/watch?v=VIDEO_EN_VIVO" # Debe retornar una URL HTTP/HTTPS ``` --- ### Test 2: Probar con Python ```bash docker exec streamlit_panel python3 -c " import yt_dlp print('yt-dlp importado correctamente') print(f'Versión: {yt_dlp.version.__version__}') " ``` **Debe mostrar:** ``` yt-dlp importado correctamente Versión: 2024.XX.XX ``` --- ### Test 3: Probar Función get_stream_url ```bash # Crear script de prueba cat > test_ytdlp.py << 'EOF' import subprocess import sys video_url = "https://www.youtube.com/watch?v=VIDEO_EN_VIVO" command = [ "yt-dlp", "-g", "-f", "best", "--no-warnings", video_url ] result = subprocess.run(command, capture_output=True, text=True, timeout=60) if result.returncode == 0: print("✅ Éxito!") print(f"URL: {result.stdout.strip()}") else: print("❌ Error:") print(result.stderr) EOF # Ejecutar en contenedor docker exec streamlit_panel python3 test_ytdlp.py ``` --- ## 📊 DIAGNÓSTICO ### Ver Logs Detallados ```bash # Ver logs de Streamlit docker-compose logs streamlit-panel | tail -100 # Ver logs en tiempo real docker-compose logs -f streamlit-panel # Buscar errores específicos docker-compose logs streamlit-panel | grep -i "error\|traceback" ``` --- ### Verificar Dependencias ```bash # Listar paquetes instalados docker exec streamlit_panel pip list | grep -i "yt" # Debe mostrar: # yt-dlp 2024.XX.XX ``` --- ### Verificar Python ```bash # Ver versión de Python docker exec streamlit_panel python3 --version # Debe ser Python 3.11 ``` --- ## 🆘 SI EL ERROR PERSISTE ### 1. Ver Error Completo en UI Ahora el panel web muestra el error completo: - Ir a 🎛️ Control - Pegar URL de video - Ver mensaje de error expandido - Click en "Ver error detallado" --- ### 2. Verificar Video es EN VIVO ```bash # Verificar que el video esté realmente en vivo docker exec streamlit_panel yt-dlp --dump-json \ "URL_VIDEO" | python3 -m json.tool | grep is_live # Debe mostrar: # "is_live": true ``` --- ### 3. Probar con Video Conocido URLs de canales que siempre están en vivo: - DW News: https://www.youtube.com/@DWNews - France 24: https://www.youtube.com/@FRANCE24English - Al Jazeera: https://www.youtube.com/@aljazeeraenglish --- ### 4. Limpiar Todo y Empezar de Cero ```bash # Detener todo docker-compose down -v # Eliminar imágenes docker rmi $(docker images -q tubescript*) # Limpiar sistema Docker docker system prune -af # Rebuild desde cero docker-compose build --no-cache --pull # Iniciar docker-compose up -d # Ejecutar fix ./fix-ytdlp.sh # Probar open http://localhost:8501 ``` --- ## 📝 CHECKLIST DE SOLUCIÓN - [ ] Docker Desktop está corriendo - [ ] Contenedores iniciados: `docker-compose up -d` - [ ] Script ejecutado: `./fix-ytdlp.sh` - [ ] yt-dlp verificado: `docker exec streamlit_panel yt-dlp --version` - [ ] Panel web abierto: http://localhost:8501 - [ ] Probado con video EN VIVO (DW News, etc.) - [ ] Ver error detallado en UI si falla - [ ] Logs revisados: `docker-compose logs streamlit-panel` --- ## 💡 TIPS IMPORTANTES ✅ **Usa canales de noticias 24/7** para probar - siempre están en vivo ✅ **El script fix-ytdlp.sh** soluciona el 90% de problemas ✅ **Los errores ahora son visibles** en la UI del panel ✅ **Rebuild sin cache** si cambias código ✅ **Ver logs** para debugging: `docker-compose logs -f` --- ## 📞 COMANDOS RÁPIDOS DE REFERENCIA ```bash # Ver si Docker corre docker ps # Iniciar servicios docker-compose up -d # Reinstalar yt-dlp ./fix-ytdlp.sh # Ver versión yt-dlp docker exec streamlit_panel yt-dlp --version # Ver logs docker-compose logs -f streamlit-panel # Reiniciar servicio docker-compose restart streamlit-panel # Rebuild completo docker-compose down docker-compose build --no-cache docker-compose up -d # Limpiar todo docker-compose down -v docker system prune -af ``` --- ╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ ✅ SOLUCIÓN IMPLEMENTADA ║ ║ ║ ║ EJECUTA AHORA: ║ ║ ║ ║ 1. docker-compose up -d ║ ║ 2. ./fix-ytdlp.sh ║ ║ 3. open http://localhost:8501 ║ ║ ║ ║ Si persiste el error: ║ ║ - Ver error detallado en la UI ║ ║ - Probar con "DW News live" ║ ║ - Ejecutar rebuild completo ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝