- 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.
84 lines
4.1 KiB
Bash
Executable File
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 ""
|