TubeScript-API/docker-rebuild.sh
Cesar Mendivil 2923510c51 Add Playwright tools for extracting M3U8 URLs and proxy management
- Introduced `playwright_extract_m3u8.py` to extract M3U8 URLs from YouTube videos using Playwright.
- Added `README_PLAYWRIGHT.md` for usage instructions and requirements.
- Created `expand_and_test_proxies.py` to expand user-provided proxies and test their validity.
- Implemented `generate_proxy_whitelist.py` to generate a whitelist of working proxies based on testing results.
- Added sample proxy files: `user_proxies.txt` for user-defined proxies and `proxies_sample.txt` as a template.
- Generated `expanded_proxies.txt`, `whitelist.json`, and `whitelist.txt` for storing expanded and valid proxies.
- Included error handling and logging for proxy testing results.
2026-03-17 00:29:51 -07:00

84 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# Script para reconstruir TubeScript-API desde cero
set -e
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
ok() { echo -e "${GREEN}$1${NC}"; }
warn() { echo -e "${YELLOW}⚠️ $1${NC}"; }
err() { echo -e "${RED}$1${NC}"; }
echo "════════════════════════════════════════════════════════════"
echo " 🔨 TubeScript-API — Rebuild completo"
echo "════════════════════════════════════════════════════════════"
echo ""
# ── Verificar Docker (plugin compose, no docker-compose legacy) ──────────────
if ! docker compose version &>/dev/null; then
err "docker compose no está disponible. Instala Docker Desktop o el plugin compose."
exit 1
fi
ok "Docker compose disponible: $(docker compose version --short 2>/dev/null || echo 'ok')"
echo ""
# ── Carpeta data ──────────────────────────────────────────────────────────────
mkdir -p ./data
chmod 777 ./data 2>/dev/null || true
ok "Carpeta ./data lista (permisos 777)"
echo " Coloca cookies.txt en ./data/cookies.txt para autenticación"
echo ""
# ── Detener contenedores existentes ──────────────────────────────────────────
echo "🛑 Deteniendo contenedores..."
docker compose down --remove-orphans 2>/dev/null || true
ok "Contenedores detenidos"
echo ""
# ── Eliminar imagen anterior para forzar build limpio ─────────────────────────
echo "🧹 Eliminando imagen anterior (tubescript-api:latest)..."
docker rmi tubescript-api:latest 2>/dev/null && ok "Imagen anterior eliminada" || warn "No había imagen previa"
echo ""
# ── Build sin caché ───────────────────────────────────────────────────────────
echo "🔨 Construyendo imagen desde cero (--no-cache)..."
echo " Esto puede tardar 3-5 minutos la primera vez..."
echo ""
CACHEBUST=$(date +%s) docker compose build --no-cache
ok "Imagen construida exitosamente"
echo ""
# ── Iniciar servicios ─────────────────────────────────────────────────────────
echo "🚀 Iniciando servicios..."
docker compose up -d
ok "Servicios iniciados"
echo ""
# ── Esperar y mostrar estado ──────────────────────────────────────────────────
echo "⏳ Esperando que la API arranque (15s)..."
sleep 15
echo ""
echo "📊 Estado de contenedores:"
docker compose ps
echo ""
# ── Health check ──────────────────────────────────────────────────────────────
echo "🩺 Verificando API..."
if curl -sf http://localhost:8282/docs -o /dev/null; then
ok "API respondiendo en http://localhost:8282"
else
warn "API aún no responde (puede necesitar más tiempo). Revisa: docker compose logs -f"
fi
echo ""
echo "════════════════════════════════════════════════════════════"
ok "¡Rebuild completado!"
echo "════════════════════════════════════════════════════════════"
echo ""
echo " API: http://localhost:8282"
echo " Docs: http://localhost:8282/docs"
echo " Logs: docker compose logs -f"
echo " Cookies: curl -X POST http://localhost:8282/upload_cookies -F 'file=@cookies.txt'"
echo ""