TubeScript-API/SOLUCION_TRACEBACK_YTDLP.md
2026-01-29 22:49:00 -07:00

9.1 KiB
Raw Permalink Blame History

╔══════════════════════════════════════════════════════════════════════╗ ║ ║ ║ 🔧 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á:

  1. Desinstalar yt-dlp antiguo
  2. Limpiar cache
  3. Reinstalar desde cero
  4. Verificar versión
  5. 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:

  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

# 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:


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 ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════╝