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

430 lines
9.1 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.

╔══════════════════════════════════════════════════════════════════════╗
║ ║
║ 🔧 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
```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 ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝