117 lines
3.9 KiB
Bash
117 lines
3.9 KiB
Bash
#!/bin/bash
|
|
# Test completo de TubeScript-API con cookies reales
|
|
set -e
|
|
|
|
REPO="/home/xesar/PycharmProjects/TubeScript-API"
|
|
cd "$REPO"
|
|
LOG="/tmp/tubescript_test_$(date +%H%M%S).log"
|
|
|
|
echo "======================================================"
|
|
echo " TubeScript-API — Test completo"
|
|
echo " Log: $LOG"
|
|
echo "======================================================"
|
|
|
|
# ---------- 1. Reconstruir imagen ----------
|
|
echo ""
|
|
echo ">>> [1/5] Parando contenedor anterior..."
|
|
docker stop tubescript_api 2>/dev/null && echo " Parado." || echo " No estaba corriendo."
|
|
docker rm tubescript_api 2>/dev/null && echo " Eliminado." || echo " No existia."
|
|
|
|
echo ""
|
|
echo ">>> [2/5] Construyendo imagen sin caché..."
|
|
docker build --no-cache -f Dockerfile.api -t tubescript-api:latest . 2>&1 \
|
|
| grep -E "^#|DONE|ERROR|naming|Built" || true
|
|
echo " Build OK."
|
|
|
|
# ---------- 2. Levantar ----------
|
|
echo ""
|
|
echo ">>> [3/5] Levantando contenedor..."
|
|
docker run -d \
|
|
--name tubescript_api \
|
|
--network tubescript-network \
|
|
-p 8282:8000 \
|
|
-v "${REPO}/data:/app/data:rw" \
|
|
-e PYTHONUNBUFFERED=1 \
|
|
-e API_COOKIES_PATH=/app/data/cookies.txt \
|
|
--restart unless-stopped \
|
|
tubescript-api:latest
|
|
echo " Esperando arranque (8s)..."
|
|
sleep 8
|
|
|
|
docker logs tubescript_api 2>&1 | grep -E "Uvicorn running|startup|ERROR" | head -5
|
|
|
|
# ---------- 3. Verificar código en imagen ----------
|
|
echo ""
|
|
echo ">>> [4/5] Verificando lógica de player_client en imagen..."
|
|
echo " Líneas clave en main.py:"
|
|
docker exec tubescript_api grep -n "mweb\|_yt_client_args\|client =" /app/main.py | head -10
|
|
|
|
# ---------- 4. Pruebas yt-dlp directas ----------
|
|
echo ""
|
|
echo ">>> [5/5] Pruebas yt-dlp..."
|
|
|
|
echo ""
|
|
echo " [A] android SIN cookies (cliente base, sin n-challenge):"
|
|
docker exec tubescript_api yt-dlp \
|
|
--no-warnings --skip-download \
|
|
--extractor-args "youtube:player_client=android" \
|
|
--print title \
|
|
"https://www.youtube.com/watch?v=dQw4w9WgXcQ" 2>&1 \
|
|
&& echo " ✅ OK" || echo " ❌ FALLO"
|
|
|
|
echo ""
|
|
echo " [B] mweb,android CON cookies (mweb acepta cookies web, android como fallback):"
|
|
docker exec tubescript_api yt-dlp \
|
|
--cookies /app/data/cookies.txt \
|
|
--no-warnings --skip-download \
|
|
--extractor-args "youtube:player_client=mweb,android" \
|
|
--print title \
|
|
"https://www.youtube.com/watch?v=dQw4w9WgXcQ" 2>&1 \
|
|
&& echo " ✅ OK" || echo " ❌ FALLO"
|
|
|
|
echo ""
|
|
echo " [C] dump-json CON cookies (para /debug/metadata):"
|
|
docker exec tubescript_api yt-dlp \
|
|
--cookies /app/data/cookies.txt \
|
|
--no-warnings --skip-download \
|
|
--extractor-args "youtube:player_client=mweb" \
|
|
--dump-json \
|
|
"https://www.youtube.com/watch?v=dQw4w9WgXcQ" 2>&1 \
|
|
| python3 -c "import sys,json; d=json.loads(sys.stdin.read()); print(' title:', d.get('title')); print(' uploader:', d.get('uploader'))" \
|
|
&& echo " ✅ OK" || echo " ❌ FALLO"
|
|
|
|
# ---------- 5. Endpoints API ----------
|
|
echo ""
|
|
echo " [D] Endpoint /debug/metadata:"
|
|
sleep 2
|
|
RESULT=$(curl -s --max-time 30 "http://127.0.0.1:8282/debug/metadata/dQw4w9WgXcQ")
|
|
echo "$RESULT" | python3 -c "
|
|
import sys,json
|
|
d=json.loads(sys.stdin.read())
|
|
if 'detail' in d:
|
|
print(' ❌ ERROR:', d['detail'][:200])
|
|
else:
|
|
print(' ✅ title :', d.get('title','?'))
|
|
print(' ✅ uploader:', d.get('uploader','?'))
|
|
print(' ✅ is_live :', d.get('is_live','?'))
|
|
" 2>&1
|
|
|
|
echo ""
|
|
echo " [E] Endpoint /transcript/dQw4w9WgXcQ?lang=en:"
|
|
RESULT2=$(curl -s --max-time 60 "http://127.0.0.1:8282/transcript/dQw4w9WgXcQ?lang=en")
|
|
echo "$RESULT2" | python3 -c "
|
|
import sys,json
|
|
d=json.loads(sys.stdin.read())
|
|
if 'detail' in d:
|
|
print(' ❌ ERROR:', d['detail'][:200])
|
|
else:
|
|
print(' ✅ count :', d.get('count','?'))
|
|
print(' ✅ preview :', str(d.get('text',''))[:100])
|
|
" 2>&1
|
|
|
|
echo ""
|
|
echo "======================================================"
|
|
echo " DONE. API: http://127.0.0.1:8282 Docs: http://127.0.0.1:8282/docs"
|
|
echo "======================================================"
|
|
|