9.1 KiB
╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ 🔧 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 <module>
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
# Verificar Docker Desktop está activo
docker ps
Si no muestra nada, abre Docker Desktop.
Paso 2: Iniciar Contenedores
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
# Dar permisos (solo la primera vez)
chmod +x fix-ytdlp.sh
# Ejecutar script de reinstalación
./fix-ytdlp.sh
El script hará:
- Desinstalar yt-dlp antiguo
- Limpiar cache
- Reinstalar desde cero
- Verificar versión
- Reiniciar contenedores
Paso 4: Verificar Instalación
# 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
# Abrir panel
open http://localhost:8501
Probar:
- Ir a pestaña 🔍 Búsqueda
- Buscar: "DW News live"
- Seleccionar un video
- Ir a pestaña 🎛️ Control
- Debe mostrar: "✅ URL obtenida con: Mejor calidad disponible"
🔧 SOLUCIONES ALTERNATIVAS
Solución A: Reinstalación Manual
# 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)
# 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
# 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
# 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
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
# 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
# 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
# Listar paquetes instalados
docker exec streamlit_panel pip list | grep -i "yt"
# Debe mostrar:
# yt-dlp 2024.XX.XX
Verificar Python
# 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
# 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
# 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
# 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 ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝