Añadir mu-plugins y scripts de feadulta

This commit is contained in:
2026-06-28 15:10:46 -04:00
parent bce7e42f44
commit b6116b066d
106 changed files with 17600 additions and 2 deletions
+76
View File
@@ -0,0 +1,76 @@
#!/usr/bin/env bash
# ============================================================================
# translate_gap.sh — Traduce el "gap" marzo→ahora de feadulta a EN/FR/IT/PT.
#
# Hace TODO de una vez: comprobaciones previas, traduce las 15 cartas semanales
# (marzo a junio) + sus artículos con Gemma local, remapea categorías y enseña
# el recuento final. Idempotente y REANUDABLE: re-ejecutar es seguro (salta lo
# ya traducido). NO publica nada (todo queda en borrador / draft).
#
# USO (un solo comando, en segundo plano):
# nohup bash scripts/translate_gap.sh > /tmp/feadulta-gap.out 2>&1 &
# Y para ver el progreso:
# tail -f /tmp/feadulta-gap.log
#
# Ver issue rafa/feadulta#75.
# ============================================================================
set -u
cd "$(dirname "$0")/.." || { echo "No puedo entrar en el repo"; exit 1; }
LOG=/tmp/feadulta-gap.log
LANGS="en,fr,it,pt"
# Cartas del gap (de más reciente a más antigua). Override opcional: CARTAS="45018" bash ...
CARTAS="${CARTAS:-45018 44997 44975 44230 44229 44228 44090 44089 44088 44087 44086 44085 44084 44083 42590}"
ts() { date '+%Y-%m-%d %H:%M:%S'; }
say() { echo "[$(ts)] $*" | tee -a "$LOG"; }
say "================ INICIO batch del gap (draft) ================"
# 1) LM Studio + Gemma cargado
say "Preflight 1/2: LM Studio / Gemma..."
if ! curl -s --max-time 10 http://172.19.128.1:1234/v1/models 2>/dev/null | grep -q 'gemma-4-e4b'; then
say "ERROR: LM Studio no responde o 'google/gemma-4-e4b' no está cargado."
say " -> En Windows: abre LM Studio, carga 'google/gemma-4-e4b', server en 0.0.0.0:1234."
exit 1
fi
say " OK: Gemma disponible."
# 2) Contenedores docker arriba
say "Preflight 2/2: contenedores docker..."
for cnt in wordpress-web wordpress-mysql; do
if ! docker ps --format '{{.Names}}' | grep -qx "$cnt"; then
say "ERROR: el contenedor '$cnt' no está arriba. Arranca el stack (docker compose up -d) y reintenta."
exit 1
fi
done
say " OK: wordpress-web y wordpress-mysql arriba."
# 3) Traducir cada carta + sus artículos
N=$(echo $CARTAS | wc -w)
i=0
for c in $CARTAS; do
i=$((i+1))
say "=== Carta $c ($i/$N) -> $LANGS (draft) ==="
python3 scripts/translate_post.py --carta "$c" --langs "$LANGS" --status draft 2>&1 | tee -a "$LOG"
done
# 4) Remap de categorías (idempotente, sin Gemma): mete cada traducción en la
# categoría de su idioma (arregla el archivo de carta por idioma).
say "Remapeando categorías de todas las traducciones..."
docker cp scripts/remap_translation_cats.php wordpress-web:/tmp/remap_translation_cats.php >/dev/null 2>&1
docker exec wordpress-web php /tmp/remap_translation_cats.php 2>&1 | tee -a "$LOG"
# 5) Recuento final por idioma
say "Recuento final de traducciones por idioma (meta traduccion_origen):"
docker exec wordpress-mysql mysql -uwordpress_user -pwordpress_pass wordpress_db -N -e "
SELECT t.slug, COUNT(*) FROM wp_postmeta m
JOIN wp_term_relationships tr ON m.post_id=tr.object_id
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id=tt.term_taxonomy_id AND tt.taxonomy='language'
JOIN wp_terms t ON tt.term_id=t.term_id
WHERE m.meta_key='traduccion_origen' GROUP BY t.slug;" 2>/dev/null | tee -a "$LOG"
say "================ FIN batch del gap ================"
say "Todo en DRAFT. No se ha publicado nada. Avisa a Rafa para revisar antes de publicar."
say "Log completo: $LOG"