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

365 lines
8.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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