139 lines
3.9 KiB
Bash
139 lines
3.9 KiB
Bash
#!/bin/bash
|
|
# Sin cookies → android (sin n-challenge, sin Node.js)
|
|
# Con cookies → web + Node.js (Node.js resuelve n-challenge/signature)
|
|
# for_stream → android (mejor HLS en lives)
|
|
# Script de prueba completo — guarda TODO en /tmp/resultado.txt
|
|
exec > /tmp/resultado.txt 2>&1
|
|
|
|
REPO="/home/xesar/PycharmProjects/TubeScript-API"
|
|
cd "$REPO"
|
|
|
|
echo "=== $(date) ==="
|
|
|
|
# ---------- 1. Rebuild imagen ----------
|
|
echo "--- Parando contenedor anterior ---"
|
|
docker rm -f tubescript_api 2>/dev/null || true
|
|
|
|
echo "--- Construyendo imagen (CACHEBUST para forzar COPY . /app fresco) ---"
|
|
# --build-arg CACHEBUST=$(date +%s) invalida solo la capa COPY . /app
|
|
# (mucho más rápido que --no-cache que descarga todo desde cero)
|
|
docker build \
|
|
--build-arg CACHEBUST="$(date +%s)" \
|
|
-f Dockerfile.api \
|
|
-t tubescript-api:latest . 2>&1 | tail -8
|
|
echo "BUILD_RC=$?"
|
|
|
|
# ---------- 2. Levantar ----------
|
|
echo "--- 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 "RC_RUN=$?"
|
|
|
|
sleep 10
|
|
|
|
echo "--- docker ps ---"
|
|
docker ps --format "{{.Names}} {{.Status}} {{.Ports}}" | grep tube || echo "NO CORRIENDO"
|
|
|
|
echo "--- uvicorn logs ---"
|
|
docker logs tubescript_api 2>&1 | tail -4
|
|
|
|
echo "--- _yt_client_args en imagen (verificar lógica nueva) ---"
|
|
docker exec tubescript_api grep -A12 "def _yt_client_args" /app/main.py
|
|
|
|
echo ""
|
|
echo "=== PRUEBA A: android SIN cookies ==="
|
|
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 "RC_A=$?"
|
|
|
|
echo ""
|
|
echo "=== PRUEBA B: web + Node.js CON cookies ==="
|
|
docker exec tubescript_api yt-dlp \
|
|
--cookies /app/data/cookies.txt \
|
|
--no-warnings --skip-download \
|
|
--extractor-args "youtube:player_client=web" \
|
|
--js-runtimes "node:/usr/bin/node" \
|
|
--print title \
|
|
"https://www.youtube.com/watch?v=dQw4w9WgXcQ" 2>&1
|
|
echo "RC_B=$?"
|
|
|
|
echo ""
|
|
echo "=== PRUEBA C: endpoint /debug/metadata ==="
|
|
sleep 2
|
|
curl -s --max-time 30 "http://127.0.0.1:8282/debug/metadata/dQw4w9WgXcQ" \
|
|
| python3 -c "
|
|
import sys,json
|
|
raw=sys.stdin.read()
|
|
try:
|
|
d=json.loads(raw)
|
|
if 'detail' in d:
|
|
print('ERROR:', d['detail'][:200])
|
|
else:
|
|
print('title :', d.get('title','?'))
|
|
print('uploader:', d.get('uploader','?'))
|
|
print('duration:', d.get('duration','?'))
|
|
except Exception as e:
|
|
print('PARSE ERROR:', e)
|
|
print('RAW:', raw[:300])
|
|
"
|
|
echo "RC_C=$?"
|
|
|
|
echo ""
|
|
echo "=== PRUEBA D: endpoint /transcript?lang=en ==="
|
|
curl -s --max-time 90 "http://127.0.0.1:8282/transcript/dQw4w9WgXcQ?lang=en" \
|
|
| python3 -c "
|
|
import sys,json
|
|
raw=sys.stdin.read()
|
|
try:
|
|
d=json.loads(raw)
|
|
if 'detail' in d:
|
|
print('ERROR:', d['detail'][:200])
|
|
else:
|
|
print('count :', d.get('count','?'))
|
|
print('preview:', str(d.get('text','?'))[:120])
|
|
except Exception as e:
|
|
print('PARSE ERROR:', e)
|
|
print('RAW:', raw[:200])
|
|
"
|
|
echo "RC_D=$?"
|
|
|
|
echo ""
|
|
echo "=== PRUEBA E: /transcript/QjK5wq8L3Ac (sin subtítulos — mensaje claro esperado) ==="
|
|
curl -s --max-time 60 "http://127.0.0.1:8282/transcript/QjK5wq8L3Ac?lang=es" \
|
|
| python3 -c "
|
|
import sys,json
|
|
raw=sys.stdin.read()
|
|
try:
|
|
d=json.loads(raw)
|
|
if 'detail' in d:
|
|
print('DETALLE:', d['detail'][:250])
|
|
else:
|
|
print('OK count:', d.get('count','?'))
|
|
except Exception as e:
|
|
print('RAW:', raw[:200])
|
|
"
|
|
echo "RC_E=$?"
|
|
|
|
echo ""
|
|
echo "=== PRUEBA F: /debug/metadata/QjK5wq8L3Ac (title con cookies) ==="
|
|
curl -s --max-time 30 "http://127.0.0.1:8282/debug/metadata/QjK5wq8L3Ac" \
|
|
| python3 -c "
|
|
import sys,json
|
|
d=json.loads(sys.stdin.read())
|
|
print('title:',d.get('title','?')) if 'title' in d else print('ERROR:',d.get('detail','?')[:200])
|
|
"
|
|
echo "RC_F=$?"
|
|
|
|
echo ""
|
|
echo "=== FIN ==="
|