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

8.4 KiB
Raw Permalink Blame History

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

"-f", "best[ext=m3u8]/bestvideo[ext=m3u8]+bestaudio[ext=m3u8]/best"
timeout=30

Ahora:

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

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:

chmod +x docker-rebuild.sh
./docker-rebuild.sh

4 Dockerfile Mejorado

Verificación añadida:

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)

# 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

# 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

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

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

# Local
pip install -U yt-dlp

# Docker
./docker-rebuild.sh

Solución 3: Usar Cookies

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

./docker-rebuild.sh

Local:

pip install yt-dlp

📋 CHECKLIST POST-REBUILD

Después del rebuild, verifica:

Verificar en contenedor:

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

# 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

python3 test_system.py

2. Ver Logs Detallados

docker-compose logs streamlit-panel | tail -50

3. Probar Manualmente

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