From df7bf98ef1e75037502d4baf4d09852a46932d5a Mon Sep 17 00:00:00 2001 From: rafa Date: Wed, 5 Aug 2026 07:09:29 -0400 Subject: [PATCH] Apunta los scripts de sync prod al Hetzner nuevo y suma trabajo pendiente MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sync_translations_to_prod.py / sync_audio_to_prod.py / sync_carta_from_prod.py: migran de FEA_PROD_HOST/PASS (CDMON, password) a FEA_PROD_SSH_HOST/PASS + FEA_PROD_DOCKER_CONTAINER (Hetzner/Coolify, auth por clave), con wrapping docker exec y el fix del bug de redirecciones (wc -c/cat) resuelto en el host en vez de dentro del contenedor. - fea_translate_helper.php: subcomando clone_new para clonar en ID local nuevo cuando el ID de prod ya está ocupado localmente. - translate_post.py: --dry-run. - tts_produce.py: --allow-default-voice (voz Nico solo si se permite explícitamente para autores sin voz clonada) + fix voice_for_author. - minimax_tts.py: parámetro speed en t2a/_synth_chunk. - mirror-antiguo/deploy/nginx-mirror.conf: redirects de URLs históricas de catálogo y vista imprimible EFFA. - Importaciones humanas de Pagola (carta 738) + scripts/manifest de la fase A Enrique, y release_issue181_prod.sh / cdmon-retire-fewp1.sh. - .gitignore: excluye docs/backups/ (dumps SQL, mismo motivo que backups/*). Co-Authored-By: Claude Sonnet 5 --- .gitignore | 4 + .../enrique-2026-07-25-prod-dry-run.md | 71 ++++++++ import_avatars_62.php | 50 ++++++ .../pagola-human/9r_2_eng_Pagola.docx | Bin 0 -> 37942 bytes .../carta738/pagola-human/9r_3_fr_Pagola.docx | Bin 0 -> 38024 bytes .../carta738/pagola-human/9r_4_it_Pagola.docx | Bin 0 -> 37939 bytes .../carta738/pagola-human/9r_5_pt_Pagola.docx | Bin 0 -> 37961 bytes manifest_62.json | 1 + mirror-antiguo/deploy/nginx-mirror.conf | 15 ++ ...pped-containers.txt.hecho-20260730T014132Z | 10 ++ scripts/cdmon-retire-fewp1.sh | 37 ++++ scripts/fea_translate_helper.php | 41 +++++ scripts/import_human_pagola_translations.py | 135 ++++++++++++++ scripts/minimax_tts.py | 14 +- scripts/phase_a_enrique_preview.py | 151 ++++++++++++++++ scripts/release_issue181_prod.sh | 167 ++++++++++++++++++ scripts/sync_audio_to_prod.py | 138 ++++++++++----- scripts/sync_carta_from_prod.py | 141 +++++++++++---- scripts/sync_translations_to_prod.py | 83 ++++++--- scripts/translate_post.py | 18 +- scripts/tts_produce.py | 14 +- 21 files changed, 980 insertions(+), 110 deletions(-) create mode 100644 docs/releases/enrique-2026-07-25-prod-dry-run.md create mode 100644 import_avatars_62.php create mode 100644 imports/carta738/pagola-human/9r_2_eng_Pagola.docx create mode 100644 imports/carta738/pagola-human/9r_3_fr_Pagola.docx create mode 100644 imports/carta738/pagola-human/9r_4_it_Pagola.docx create mode 100644 imports/carta738/pagola-human/9r_5_pt_Pagola.docx create mode 100644 manifest_62.json create mode 100644 mirror-antiguo/stopped-containers.txt.hecho-20260730T014132Z create mode 100755 scripts/cdmon-retire-fewp1.sh create mode 100644 scripts/import_human_pagola_translations.py create mode 100644 scripts/phase_a_enrique_preview.py create mode 100755 scripts/release_issue181_prod.sh diff --git a/.gitignore b/.gitignore index 967c352..53b1940 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,10 @@ joomla-php83/ backups/* !backups/README.md +# Backups pesados (GBs) bajo docs/ — mismo motivo que backups/*, ruta distinta +docs/backups/* +!docs/backups/README.md + # Capturas de pantalla capturas/ diff --git a/docs/releases/enrique-2026-07-25-prod-dry-run.md b/docs/releases/enrique-2026-07-25-prod-dry-run.md new file mode 100644 index 0000000..2aab853 --- /dev/null +++ b/docs/releases/enrique-2026-07-25-prod-dry-run.md @@ -0,0 +1,71 @@ +# Release dry-run — Enrique Martínez Lozano / carta «Hacia el corazón» + +**Estado:** preparado localmente; **no ejecutado en producción**. + +## Validación local completada + +- Comentario ES: `#55041` — `El tesoro está ya en nosotros` + - Categorías: `Comentarios al evangelio` + `Feadulta`. + - Audio: `tts/55041.mp3`, 2,221,101 bytes, voz `NicoFeadulta2026`. + - QA Haiku: aprobado tras correcciones objetivas EN/FR/IT. +- Traducciones del comentario: EN `#55047`, FR `#55048`, IT `#55049`, PT `#55050`. +- Carta local ES: `#55042` — `Hacia el corazón` (slug técnico de preview conservado). + - Traducciones: EN `#55051`, FR `#55052`, IT `#55053`, PT `#55054`. + - QA Haiku: contenido aprobado tras correcciones; 24 enlaces con destino traducido se repuntaron. Los 12 enlaces externos que quedan son fallback ES: no existe post destino traducido en local (verificado por `post_title` exacto y Polylang). +- Render comprobado en Tailscale: + - Comentario ES: título correcto, categorías correctas y reproductor HTML5 visible. + - Carta FR: título correcto; Enrique aparece tras Fray Marcos y antes de Pagola. + +## Evidencia de producción (sólo lectura server-side) + +- Carta real: `#54914`, título `Hacia el corazón`, estado `publish`. +- Hash actual de contenido prod: `5e7eb1b880bfc6311edb78ac8b6e81639f5b4502282a1b182c610b1d01308b69`. +- Hash candidato local: `6fdb4929fcb5b49b7f2dc1deb7c6f5be70983af866d44c5d5c27d2866c09418c`. +- La carta candidata lleva `fea_phase_a_source_prod_id=54914`; por tanto debe **actualizar #54914**, no crearse una carta nueva. + +## Dry-runs que pasaron + +```bash +# Crea solamente el grupo nuevo del comentario (ES + EN/FR/IT/PT): 5 posts draft +python3 scripts/sync_translations_to_prod.py --ids 55041 --dry-run + +# Sube y asocia solamente el MP3 de Enrique +python3 scripts/sync_audio_to_prod.py --ids 55041 --dry-run +``` + +Ambos devolvieron `ok/error=1/0` (audio) y un grupo Polylang de cinco posts (comentario). + +## Guardarraíl crítico + +**NO ejecutar:** + +```bash +python3 scripts/sync_translations_to_prod.py --ids 55041,55042 +``` + +El dry-run demostró que clonaría `#55042` como una segunda carta ES. No actualiza la carta real `#54914`. + +## Release que debe ejecutar Rafa (producción) + +1. Backup de producción y snapshot server-side de `#54914`. +2. Crear el grupo nuevo del comentario desde `#55041` (ES + EN/FR/IT/PT), inicialmente en `draft`; anotar los IDs reales de producción. +3. Subir `tts/55041.mp3` y asociarlo al ID ES real creado en producción. +4. Actualizar **solamente** título/contenido de la carta real `#54914` con el candidato local `#55042`; mantener título `Hacia el corazón`, autor, fecha y estado existentes. +5. Crear EN/FR/IT/PT de la carta contra el origen real `#54914` y enlazarlas en Polylang. No clonar otra ES. +6. Releer por servidor los IDs creados y `#54914`; comprobar: + - Enrique sólo está en `Evangelio y comentarios al Evangelio`, tras Fray Marcos y antes de Pagola. + - No aparece en `Artículos seleccionados`. + - Cada carta enlaza a Enrique en su mismo idioma. + - El reproductor del ES carga `tts/55041.mp3`. +7. Sólo tras esas lecturas, promover los drafts de producción a `publish`. + +## Rollback + +- Restaurar el backup de producción previo. +- Alternativamente, restaurar el contenido/hash previo de `#54914` y despublicar el nuevo grupo + audio de Enrique. + +## Backups locales relacionados + +- `docs/backups/enrique-translations-20260725T004921Z/` +- `docs/backups/enrique-carta-fr-final-20260725T012649Z/` +- `docs/backups/enrique-pre-tts-20260725T013021Z/` diff --git a/import_avatars_62.php b/import_avatars_62.php new file mode 100644 index 0000000..ebee76a --- /dev/null +++ b/import_avatars_62.php @@ -0,0 +1,50 @@ + dry run (no escribe nada). + */ +require_once ABSPATH . 'wp-admin/includes/image.php'; + +$apply = getenv('APPLY') === '1'; +$mfile = getenv('MANIFEST') ?: 'manifest_62.json'; +$updir = wp_get_upload_dir(); +$manifest = json_decode(file_get_contents($updir['basedir'] . '/avatares/' . $mfile), true); + +$done = $skip = $err = 0; +foreach ($manifest as $row) { + list($uid, $name, $orig, $kind, $old_attach) = $row; + if (!in_array($kind, ['initials','trim','logo','qs'], true)) { $skip++; continue; } + + $rel = "avatares/autores/autor-{$uid}.png"; + $abs = $updir['basedir'] . '/' . $rel; + if (!file_exists($abs)) { echo "MISSING file uid=$uid\n"; $err++; continue; } + + // si foto_perfil ya apunta a este fichero, solo se ha sobrescrito el PNG: no crear attachment nuevo + $cur = (int) get_user_meta($uid, 'foto_perfil', true); + if ($cur && get_post_meta($cur, '_wp_attached_file', true) === $rel) { + if ($apply) wp_update_attachment_metadata($cur, wp_generate_attachment_metadata($cur, $abs)); + $skip++; continue; + } + + if (!$apply) { $done++; continue; } + + // guardar foto_perfil antiguo una sola vez (idempotente) + if (get_user_meta($uid, '_foto_perfil_pre62', true) === '') { + update_user_meta($uid, '_foto_perfil_pre62', $old_attach); + } + + $attach = [ + 'post_mime_type' => 'image/png', + 'post_title' => "Avatar {$name}", + 'post_status' => 'inherit', + 'guid' => $updir['baseurl'] . '/' . $rel, + ]; + $aid = wp_insert_attachment($attach, $abs, 0, true); + if (is_wp_error($aid)) { echo "ERR insert uid=$uid: ".$aid->get_error_message()."\n"; $err++; continue; } + wp_update_attachment_metadata($aid, wp_generate_attachment_metadata($aid, $abs)); + update_user_meta($uid, 'foto_perfil', $aid); + $done++; +} +echo ($apply ? "APLICADO" : "DRY-RUN") . ": procesados=$done omitidos=$skip errores=$err\n"; diff --git a/imports/carta738/pagola-human/9r_2_eng_Pagola.docx b/imports/carta738/pagola-human/9r_2_eng_Pagola.docx new file mode 100644 index 0000000000000000000000000000000000000000..c91111d88be2c25015f021d2d6d4fa35463c4030 GIT binary patch literal 37942 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 literal 0 HcmV?d00001 diff --git a/imports/carta738/pagola-human/9r_4_it_Pagola.docx b/imports/carta738/pagola-human/9r_4_it_Pagola.docx new file mode 100644 index 0000000000000000000000000000000000000000..9124354cfaef2e6e348b98f6e271e6472dc0a123 GIT binary patch literal 37939 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 a!~~;52U{^<1$|jn3J?!qd32|KIr|5+TDErp literal 0 HcmV?d00001 diff --git a/manifest_62.json b/manifest_62.json new file mode 100644 index 0000000..4e3fa19 --- /dev/null +++ b/manifest_62.json @@ -0,0 +1 @@ +[["382", "Fray Marcos", "autores/382_avatar.png", "skip", "42395"], ["383", "José Antonio Pagola", "autores/383_avatar.png", "skip", "42396"], ["384", "Enrique Martínez Lozano", "autores/384_avatar.png", "skip", "42397"], ["385", "José Enrique Galarreta", "autores/385_avatar.png", "skip", "42398"], ["386", "José Arregi", "autores/386_avatar.png", "skip", "42399"], ["387", "Eloy Roy", "autores/387_avatar.png", "skip", "42400"], ["388", "Dolores Aleixandre", "autores/388_avatar.png", "skip", "42401"], ["389", "Vicente Martínez", "autores/389_avatar.png", "skip", "42402"], ["390", "Sandra Hojman", "autores/390_avatar.png", "skip", "42403"], ["391", "Julián Mellado", "autores/391_avatar.png", "skip", "42404"], ["392", "Matilde Gastalver", "autores/392_avatar.png", "skip", "42405"], ["393", "Koldo Aldai", "autores/393_avatar.png", "skip", "42406"], ["394", "Marta Salazar", "autores/394_avatar.png", "skip", "42407"], ["395", "Florentino Ulibarri", "autores/395_avatar.png", "skip", "42408"], ["396", "Rafael Calvo Beca", "autores/396_avatar.png", "skip", "42409"], ["405", "Faustino Vilabrille", "autores/405_avatar.png", "skip", "42410"], ["407", "Víctor Daniel Blanco", "autores/407_avatar.png", "skip", "42411"], ["423", "Mari Patxi Ayerra", "autores/423_avatar.png", "skip", "42412"], ["468", "José Sánchez Luque", "autores/468_avatar.png", "skip", "42413"], ["746", "Vicky Irigaray", "autores/746_avatar.png", "skip", "42414"], ["774", "José Luis Sicre", "autores/774_avatar.png", "skip", "42415"], ["842", "Yolanda Chávez", "autores/842_avatar.png", "skip", "42416"], ["948", "Inma Calvo Torrejón", "autores/948_avatar.png", "skip", "42417"], ["1048", "Inma Calvo", "autores/1048_avatar.png", "skip", "42418"], ["1010", "Ínigo García Blanco", "autores/1010_avatar.png", "skip", "42419"], ["775", "Miguel A. Munárriz Casajús", "quienes_somos/avatars/col_munarriz.png", "skip", "42599"], ["1129", "Rosario Ramos", "quienes_somos/avatars/col_rosario_ramos.png", "skip", "42600"], ["583", "Fidel Aizpurúa", "quienes_somos/avatars/col_fidel_aizpurua.png", "skip", "42601"], ["890", "Fe Adulta", "2026/02/cropped-logo_fa.jpg", "skip", "43901"], ["1", "Fe Adulta", "2026/02/cropped-logo_fa.jpg", "skip", "43901"], ["1540", "Ediciones Feadulta", "2026/02/cropped-logo_fa.jpg", "skip", "43901"], ["411", "Gabriel Mª Otalora", "autores/joomla/col_otalora.png", "trim", "44250"], ["472", "Leonardo Boff", "autores/joomla/col_boff.png", "trim", "44251"], ["436", "José María Castillo", "autores/joomla/col_castillo.png", "trim", "44252"], ["429", "Jesús Bastante", "autores/joomla/col_bastante.png", "trim", "44253"], ["863", "Magdalena Bennasar", "autores/joomla/col_bennasar.png", "trim", "44254"], ["464", "Juan José Tamayo", "autores/joomla/col_tamayo.png", "trim", "44255"], ["658", "Gonzalo Haya", "autores/joomla/col_haya.png", "trim", "44256"], ["937", "Juan Zapatero", "autores/joomla/col_zapatero.png", "initials", "44257"], ["521", "Miguel Ángel Mesa", "autores/joomla/col_mesa.png", "trim", "44258"], ["481", "José Ignacio González Faus", "autores/joomla/col_faus.png", "trim", "44259"], ["485", "Xabier Pikaza", "autores/joomla/col_pikaza.png", "trim", "44260"], ["1260", "José Lorenzo", "autores/joomla/col_lorenzo.png", "initials", "44261"], ["954", "Marifé Ramos González", "autores/joomla/col_marife.png", "trim", "44262"], ["917", "Antonio Aradillas", "autores/joomla/col_aradillas.png", "initials", "44263"], ["508", "Juan Masiá", "autores/joomla/col_masia.png", "trim", "44264"], ["861", "Carmen Notario", "autores/joomla/col_notario.png", "trim", "44265"], ["1253", "Mª Luisa Paret García", "autores/joomla/col_paret.png", "trim", "44266"], ["1138", "Guadalupe Labrador", "autores/joomla/col_labrador.png", "trim", "44267"], ["993", "África de la Cruz Tomé", "autores/joomla/col_cruz-tome.png", "trim", "44268"], ["1031", "Paula Depalma", "autores/joomla/col_depalma.png", "trim", "44269"], ["988", "Pepa Torres", "autores/joomla/col_pepa_torres.png", "trim", "44270"], ["1004", "Carmiña Navia Velasco", "autores/joomla/col_navia.png", "initials", "44271"], ["1055", "Leandro Sequeiros", "autores/joomla/col_sequeiros.png", "initials", "44272"], ["811", "Luis Miguel Modino", "autores/joomla/col_modino.png", "trim", "44273"], ["1383", "Jesús Lozano Pino", "autores/joomla/col_pino.png", "initials", "44274"], ["1256", "Jaume Patuel Puig", "autores/joomla/col_patuel.png", "initials", "44275"], ["1029", "Jesús Martínez Gordo", "autores/joomla/col_jesus-mart.png", "initials", "44276"], ["1058", "Consuelo Vélez", "autores/joomla/col_velez.png", "initials", "44277"], ["1145", "Ramón Hernández Martín", "autores/joomla/col_ramonhnz.png", "initials", "44278"], ["501", "Pedro M. Lamet", "autores/joomla/col_lamet.png", "trim", "44279"], ["816", "Varios autores", "autores/joomla/col_varios-autores.png", "initials", "44280"], ["522", "Carlos F. Barberá", "autores/joomla/col_barbera.png", "trim", "44281"], ["724", "Rogelio Cárdenas", "autores/joomla/col_cardenas.png", "trim", "44282"], ["519", "Frei Betto", "autores/joomla/col_betto.png", "trim", "44283"], ["483", "Benjamín Forcano", "autores/joomla/col_forcano.png", "trim", "44284"], ["761", "Fernando Bermúdez López", "autores/joomla/col_bermudez.png", "trim", "44285"], ["794", "José María Alvarez", "autores/joomla/col_jmalvarez.png", "trim", "44286"], ["781", "Santiago Agrelo", "autores/joomla/col_agrelo.png", "trim", "44287"], ["982", "Cameron Doody", "autores/joomla/col_doody.png", "initials", "44288"], ["1362", "Guillermo Jesús Kowalski", "autores/joomla/col_kowalski.png", "initials", "44289"], ["1288", "Joan Planellas", "autores/joomla/col_planellas.png", "initials", "44290"], ["1157", "José Antonio Vázquez Mosquera", "autores/joomla/col_javazquez.png", "initials", "44291"], ["1212", "Mariano Delgado", "autores/joomla/col_mar_delgado.png", "initials", "44292"], ["1473", "Joseba Kamiruaga Mieza", "autores/joomla/col_joseba.png", "initials", "44293"], ["416", "Luís García Orso", "autores/joomla/col_orso.png", "trim", "44294"], ["631", "Evaristo Villar", "autores/joomla/col_evvillar.png", "trim", "44295"], ["432", "Juan Antonio Estrada", "autores/joomla/col_estrada.png", "trim", "44296"], ["703", "José María García-Mauriño", "autores/joomla/col_maurino.png", "trim", "44297"], ["821", "Jesús Espeja", "autores/joomla/col_espeja.png", "trim", "44298"], ["1289", "Víctor Martell", "autores/joomla/col_martell.png", "initials", "44299"], ["403", "Andrés Torres Queiruga", "autores/joomla/col_queiruga.png", "trim", "44300"], ["445", "Susana Merino", "autores/joomla/col_merino.png", "trim", "44301"], ["489", "Ima Sanchís", "autores/joomla/col_ima.png", "trim", "44302"], ["507", "Juan G. Bedoya", "autores/joomla/col_bedoya.png", "trim", "44303"], ["1425", "Pedro Miguel Ansó Esarte", "autores/joomla/col_anso.png", "initials", "44304"], ["1544", "Alfonso Núñez Chávez", "autores/joomla/col_alfonso-nunez.png", "initials", "44305"], ["419", "María Teresa Sánchez Carmona", "autores/joomla/col_carmona.png", "trim", "44306"], ["438", "Quiero ver", "autores/joomla/col_quierover.png", "initials", "44307"], ["446", "Martín Gelabert Ballester", "autores/joomla/col_gelabert.png", "trim", "44308"], ["462", "José Ignacio Calleja", "autores/joomla/col_calleja.png", "initials", "44309"], ["853", "Eduardo de la Serna", "autores/joomla/col_serna.png", "trim", "44310"], ["963", "Marta García", "autores/joomla/col_Marta_Garcia.png", "trim", "44311"], ["994", "Pedro Aranda Astudillo", "autores/joomla/col_aranda.png", "initials", "44312"], ["1068", "Tomás Muro", "autores/joomla/col_muro.png", "initials", "44313"], ["1086", "Stefano Cartabia", "autores/joomla/col_cartabia.png", "initials", "44314"], ["1262", "Jordi Pacheco", "autores/joomla/col_pacheco.png", "initials", "44315"], ["520", "Juan Cejudo", "autores/joomla/col_cejudo.png", "initials", "44316"], ["603", "Juan Yzuel", "autores/joomla/col_yzuel.png", "initials", "44317"], ["921", "José Luis Pinilla", "autores/joomla/col_pinilla.png", "initials", "44318"], ["960", "José Luis Ferrando Lada", "autores/joomla/col_ferrando.png", "initials", "44319"], ["1026", "Santiago Villamayor", "autores/joomla/col_villamayor.png", "initials", "44320"], ["592", "Félix Placer Ugarte", "autores/joomla/col_placer.png", "initials", "44321"], ["905", "Rufo González", "autores/joomla/col_rufo.png", "initials", "44322"], ["942", "Carmen Herrero", "autores/joomla/col_cmherrero.png", "initials", "44323"], ["1079", "César Caro", "autores/joomla/col_caro.png", "initials", "44324"], ["1107", "Juan de Burgos Román", "autores/joomla/col_burgos.png", "initials", "44325"], ["1115", "Antonio Spadaro", "autores/joomla/col_spadaro.png", "initials", "44326"], ["1223", "Julián Bedoya Cardona", "autores/joomla/col_julian-bedoya.png", "initials", "44327"], ["461", "Juan José Aguirre", "autores/joomla/col_aguirre.png", "trim", "44328"], ["728", "Pablo Ordaz", "autores/joomla/col_ordaz.png", "trim", "44329"], ["757", "Andrea Tornielli", "autores/joomla/col_andrea.png", "trim", "44330"], ["848", "Carolina Abarca", "autores/joomla/col_abarca.png", "trim", "44331"], ["1051", "José Carlos Enríquez", "autores/joomla/col_enriquez.png", "initials", "44332"], ["1287", "Jairo Alberto Franco Uribe", "autores/joomla/col_franco-uribe.png", "initials", "44333"], ["1326", "Benedetta Capelli", "autores/joomla/col_capelli.png", "initials", "44334"], ["510", "Felipe Arizmendi Esquivel", "autores/joomla/col_esquivel.png", "trim", "44335"], ["523", "Mariá Corbí", "autores/joomla/col_corbi.png", "trim", "44336"], ["898", "Deme Orte", "autores/joomla/col_orte.png", "initials", "44337"], ["1092", "Sor Lucía Caram", "autores/joomla/col_caram.png", "initials", "44338"], ["1257", "Vicente Luis García Corres", "autores/joomla/col_corres.png", "initials", "44339"], ["1335", "Paola Calderón", "autores/joomla/col_calderon.png", "initials", "44340"], ["1562", "Rafael Narbona", "autores/joomla/col_narbona.png", "initials", "44341"], ["435", "Javier Melloni", "autores/joomla/col_melloni.png", "trim", "44342"], ["476", "Patricia Paz", "autores/joomla/col_paz.png", "initials", "44343"], ["722", "John P. Meier", "autores/joomla/col_meier.png", "trim", "44344"], ["849", "Peio Sánchez Rodríguez", "autores/joomla/col_peio.png", "trim", "44345"], ["888", "Josep Miquel Bausset", "autores/joomla/col_bausset.png", "initials", "44346"], ["923", "Bernardo Pérez Andreu", "autores/joomla/col_perez_andreu.png", "initials", "44347"], ["974", "Javier Elzo", "autores/joomla/col_elzo.png", "initials", "44348"], ["1274", "Hermann Rodríguez Osorio", "autores/joomla/col_hermann.png", "initials", "44349"], ["1286", "Marco Enrique Salas Laure", "autores/joomla/col_salas-laure.png", "initials", "44350"], ["1358", "Víctor Ricardo Moreno Holguín", "autores/joomla/col_victor-r-moreno.png", "initials", "44351"], ["1409", "Pedro Lanzas", "autores/joomla/col_lanzas.png", "initials", "44352"], ["1431", "Jean Charles Putzolu", "autores/joomla/col_putzolu.png", "initials", "44353"], ["1516", "José Vicente Martínez", "autores/joomla/col_jose-vicente.png", "initials", "44354"], ["1520", "Fray Jesús Díaz Sariego", "autores/joomla/col_sariego.png", "initials", "44355"], ["1547", "José Antonio Satué", "autores/joomla/col_satue.png", "initials", "44356"], ["404", "José Luís Vilanova Alonso", "autores/joomla/col_vilanova.png", "trim", "44357"], ["433", "Rafael Díaz Arias", "autores/joomla/col_arias.png", "trim", "44358"], ["487", "Tomás Maza Ruiz", "autores/joomla/col_maza.png", "trim", "44359"], ["516", "Ricardo Gayol", "autores/joomla/col_gayol.png", "initials", "44360"], ["709", "Patxi Loidi", "autores/joomla/col_loidi.png", "initials", "44361"], ["721", "Nicolás Castellanos Franco", "autores/joomla/col_castellanos.png", "trim", "44362"], ["759", "Carlos Ayala Ramírez", "autores/joomla/col_ayalaramirez.png", "trim", "44363"], ["841", "Francisco Bautista", "autores/joomla/col_bautista.png", "trim", "44364"], ["970", "José Antonio Revuelta", "autores/joomla/col_jarevuelta.png", "initials", "44365"], ["1091", "Antonio Moreno de la Fuente", "autores/joomla/col_moreno-fuente.png", "initials", "44366"], ["1105", "Fernando Jiménez", "autores/joomla/col_fer-jim.png", "initials", "44367"], ["1122", "Victorino Pérez Prieto", "autores/joomla/col_vict-perez.png", "initials", "44368"], ["1163", "José Rafael Ruz Villamil", "autores/joomla/col_ruz.png", "initials", "44369"], ["1173", "Pablo Heras Alonso", "autores/joomla/col_heras.png", "initials", "44370"], ["1240", "Felisa Elizondo", "autores/joomla/col_elizondo.png", "initials", "44371"], ["1301", "José Miguel Martínez Castelló", "autores/joomla/col_castello.png", "initials", "44372"], ["1311", "Juan Cuatrecasas Asua", "autores/joomla/col_cuatrecasas.png", "initials", "44373"], ["1467", "Xavier Pete", "autores/joomla/col_pete.png", "initials", "44374"], ["1560", "Adele Howard", "autores/joomla/col_adele-howard.png", "initials", "44375"], ["1561", "Bruno Desideria", "autores/joomla/col_desideria.png", "initials", "44376"], ["424", "LCWR", "autores/joomla/col_lcwr.png", "initials", "44377"], ["655", "Antonio Duato", "autores/joomla/col_duato.png", "trim", "44378"], ["690", "Esteban Tabares", "autores/joomla/col_tabares.png", "initials", "44379"], ["782", "Mercedes Nasarre", "autores/joomla/col_nasarre.png", "initials", "44380"], ["889", "José Mª Rivas Conde", "autores/joomla/col_rivas_conde.png", "initials", "44381"], ["892", "Antonio Gil de Zúñiga", "autores/joomla/col_gil_zuniga.png", "initials", "44382"], ["908", "Juan Jauregui", "autores/joomla/col_jnjauregui.png", "initials", "44383"], ["914", "José Manuel Bernal", "autores/joomla/col_bernal.png", "initials", "44384"], ["941", "Pedro Zabala", "autores/joomla/col_zabala.png", "initials", "44385"], ["953", "Álvaro de Juana", "autores/joomla/col_juana.png", "initials", "44386"], ["976", "Lucía López Alonso", "autores/joomla/col_lopez_alonso.png", "initials", "44387"], ["986", "Cristina Plaza", "autores/joomla/col_plaza_cris.png", "initials", "44388"], ["995", "Juan José Omella", "autores/joomla/col_omella.png", "initials", "44389"], ["1205", "Michael P. Moore", "autores/joomla/col_moore.png", "initials", "44390"], ["1228", "Ángel Gutiérrez Sanz", "autores/joomla/col_angel-gutierrez.png", "initials", "44391"], ["1247", "Jesús Herrero E.", "autores/joomla/col_jesus_herrero.png", "initials", "44392"], ["1251", "José Carlos Bermejo", "autores/joomla/col_bermejo.png", "initials", "44393"], ["1306", "Amelia Hidalgo Jiménez", "autores/joomla/col_amelia_hidalgo.png", "initials", "44394"], ["1315", "Toño Casado", "autores/joomla/col_casado.png", "initials", "44395"], ["1390", "Francisca Abad Martín", "autores/joomla/col_abad.png", "initials", "44396"], ["1417", "Alicia Torres", "autores/joomla/col_alicia_torres.png", "initials", "44397"], ["1471", "Mario J. Paredes", "autores/joomla/col_paredes.png", "initials", "44398"], ["415", "Asun Gutiérrez", "autores/joomla/col_asun.png", "trim", "44399"], ["477", "Pilar Rahola", "autores/joomla/col_rahola.png", "initials", "44400"], ["514", "Eduardo Galeano", "autores/joomla/col_galeano.png", "trim", "44401"], ["618", "Víctor M. Amela", "autores/joomla/col_amela.png", "initials", "44402"], ["680", "Pope Godoy", "autores/joomla/col_pope.png", "trim", "44403"], ["716", "Ángeles Caso", "autores/joomla/col_caso.png", "trim", "44404"], ["719", "Luís Carlos Saiz Fernández", "autores/joomla/col_saiz.png", "trim", "44405"], ["727", "Ken Wilber", "autores/joomla/col_wilber.png", "trim", "44406"], ["804", "John Shelby Spong", "autores/joomla/col_spong.png", "trim", "44407"], ["825", "José Ignacio Spuche", "autores/joomla/col_spuche.png", "trim", "44408"], ["859", "Darío Menor", "autores/joomla/col_menor.png", "initials", "44409"], ["916", "Lucía Gayón", "autores/joomla/col_gayon.png", "initials", "44410"], ["927", "Pablo D'Ors", "autores/joomla/col_dors.png", "initials", "44411"], ["938", "Luis Ángel Aguilar", "autores/joomla/col_aguilar.png", "initials", "44412"], ["968", "Jeff Foster", "autores/joomla/col_foster.png", "initials", "44413"], ["1063", "Beto Vargas", "autores/joomla/col_vargas.png", "initials", "44414"], ["1064", "Nicolás Pons", "autores/joomla/col_pons.png", "initials", "44415"], ["1099", "Salvador Santos", "autores/joomla/col_salvsantos.png", "initials", "44416"], ["1113", "Anna Seguí", "autores/joomla/col_segui.png", "initials", "44417"], ["1123", "Javier Sánchez", "autores/joomla/col_javi_sanchez.png", "initials", "44418"], ["1139", "Yolanda Salamanca Pinilla", "autores/joomla/col_salamanca.png", "initials", "44419"], ["1158", "César Rollán Sánchez", "autores/joomla/col_rollan.png", "initials", "44420"], ["1176", "Andrés Felipe Rojas Saavedra", "autores/joomla/col_rojas.png", "initials", "44421"], ["1186", "Jesús Peláez", "autores/joomla/col_pelaez.png", "initials", "44422"], ["1217", "Jesús Sastre", "autores/joomla/col_sastre.png", "initials", "44423"], ["1220", "Julio Puente López", "autores/joomla/col_puente.png", "initials", "44424"], ["1239", "Antoni Ferret", "autores/joomla/col_ferret.png", "initials", "44425"], ["1313", "Alberto Ares", "autores/joomla/col_ares.png", "initials", "44426"], ["1332", "Jesús Donaire", "autores/joomla/col_donaire.png", "initials", "44427"], ["1348", "Ángel Aznárez", "autores/joomla/col_aznarez.png", "initials", "44428"], ["1376", "José Mª Rojo G.", "autores/joomla/col_rojo.png", "initials", "44429"], ["1395", "Julio Guerrero Moreno", "autores/joomla/col_guerrero.png", "initials", "44430"], ["1412", "José María Vigil", "autores/joomla/col_jm_vigil.png", "initials", "44431"], ["1415", "Rodrigo Guerra López", "autores/joomla/col_rodri_guerra.png", "initials", "44432"], ["1423", "Ana Bou", "autores/joomla/col_bou.png", "initials", "44433"], ["1440", "Macario Ofilada Mina", "autores/joomla/col_ofilada.png", "initials", "44434"], ["1458", "José Melero Pérez", "autores/joomla/col_melero.png", "initials", "44435"], ["1459", "ADN Celam", "autores/joomla/col_adncelam.png", "logo", "44436"], ["1462", "Josep Vicent Martínez", "autores/joomla/col_josep_vicent.png", "initials", "44437"], ["1475", "José Chamorro", "autores/joomla/col_chamorro.png", "initials", "44438"], ["1495", "Luz Marina Medina", "autores/joomla/col_luz-marina.png", "initials", "44439"], ["1509", "Luz Estela (Lucha) Castro", "autores/joomla/col_estela.png", "initials", "44440"], ["1511", "Avelino Seco Muñoz", "autores/joomla/col_avelino.png", "initials", "44441"], ["1529", "Manuel Fraijó", "autores/joomla/col_fraijo.png", "initials", "44442"], ["402", "José Luís Caravias", "autores/joomla/col_caravias.png", "trim", "44443"], ["420", "Salvador Capote", "autores/joomla/col_capote.png", "initials", "44444"], ["554", "Celso Alcaina", "autores/joomla/col_alcaina.png", "initials", "44445"], ["556", "Esteban Velázquez", "autores/joomla/col_velazquez.png", "trim", "44446"], ["597", "Félix Azurmendi", "autores/joomla/col_azurmendi.png", "initials", "44447"], ["608", "José Antonio Marina", "autores/joomla/col_marina.png", "trim", "44448"], ["675", "Ignacio Ramonet", "autores/joomla/col_ramonet.png", "initials", "44449"], ["713", "Vicente Simón", "autores/joomla/col_simon.png", "trim", "44450"], ["742", "Marciano Vidal", "autores/joomla/col_marciano.png", "trim", "44451"], ["824", "Joan Chittister", "autores/joomla/col_chittister.png", "trim", "44452"], ["873", "Manuel Ansede", "autores/joomla/col_ansede.png", "initials", "44453"], ["875", "César Cervera", "autores/joomla/col_cervera.png", "initials", "44454"], ["882", "Antonio Esquivias", "autores/joomla/col_esquivias.png", "initials", "44455"], ["883", "Francisco Margallo", "autores/joomla/col_margallo.png", "initials", "44456"], ["891", "Kuczynski", "autores/joomla/col_kuczynski.png", "initials", "44457"], ["922", "José Aldunate", "autores/joomla/col_aldunate.png", "initials", "44458"], ["945", "Fernando Torres Pérez", "autores/joomla/col_torres-perez.png", "initials", "44459"], ["946", "Ignacio Villota Elejalde", "autores/joomla/col_villota.png", "initials", "44460"], ["949", "Blanca Arregui", "autores/joomla/col_arregui_blanca.png", "initials", "44461"], ["955", "Pablo Moñino", "autores/joomla/col_monino.png", "initials", "44462"], ["957", "Martín Pérez Millán", "autores/joomla/col_millan.png", "initials", "44463"], ["958", "Francisco Rafael de Pascual", "autores/joomla/col_depascual.png", "initials", "44464"], ["959", "José Olivero", "autores/joomla/col_olivero.png", "trim", "44465"], ["961", "Juan P. Espinosa Arce", "autores/joomla/col_espinosa.png", "initials", "44466"], ["964", "Maria López Vigil", "autores/joomla/col_maria_vigil.png", "initials", "44467"], ["977", "Olga Larrazábal", "autores/joomla/col_larrazabal.png", "initials", "44468"], ["978", "Mónica Cavallé", "autores/joomla/col_cavalle.png", "initials", "44469"], ["983", "Francisco Massó", "autores/joomla/col_masso.png", "initials", "44470"], ["989", "Honorio Cadarso", "autores/joomla/col_cadarso.png", "initials", "44471"], ["1001", "Jaime Escobar", "autores/joomla/col_escobar.png", "initials", "44472"], ["1006", "Gilberto Urrutia", "autores/joomla/col_urrutia.png", "initials", "44473"], ["1030", "Jaime Rubio Hancock", "autores/joomla/col_rubio-hanc.png", "initials", "44474"], ["1037", "Eduardo Hornaert", "autores/joomla/col_hornaert.png", "initials", "44475"], ["1043", "Guillermo Oroz Aragón", "autores/joomla/col_oroz.png", "initials", "44476"], ["1076", "Pepe Mallo", "autores/joomla/col_mallo.png", "initials", "44477"], ["1080", "Manuel Mandianes", "autores/joomla/col_mandianes.png", "initials", "44478"], ["1088", "Grupo cristiano de Reflexión y Acción", "autores/joomla/col_reflex.png", "initials", "44479"], ["1126", "Luis Romasanta", "autores/joomla/col_romasanta.png", "initials", "44480"], ["1128", "Juan Alemany", "autores/joomla/col_alemany.png", "initials", "44481"], ["1133", "Juan Ignacio Cortés", "autores/joomla/col_jicortes.png", "initials", "44482"], ["1147", "Abraham Canales", "autores/joomla/col_canales.png", "initials", "44483"], ["1148", "José Carlos Rodríguez", "autores/joomla/col_jcrodri.png", "initials", "44484"], ["1150", "Yuval Noah Harari", "autores/joomla/col_yuval.png", "initials", "44485"], ["1151", "Yaiza Martínez", "autores/joomla/col_yaiza.png", "initials", "44486"], ["1154", "Pedro Langa", "autores/joomla/col_langa.png", "initials", "44487"], ["1156", "Manuel Cubías", "autores/joomla/col_cubias.png", "initials", "44488"], ["1166", "Sara Lumbreras", "autores/joomla/col_lumbreras.png", "initials", "44489"], ["1180", "Fernando Vidal", "autores/joomla/col_vidal_fer.png", "initials", "44490"], ["1221", "Baltasar Bueno", "autores/joomla/col_baltasar.png", "initials", "44491"], ["1222", "Renato Martínez", "autores/joomla/col_renato.png", "initials", "44492"], ["1252", "Julia Serrano Fernández", "autores/joomla/col_julia-serrano.png", "initials", "44493"], ["1261", "Manuel de Jesús", "autores/joomla/col_de-jesus.png", "initials", "44494"], ["1268", "José Luis Sánchez", "autores/joomla/col_jl-sanchez.png", "initials", "44495"], ["1269", "Manlio Fabio Altamirano", "autores/joomla/col_manlio.png", "initials", "44496"], ["1273", "Emilce Cuda", "autores/joomla/col_emilce.png", "initials", "44497"], ["1281", "Bernardo Baldeón", "autores/joomla/col_baldeon.png", "initials", "44498"], ["1310", "Antonio Piñero", "autores/joomla/col_pinero.png", "initials", "44499"], ["1323", "Grupo laico de Algorta", "autores/joomla/col_algorta.png", "initials", "44500"], ["1327", "Alberto Roselli", "autores/joomla/col_roselli.png", "initials", "44501"], ["1338", "Gabriel Cifermann", "autores/joomla/col_cifermann.png", "initials", "44502"], ["1342", "Brenda García", "autores/joomla/col_brenda.png", "initials", "44503"], ["1365", "Salvatore Cernuzio", "autores/joomla/col_cernuzio.png", "initials", "44504"], ["1392", "Aníbal Pastor N.", "autores/joomla/col_pastor.png", "initials", "44505"], ["1416", "Linda Bordoni", "autores/joomla/col_bordoni.png", "initials", "44506"], ["1424", "Luis Manuel Romero Sánchez", "autores/joomla/col_lmromero.png", "initials", "44507"], ["1434", "Michele Raviart", "autores/joomla/col_raviart.png", "initials", "44508"], ["1445", "Luis Van de Velde", "autores/joomla/col_velde.png", "initials", "44509"], ["1453", "Xiskya Valladares", "autores/joomla/col_valladares.png", "initials", "44510"], ["1461", "Fray Alfredo Quintero Campoy", "autores/joomla/col_fray-alfredo.png", "initials", "44511"], ["1463", "Ángel Morillo", "autores/joomla/col_morillo.png", "initials", "44512"], ["1464", "Sebastián Cózar Gavira", "autores/joomla/col_cozar.png", "initials", "44513"], ["1474", "Mariano Álvarez Valenzuela", "autores/joomla/col_mariano-alvarez.png", "initials", "44514"], ["1479", "Ricardo Mauti", "autores/joomla/col_mauti.png", "initials", "44515"], ["1487", "Alessandro Gisotti", "autores/joomla/col_gisotti.png", "initials", "44516"], ["1497", "Virginia Bonard", "autores/joomla/col_bonard.png", "initials", "44517"], ["1526", "Florencio Roselló", "autores/joomla/col_rosello.png", "initials", "44518"], ["1557", "Reinaldo Nann", "autores/joomla/col_nann.png", "initials", "44519"], ["401", "Emma Torralba", "autores/joomla/col_torralba.png", "initials", "44520"], ["437", "José Miguel Izquierdo", "autores/joomla/col_izquierdo.png", "trim", "44521"], ["558", "Carlo Maria Martini", "autores/joomla/col_martini.png", "trim", "44522"], ["559", "Luís Cano", "autores/joomla/col_cano.png", "initials", "44523"], ["560", "Pere Codina Mas", "autores/joomla/col_codina.png", "trim", "44524"], ["712", "Ángel Arnaiz Quintana", "autores/joomla/col_arnaiz.png", "trim", "44525"], ["723", "Pablo Jáuregui", "autores/joomla/col_jauregui.png", "trim", "44526"], ["726", "Vicenc Alujas", "autores/joomla/col_alujas.png", "trim", "44527"], ["734", "Enric González", "autores/joomla/col_enric.png", "trim", "44528"], ["735", "Sergio Bergman", "autores/joomla/col_sergio.png", "trim", "44529"], ["736", "Eileen Markey", "autores/joomla/col_eilen.png", "trim", "44530"], ["738", "José Rodríguez Carballo", "autores/joomla/col_carballo.png", "trim", "44531"], ["739", "José María Arnaiz", "autores/joomla/col_jmarnaiz.png", "trim", "44532"], ["745", "Ángeles Conde", "autores/joomla/col_conde.png", "trim", "44533"], ["750", "Francisco Asensi", "autores/joomla/col_asensi.png", "trim", "44534"], ["751", "Francisco Ayala", "autores/joomla/col_ayala.png", "trim", "44535"], ["752", "Alfredo Leuco", "autores/joomla/col_leuco.png", "trim", "44536"], ["753", "Jesús Hidalgo", "autores/joomla/col_hidalgo.png", "trim", "44537"], ["754", "Fernando Lázaro", "autores/joomla/col_lazaro.png", "trim", "44538"], ["758", "Ismael Bárcenas Orozco", "autores/joomla/col_barcenas.png", "trim", "44539"], ["762", "Salvador Sostres", "autores/joomla/col_sostres.png", "trim", "44540"], ["763", "Javier Marín", "autores/joomla/col_marin.png", "trim", "44541"], ["776", "Carmen Almansa", "autores/joomla/col_almansa.png", "trim", "44542"], ["783", "Adolfo Ranero", "autores/joomla/col_ranero.png", "initials", "44543"], ["789", "Rafael Argullol", "autores/joomla/col_argullol.png", "trim", "44544"], ["797", "Susana Hidalgo", "autores/joomla/col_sushidalgo.png", "trim", "44545"], ["805", "Philippe Ariño", "autores/joomla/col_arino.png", "trim", "44546"], ["806", "Muhammad Yunus", "autores/joomla/col_yunus.png", "trim", "44547"], ["819", "Mads Gilbert", "autores/joomla/col_mads.png", "trim", "44548"], ["820", "Amanda Céspedes", "autores/joomla/col_cespedes.png", "trim", "44549"], ["823", "Padre Ángel García", "autores/joomla/col_padre-angel.png", "trim", "44550"], ["826", "Daniel Jarreta", "autores/joomla/col_jarreta.png", "trim", "44551"], ["828", "Francisco Puértolas", "autores/joomla/col_puertolas.png", "trim", "44552"], ["829", "Desmond Tutu", "autores/joomla/col_tutu.png", "trim", "44553"], ["830", "Anniken Jørgensen", "autores/joomla/col_anniken.png", "trim", "44554"], ["840", "José Mujica", "autores/joomla/col_mujica.png", "trim", "44555"], ["850", "Jorge Serrano", "autores/joomla/col_serrano.png", "trim", "44556"], ["852", "Andrés Aberasturi", "autores/joomla/col_aberasturi.png", "trim", "44557"], ["857", "Nani Vall-llossera", "autores/joomla/col_nani.png", "trim", "44558"], ["858", "Nestor Nongo", "autores/joomla/col_nongo.png", "initials", "44559"], ["860", "Ricardo Blázquez", "autores/joomla/col_blazquez.png", "trim", "44560"], ["862", "Juan José Arnáiz", "autores/joomla/col_jjarnaiz.png", "trim", "44561"], ["864", "Javier Montserrat", "autores/joomla/col_montserrat.png", "initials", "44562"], ["865", "Henrique Mariño", "autores/joomla/col_marino.png", "initials", "44563"], ["866", "Mª Carmen Nieto León", "autores/joomla/col_nieto_leon.png", "initials", "44564"], ["869", "Jesús Díaz Gómez", "autores/joomla/col_diaz_gomez.png", "initials", "44565"], ["871", "Pepe Baena", "autores/joomla/col_baena.png", "initials", "44566"], ["872", "Clara Janés", "autores/joomla/col_janes.png", "initials", "44567"], ["874", "Cristina Fontenele", "autores/joomla/col_fontenele.png", "initials", "44568"], ["879", "José Alegre", "autores/joomla/col_alegre.png", "initials", "44569"], ["886", "Claude Benoit", "autores/joomla/col_benoit.png", "initials", "44570"], ["887", "F. Brune", "autores/joomla/col_brune.png", "initials", "44571"], ["894", "Gabriel García de Oro", "autores/joomla/col_garcia_oro.png", "initials", "44572"], ["895", "Ángel García-Zamorano", "autores/joomla/col_zamorano.png", "initials", "44573"], ["896", "Mariana Caplan", "autores/joomla/col_caplan.png", "initials", "44574"], ["897", "Willigis Jäger", "autores/joomla/col_jager.png", "trim", "44575"], ["899", "Carmen Charo", "autores/joomla/col_charo.png", "trim", "44576"], ["900", "Lluís Bassets", "autores/joomla/col_bassets.png", "initials", "44577"], ["902", "María Pérez", "autores/joomla/col_perez.png", "initials", "44578"], ["903", "Carlos Sánchez Mato", "autores/joomla/col_mato.png", "initials", "44579"], ["904", "Juan Manuel de Prada", "autores/joomla/col_prada.png", "initials", "44580"], ["906", "Emiliano Calle Moreno", "autores/joomla/col_calle.png", "initials", "44581"], ["907", "Juan Cruz", "autores/joomla/col_cruz.png", "initials", "44582"], ["909", "Roberto Alifano", "autores/joomla/col_alifano.png", "initials", "44583"], ["910", "Tere Cortés", "autores/joomla/col_cortes.png", "initials", "44584"], ["915", "José Agustín Cabré", "autores/joomla/col_cabre.png", "initials", "44585"], ["918", "Bernard Trémel", "autores/joomla/col_tremel.png", "initials", "44586"], ["919", "Daniel Gomis", "autores/joomla/col_gomis.png", "initials", "44587"], ["920", "Javier Salas", "autores/joomla/col_salas.png", "initials", "44588"], ["925", "J. V. Echagüe", "autores/joomla/col_echague.png", "initials", "44589"], ["928", "Walter Kasper", "autores/joomla/col_kasper.png", "initials", "44590"], ["931", "Pedro Kalmbach", "autores/joomla/col_kalmbach.png", "initials", "44591"], ["934", "Eduardo Arens", "autores/joomla/col_arens.png", "initials", "44592"], ["935", "José María Toro", "autores/joomla/col_toro.png", "initials", "44593"], ["936", "Nacho Dueñas", "autores/joomla/col_duenas.png", "initials", "44594"], ["943", "David Jou", "autores/joomla/col_jou.png", "trim", "44595"], ["944", "José de Segovia Barrón", "autores/joomla/col_segovia.png", "initials", "44596"], ["947", "Raúl Juárez", "autores/joomla/col_juarez.png", "initials", "44597"], ["950", "Xavier Guix", "autores/joomla/col_guix.png", "initials", "44598"], ["951", "Francesc Mateu i Hosta", "autores/joomla/col_mateu.png", "initials", "44599"], ["952", "Jorge Alcalde", "autores/joomla/col_alcalde.png", "initials", "44600"], ["956", "Samir Khalil Samir", "autores/joomla/col_samir.png", "initials", "44601"], ["965", "Adolfo Nicolás", "autores/joomla/col_adolfo.png", "initials", "44602"], ["971", "Bárbara Torres", "autores/joomla/col_barbara_t.png", "initials", "44603"], ["972", "José Manuel Caamaño", "autores/joomla/col_caamano.png", "initials", "44604"], ["973", "Raquel Simón Justo", "autores/joomla/col_simon-justo.png", "initials", "44605"], ["975", "Gabriel Asenjo", "autores/joomla/col_asenjo.png", "initials", "44606"], ["980", "Carmen Bellver", "autores/joomla/col_bellver.png", "initials", "44607"], ["984", "Fabián García", "autores/joomla/col_fab-garcia.png", "initials", "44608"], ["985", "Natalia Martín Cantero", "autores/joomla/col_martin_cantero.png", "initials", "44609"], ["987", "Román Espadas", "autores/joomla/col_espadas.png", "initials", "44610"], ["990", "Sor María de Gracia", "autores/joomla/col_sor-maria-gracia.png", "initials", "44611"], ["991", "Javier Velasco Arias", "autores/joomla/col_velasco-arias.png", "initials", "44612"], ["992", "Fran Otero", "autores/joomla/col_otero.png", "initials", "44613"], ["996", "Elena Cué", "autores/joomla/col_cue.png", "initials", "44614"], ["998", "Tomás Trigo", "autores/joomla/col_trigo.png", "initials", "44615"], ["999", "Isidoro García Gómez", "autores/joomla/col_isidoro.png", "initials", "44616"], ["1000", "Roberto Savio", "autores/joomla/col_savio.png", "initials", "44617"], ["1002", "Eduard Punset", "autores/joomla/col_punset.png", "initials", "44618"], ["1003", "Rupert Spira", "autores/joomla/col_spira.png", "initials", "44619"], ["1005", "María Mikhailova", "autores/joomla/col_mikhailova.png", "initials", "44620"], ["1007", "Laura Serrano-Conde", "autores/joomla/col_serrano-conde.png", "initials", "44621"], ["1008", "José Luis Perera López", "autores/joomla/col_perera.png", "initials", "44622"], ["1009", "Javier Lozano", "autores/joomla/col_javier_lozano.png", "initials", "44623"], ["1011", "Xavier Casanovas", "autores/joomla/col_casanovas.png", "initials", "44624"], ["1012", "Vicente Gallego", "autores/joomla/col_gallego.png", "initials", "44625"], ["1013", "Santi Torres", "autores/joomla/col_santi_torres.png", "initials", "44626"], ["1014", "José Cristo Rey", "autores/joomla/col_cristo-rey.png", "initials", "44627"], ["1015", "Óscar Mateos", "autores/joomla/col_mateos.png", "initials", "44628"], ["1016", "Vicente Jiménez Zamora", "autores/joomla/col_vic_jimenez.png", "initials", "44629"], ["1017", "Carlos López", "autores/joomla/col_carlos_lopez.png", "initials", "44630"], ["1018", "Victoria Juliani", "autores/joomla/col_juliani.png", "initials", "44631"], ["1019", "Fernando Trías de Bes", "autores/joomla/col_triasdebes.png", "initials", "44632"], ["1020", "Aurelio Lepe", "autores/joomla/col_lepe.png", "initials", "44633"], ["1021", "Miryam Castro", "autores/joomla/col_castro_mir.png", "initials", "44634"], ["1022", "Ángel Vilariño", "autores/joomla/col_vilarino.png", "initials", "44635"], ["1023", "Christoph Strack", "autores/joomla/col_strack.png", "initials", "44636"], ["1024", "Comunidad de Nazaret", "autores/joomla/col_nazaret.png", "initials", "44637"], ["1025", "Augusto Zamora", "autores/joomla/col_zamora.png", "initials", "44638"], ["1027", "Carles Capdevila", "autores/joomla/col_capdevila.png", "initials", "44639"], ["1028", "George R. Porta", "autores/joomla/col_porta.png", "initials", "44640"], ["1032", "Ana Cabirta", "autores/joomla/col_cabirta.png", "initials", "44641"], ["1034", "J. Jesús Lemus", "autores/joomla/col_lemus.png", "initials", "44642"], ["1035", "Enrique Delgado", "autores/joomla/col_delgado.png", "initials", "44643"], ["1038", "Cristina Sánchez", "autores/joomla/col_cris_sanchez.png", "initials", "44644"], ["1039", "Asunción Poudereux", "autores/joomla/col_poudereux.png", "initials", "44645"], ["1040", "M. Arrizabalaga", "autores/joomla/col_arrizabalaga.png", "initials", "44646"], ["1041", "Josean Villalabeitia", "autores/joomla/col_villalabeitia.png", "initials", "44647"], ["1042", "Joan Carrera", "autores/joomla/col_carrera.png", "initials", "44648"], ["1045", "Irene Meca Mateo", "autores/joomla/col_meca.png", "initials", "44649"], ["1046", "Juan José Mateo", "autores/joomla/col_jjmateo.png", "initials", "44650"], ["1050", "Miguel d’Escoto", "autores/joomla/col_descoto.png", "trim", "44651"], ["1052", "Alfredo Sepúlveda", "autores/joomla/col_sepulveda.png", "initials", "44652"], ["1053", "Jesús Sanz", "autores/joomla/col_sanz.png", "initials", "44653"], ["1056", "Gustavo Valls", "autores/joomla/col_valls.png", "initials", "44654"], ["1057", "Ricardo Benjumea", "autores/joomla/col_benjumea.png", "initials", "44655"], ["1059", "Eubilio Rodríguez Aguado", "autores/joomla/col_eubilio.png", "initials", "44656"], ["1060", "Alejandro Córdoba", "autores/joomla/col_cordoba.png", "initials", "44657"], ["1061", "Dr. Norberto Levy", "autores/joomla/col_levy.png", "initials", "44658"], ["1062", "Santiago Panizo", "autores/joomla/col_panizo.png", "initials", "44659"], ["1066", "Giancarlo Pani", "autores/joomla/col_pani.png", "initials", "44660"], ["1067", "Mussa’ab Bashir", "autores/joomla/col_bashir.png", "initials", "44661"], ["1071", "Nabil Antaki", "autores/joomla/col_nabil.png", "initials", "44662"], ["1074", "Iosu Perales", "autores/joomla/col_perales.png", "initials", "44663"], ["1077", "Carmen Barba Pérez", "autores/joomla/col_barba.png", "trim", "44664"], ["1078", "Roberto José Castillo Telles", "autores/joomla/col_rob_castillo.png", "initials", "44665"], ["1081", "Julio A. Ruiz", "autores/joomla/col_aruiz.png", "initials", "44666"], ["1082", "Alex Roig", "autores/joomla/col_roig.png", "initials", "44667"], ["1083", "Meijer y Geesink", "autores/joomla/col_mei.png", "initials", "44668"], ["1084", "Fernando Fuentes", "autores/joomla/col_fuentes.png", "initials", "44669"], ["1085", "Felipe Portales", "autores/joomla/col_portales.png", "initials", "44670"], ["1089", "Jean Klein", "autores/joomla/col_klein.png", "initials", "44671"], ["1090", "Camilo Barrionuevo", "autores/joomla/col_barrionuevo.png", "initials", "44672"], ["1094", "Gregorio Fernández", "autores/joomla/col_greg-fer.png", "initials", "44673"], ["1095", "Olegario González de Cardedal", "autores/joomla/col_olegario.png", "initials", "44674"], ["1096", "Andrés Opazo", "autores/joomla/col_opazo.png", "initials", "44675"], ["1097", "Luis Badilla", "autores/joomla/col_badilla.png", "initials", "44676"], ["1098", "Lucía Ramón Carbonell", "autores/joomla/col_carbonell.png", "initials", "44677"], ["1100", "Manuel Vicent", "autores/joomla/col_manvicent.png", "initials", "44678"], ["1101", "Karla Huerta", "autores/joomla/col_huerta.png", "initials", "44679"], ["1102", "Celso Morga", "autores/joomla/col_morga.png", "initials", "44680"], ["1104", "Carlos E. Cué", "autores/joomla/col_carlos-cue.png", "initials", "44681"], ["1106", "Fernando García de Cortázar", "autores/joomla/col_fer-gar.png", "initials", "44682"], ["1108", "Javier Barros del Villar", "autores/joomla/col_barros-villar.png", "initials", "44683"], ["1110", "Alex Zanotelli", "autores/joomla/col_zanotelli.png", "initials", "44684"], ["1111", "Ángela Cañal", "autores/joomla/col_canal.png", "initials", "44685"], ["1114", "José Manuel Barreda", "autores/joomla/col_barreda.png", "initials", "44686"], ["1116", "Raquel Muñoz", "autores/joomla/col_raquel_munoz.png", "initials", "44687"], ["1118", "Andrés A. Fernández", "autores/joomla/col_andres_fer.png", "initials", "44688"], ["1119", "Ramón Alario", "autores/joomla/col_alario.png", "initials", "44689"], ["1120", "Miren Etxezarreta", "autores/joomla/col_miren.png", "initials", "44690"], ["1121", "Mary E. Hunt", "autores/joomla/col_hunt.png", "initials", "44691"], ["1124", "Ricardo Olmedo", "autores/joomla/col_olmedo.png", "initials", "44692"], ["1127", "Claudio Ibáñez", "autores/joomla/col_ibanez.png", "initials", "44693"], ["1131", "Gemma Morató", "autores/joomla/col_morato.png", "initials", "44694"], ["1132", "Lourdes Fernández Manzano", "autores/joomla/col_lourdes.png", "initials", "44695"], ["1135", "José María Rodríguez Olaizola", "autores/joomla/col_jmrodriguez.png", "initials", "44696"], ["1136", "María Landi", "autores/joomla/col_landi.png", "initials", "44697"], ["1137", "Lucetta Scaraffia", "autores/joomla/col_lucetta.png", "initials", "44698"], ["1140", "Salvador García Bardón", "autores/joomla/col_salva_garcia.png", "initials", "44699"], ["1141", "Juan García Caselles", "autores/joomla/col_juan_garcia.png", "initials", "44700"], ["1143", "Lidia Rodríguez", "autores/joomla/col_lidia_rod.png", "initials", "44701"], ["1144", "María Teresa Compte", "autores/joomla/col_compte.png", "initials", "44702"], ["1146", "Jesús Fernández González", "autores/joomla/col_jesusfnz.png", "initials", "44703"], ["1149", "Lluís Amiguet", "autores/joomla/col_amiguet.png", "initials", "44704"], ["1152", "Carmen Bernabé Ubieta", "autores/joomla/col_bernabe.png", "initials", "44705"], ["1153", "Robson Sávio Reis Souza", "autores/joomla/col_robson.png", "initials", "44706"], ["1155", "Juan Carlos Claret", "autores/joomla/col_claret.png", "initials", "44707"], ["1159", "Charlotta Smeds", "autores/joomla/col_smeds.png", "initials", "44708"], ["1160", "Federico Mayor", "autores/joomla/col_mayor.png", "initials", "44709"], ["1161", "Jesús L. Sotillo", "autores/joomla/col_sotillo.png", "initials", "44710"], ["1164", "Susana Oñoro", "autores/joomla/col_onoro.png", "initials", "44711"], ["1165", "Robert Adams", "autores/joomla/col_adams.png", "initials", "44712"], ["1167", "Alfonso Pérez Ranchal", "autores/joomla/col_ranchal.png", "initials", "44713"], ["1168", "Joseph Corcó", "autores/joomla/col_corco.png", "initials", "44714"], ["1169", "Antonio Carrascosa Mendieta", "autores/joomla/col_carrascosa.png", "initials", "44715"], ["1170", "James Alison", "autores/joomla/col_alison.png", "initials", "44716"], ["1171", "Ricardo de Querol", "autores/joomla/col_querol.png", "initials", "44717"], ["1174", "Antonio Mendoza", "autores/joomla/col_ant_mendoza.png", "initials", "44718"], ["1175", "A. Moreno", "autores/joomla/col_amoreno.png", "initials", "44719"], ["1177", "Maricel Mena López", "autores/joomla/col_maricel.png", "initials", "44720"], ["1178", "Alfredo Marcos", "autores/joomla/col_alfredo_marcos.png", "initials", "44721"], ["1179", "Grup Cristià del Dissabte", "autores/joomla/col_dissabte.png", "initials", "44722"], ["1181", "Rafael Aguirre", "autores/joomla/col_aguirre_rafa.png", "initials", "44723"], ["1182", "Carolina Narváez", "autores/joomla/col_narvaez.png", "initials", "44724"], ["1187", "Paloma García", "autores/joomla/col_paloma.png", "initials", "44725"], ["1188", "Adriana Masotti", "autores/joomla/col_masotti.png", "initials", "44726"], ["1189", "Ana Torres Menárguez", "autores/joomla/col_anatorres.png", "initials", "44727"], ["1190", "Pedro Castelao", "autores/joomla/col_castelao.png", "initials", "44728"], ["1191", "Maciej Klein", "autores/joomla/col_maciej.png", "initials", "44729"], ["1192", "Elsa Fernández-Santos", "autores/joomla/col_elsa.png", "initials", "44730"], ["1193", "Amelia Valcárcel", "autores/joomla/col_amelia.png", "initials", "44731"], ["1195", "Techu Baragaño", "autores/joomla/col_techu.png", "initials", "44732"], ["1196", "Nicola Graziani", "autores/joomla/col_graziani.png", "initials", "44733"], ["1197", "Rodrigo Ponce de León", "autores/joomla/col_ponce.png", "initials", "44734"], ["1198", "Hanzel J. Zúñiga Valerio", "autores/joomla/col_hanzel.png", "initials", "44735"], ["1200", "Irene López Alonso", "autores/joomla/col_ire_lopez.png", "initials", "44736"], ["1201", "Máximo García Ruiz", "autores/joomla/col_maximo.png", "initials", "44737"], ["1202", "Federico Piana", "autores/joomla/col_piana.png", "initials", "44738"], ["1204", "José Luis Jiménez", "autores/joomla/col_jljimenez.png", "initials", "44739"], ["1206", "César Henriquez", "autores/joomla/col_cesar_henriquez.png", "initials", "44740"], ["1207", "Benjamín Zorrilla", "autores/joomla/col_zorrilla.png", "initials", "44741"], ["1208", "Íñigo Domínguez", "autores/joomla/col_i_dominguez.png", "initials", "44742"], ["1209", "Alberto Agrazal", "autores/joomla/col_agrazal.png", "initials", "44743"], ["1210", "Félix Badía", "autores/joomla/col_fbadia.png", "initials", "44744"], ["1211", "Raúl Berzosa", "autores/joomla/col_berzosa.png", "initials", "44745"], ["1213", "Carlos Martínez", "autores/joomla/col_carlos_mtnz.png", "initials", "44746"], ["1214", "Grupo Erasmo", "autores/joomla/col_erasmo.png", "initials", "44747"], ["1216", "Massimiliano Menichetti", "autores/joomla/col_menichetti.png", "initials", "44748"], ["1218", "Alan Watts", "autores/joomla/col_alan.png", "initials", "44749"], ["1219", "Ines Schaberger", "autores/joomla/col_schaberger.png", "initials", "44750"], ["1224", "Dumar Espinosa", "autores/joomla/col_dumar.png", "initials", "44751"], ["1225", "Mª del Rosario Gómez Serrano", "autores/joomla/col_rosario-gomez.png", "initials", "44752"], ["1226", "Berta González De Vega", "autores/joomla/col_berta.png", "initials", "44753"], ["1227", "José Luis Rocha", "autores/joomla/col_rocha.png", "initials", "44754"], ["1229", "Christina Moreira Vázquez", "autores/joomla/col_moreira.png", "initials", "44755"], ["1230", "Joseph Moingt", "autores/joomla/col_moingt.png", "initials", "44756"], ["1231", "Comunidad", "autores/joomla/col_accion_solidaria.png", "initials", "44757"], ["1232", "James Clear", "autores/joomla/col_clear.png", "initials", "44758"], ["1233", "Cristina Galafate", "autores/joomla/col_galafate.png", "initials", "44759"], ["1234", "Isabel Corpas de Posada", "autores/joomla/col_corpas.png", "initials", "44760"], ["1235", "Georgina Zerega", "autores/joomla/col_zerega.png", "initials", "44761"], ["1236", "Mireia Rourera", "autores/joomla/col_rourera.png", "initials", "44762"], ["1238", "Magdalena Tsanis", "autores/joomla/col_tsanis.png", "initials", "44763"], ["1241", "Mercedes Arbaiza", "autores/joomla/col_arbaiza.png", "initials", "44764"], ["1242", "Ilia Delio", "autores/joomla/col_delio.png", "initials", "44765"], ["1243", "J.M. Ferreira Cunquero", "autores/joomla/col_ferreira.png", "initials", "44766"], ["1244", "Miguel Muñoz", "autores/joomla/col_munoz.png", "initials", "44767"], ["1245", "Agustín Ortega", "autores/joomla/col_ortega.png", "initials", "44768"], ["1246", "Maribel Serrano", "autores/joomla/col_maribel.png", "initials", "44769"], ["1248", "Meritxell Rigol", "autores/joomla/col_rigol.png", "initials", "44770"], ["1250", "Ventura Puigdomenech", "autores/joomla/col_ventura.png", "initials", "44771"], ["1254", "Miguel Ángel Herrero", "autores/joomla/col_maherrero.png", "initials", "44772"], ["1255", "Francisco Maya", "autores/joomla/col_maya.png", "initials", "44773"], ["1258", "Julio Ciges", "autores/joomla/col_ciges.png", "initials", "44774"], ["1259", "Gloria Sáenz", "autores/joomla/col_saenz.png", "initials", "44775"], ["1263", "Mª del Carmen Navarro García", "autores/joomla/col_carmen_navarro.png", "initials", "44776"], ["1264", "Ignacio de Magdala", "autores/joomla/col_magdala.png", "initials", "44777"], ["1265", "María José Capellín", "autores/joomla/col_capellin.png", "initials", "44778"], ["1266", "Lorena R. de la Torre", "autores/joomla/col_de-la-torre.png", "initials", "44779"], ["1267", "Carmen Rodas Pérez", "autores/joomla/col_carmen-rodas.png", "initials", "44780"], ["1271", "Juan Sánchez Núñez", "autores/joomla/col_juan-sanchez.png", "initials", "44781"], ["1272", "Víctor Hernández Ramírez", "autores/joomla/col_victor-hernandez.png", "initials", "44782"], ["1275", "Corina Mora", "autores/joomla/col_corina.png", "initials", "44783"], ["1277", "Eduardo Martínez de la Fe", "autores/joomla/col_eduardo-martinez.png", "initials", "44784"], ["1279", "Bernardino Zanella", "autores/joomla/col_zanella.png", "initials", "44785"], ["1280", "Javier Sampedro", "autores/joomla/col_sampedro.png", "initials", "44786"], ["1282", "Robert Mickens", "autores/joomla/col_mickens.png", "initials", "44787"], ["1283", "Santiago Gorgas", "autores/joomla/col_gorgas.png", "initials", "44788"], ["1284", "Jaime Richart", "autores/joomla/col_richart.png", "initials", "44789"], ["1285", "María Victoria Olavarrieta", "autores/joomla/col_olavarrieta.png", "initials", "44790"], ["1290", "Josefina (Pinita) Gurdián", "autores/joomla/col_pinita.png", "initials", "44791"], ["1291", "Juan Bosco Monroy Campero", "autores/joomla/col_bosco.png", "initials", "44792"], ["1292", "Javier Recio Huetos", "autores/joomla/col_recio.png", "initials", "44793"], ["1293", "Fanny Magdelaine", "autores/joomla/col_fanny.png", "initials", "44794"], ["1294", "María José Encina Muñoz", "autores/joomla/col_encina.png", "initials", "44795"], ["1295", "Michael Sean Winters", "autores/joomla/col_sean.png", "initials", "44796"], ["1297", "Manuel Rodríguez Díez", "autores/joomla/col_manuel-rodriguez.png", "initials", "44797"], ["1298", "José María Vera", "autores/joomla/col_vera.png", "initials", "44798"], ["1299", "Agustín Moreno Fernández", "autores/joomla/col_agustin_moreno.png", "initials", "44799"], ["1300", "Montse Santolino", "autores/joomla/col_santolino.png", "initials", "44800"], ["1302", "Sergi Marcè Mestres", "autores/joomla/col_marce.png", "initials", "44801"], ["1303", "Silvia Torralba", "autores/joomla/col_silvia-torralba.png", "initials", "44802"], ["1304", "Isabel C. Ruiz Fortes", "autores/joomla/col_fortes.png", "initials", "44803"], ["1305", "Luis Ángel de las Heras", "autores/joomla/col_delasheras.png", "initials", "44804"], ["1307", "Víctor Manuel Fernández", "autores/joomla/col_victor_manuel.png", "initials", "44805"], ["1308", "Pasqualina Curcio", "autores/joomla/col_curcio.png", "initials", "44806"], ["1309", "Marcel Uwineza", "autores/joomla/col_uwineza.png", "initials", "44807"], ["1314", "Renardo Schlegelmilch", "autores/joomla/col_renardo.png", "initials", "44808"], ["1316", "Bernard Ménard", "autores/joomla/col_menard.png", "initials", "44809"], ["1317", "Araceli Ruiz", "autores/joomla/col_araceli.png", "initials", "44810"], ["1318", "Óscar Fortín", "autores/joomla/col_fortin.png", "initials", "44811"], ["1319", "Eugenio Gómez Segura", "autores/joomla/col_eugenio.png", "initials", "44812"], ["1321", "Loup Besmond de Senneville", "autores/joomla/col_loup.png", "initials", "44813"], ["1322", "John Crothers", "autores/joomla/col_crothers.png", "initials", "44814"], ["1325", "Isabella Piro", "autores/joomla/col_piro.png", "initials", "44815"], ["1328", "Alberto Morlanes", "autores/joomla/col_morlanes.png", "initials", "44816"], ["1329", "Ximena Pascutti", "autores/joomla/col_ximena.png", "initials", "44817"], ["1330", "Alba Urrutia", "autores/joomla/col_alba_urrutia.png", "initials", "44818"], ["1331", "Daniel Almagro", "autores/joomla/col_almagro.png", "initials", "44819"], ["1334", "Massimo Faggioli", "autores/joomla/col_faggioli.png", "initials", "44820"], ["1336", "Amedeo Lomonaco", "autores/joomla/col_lomonaco.png", "initials", "44821"], ["1339", "Luis Andrés Henao", "autores/joomla/col_henao.png", "initials", "44822"], ["1340", "Sebastián Sansón Ferrari", "autores/joomla/col_sanson.png", "initials", "44823"], ["1343", "Jesús Riaza", "autores/joomla/col_riaza.png", "initials", "44824"], ["1344", "José Manuel Coviella C.", "autores/joomla/col_coviella.png", "initials", "44825"], ["1345", "Patricio Lynch", "autores/joomla/col_lynch.png", "initials", "44826"], ["1346", "P. Luis Gerardo Moro", "autores/joomla/col_moro.png", "initials", "44827"], ["1347", "Comunidad de aprendizaje “Evangelio en pijama”", "autores/joomla/col_aprendizaje.png", "initials", "44828"], ["1351", "Victòria Molins", "autores/joomla/col_molins.png", "initials", "44829"], ["1352", "Edgar Pérez Ruiz", "autores/joomla/col_edgar_perez.png", "initials", "44830"], ["1353", "Antonella Palermo", "autores/joomla/col_palermo.png", "initials", "44831"], ["1354", "Christopher Wells", "autores/joomla/col_wells.png", "initials", "44832"], ["1355", "Josean Manzanos", "autores/joomla/col_manzanos.png", "initials", "44833"], ["1356", "David E. DeCosse", "autores/joomla/col_decosse.png", "initials", "44834"], ["1357", "Susi Pérez-Bustos Leal", "autores/joomla/col_susi.png", "initials", "44835"], ["1359", "P. Alberto Reyes", "autores/joomla/col_alberto_reyes.png", "initials", "44836"], ["1360", "Charles Taylor", "autores/joomla/col_taylor.png", "initials", "44837"], ["1361", "José María Aguirre Oraa", "autores/joomla/col_jm_aguirre.png", "initials", "44838"], ["1363", "Maarten Boudry", "autores/joomla/col_boudry.png", "initials", "44839"], ["1364", "Teresa Muñoz Guillén", "autores/joomla/col_teresa_munoz.png", "initials", "44840"], ["1366", "Isaac Enrique Pérez", "autores/joomla/col_isaac.png", "initials", "44841"], ["1368", "Marisa Vidal Collazo", "autores/joomla/col_marisa.png", "initials", "44842"], ["1369", "Nazarin Armanian", "autores/joomla/col_nazarin.png", "initials", "44843"], ["1370", "Pierluigi Mele", "autores/joomla/col_pierluigi.png", "initials", "44844"], ["1371", "Adrián J. Taranzano", "autores/joomla/col_taranzano.png", "initials", "44845"], ["1372", "Paqui Puente Durández", "autores/joomla/col_paqui.png", "initials", "44846"], ["1373", "Hna. Michele da Silva", "autores/joomla/col_michele.png", "initials", "44847"], ["1374", "Comunidades de Base de Andalucía", "autores/joomla/col_base-andalucia.png", "initials", "44848"], ["1375", "Charles Mercier", "autores/joomla/col_mercier.png", "initials", "44849"], ["1377", "Alessandro de Carolis", "autores/joomla/col_carolis.png", "initials", "44850"], ["1378", "Michael Morwood", "autores/joomla/col_morwood.png", "initials", "44851"], ["1379", "Luis Fernando González Gaviria", "autores/joomla/col_gaviria.png", "initials", "44852"], ["1380", "María José Amor", "autores/joomla/col_amor.png", "initials", "44853"], ["1382", "Claudia Fanti", "autores/joomla/col_fanti.png", "initials", "44854"], ["1384", "Raphael Rauch", "autores/joomla/col_rauch.png", "initials", "44855"], ["1385", "Kiko Llaneras", "autores/joomla/col_llaneras.png", "initials", "44856"], ["1386", "Miguel Ángel Malavia", "autores/joomla/col_malavia.png", "initials", "44857"], ["1387", "Óscar de Baltodano", "autores/joomla/col_baltodano.png", "initials", "44858"], ["1388", "Roberto Fermín Bertossi", "autores/joomla/col_bertossi.png", "initials", "44859"], ["1391", "Christopher Cordero", "autores/joomla/col_cordero.png", "initials", "44860"], ["1393", "James Martin", "autores/joomla/col_james.png", "initials", "44861"], ["1394", "Cristina Monsegur", "autores/joomla/col_monsegur.png", "initials", "44862"], ["1397", "Natalia Faria", "autores/joomla/col_faria.png", "initials", "44863"], ["1399", "Adela Perez del Viso", "autores/joomla/col_adela.png", "initials", "44864"], ["1401", "Francesco Antonio Grana", "autores/joomla/col_grana.png", "initials", "44865"], ["1404", "Tiziana Campisi", "autores/joomla/col_campisi.png", "initials", "44866"], ["1405", "Elías Pérez Esteban", "autores/joomla/col_elias.png", "initials", "44867"], ["1406", "Enrique de Amo", "autores/joomla/col_de-amo.png", "initials", "44868"], ["1407", "Patricia Ynestroza", "autores/joomla/col_ynestroza.png", "initials", "44869"], ["1410", "Mónica Isabel Quintero", "autores/joomla/col_quintero.png", "initials", "44870"], ["1411", "Luis López-Yarto", "autores/joomla/col_yarto.png", "initials", "44871"], ["1413", "Marco Guerra", "autores/joomla/col_guerra.png", "initials", "44872"], ["1414", "Alessandro Di Bussolo", "autores/joomla/col_bussolo.png", "initials", "44873"], ["1418", "Patricia Noya", "autores/joomla/col_noya.png", "initials", "44874"], ["1419", "María Gómez", "autores/joomla/col_maria_gomez.png", "initials", "44875"], ["1420", "Comunidad de Cristianos de Base de Gijón", "autores/joomla/col_base_gijon.png", "initials", "44876"], ["1422", "Lucía Alegrete", "autores/joomla/col_alegrete.png", "initials", "44877"], ["1426", "Francisco García", "autores/joomla/col_francisco_garcia.png", "initials", "44878"], ["1427", "Yongey Mingyur Rinpoche", "autores/joomla/col_yongey.png", "initials", "44879"], ["1429", "Anselmo Borges", "autores/joomla/col_borges.png", "initials", "44880"], ["1430", "Fernando Chomali", "autores/joomla/col_chomali.png", "initials", "44881"], ["1432", "Antonio Osuna Fernández-Largo", "autores/joomla/col_osuna.png", "initials", "44882"], ["1433", "Guadalupe Romero", "autores/joomla/col_guadalupe.png", "initials", "44883"], ["1435", "Paqui Esteban", "autores/joomla/col_paqui_esteban.png", "initials", "44884"], ["1436", "Manuel Ossa", "autores/joomla/col_ossa.png", "initials", "44885"], ["1437", "Jaime Bustamante Gómez", "autores/joomla/col_jaime_bustamante.png", "initials", "44886"], ["1438", "Ángel Fernández Artime", "autores/joomla/col_angel_fernandez.png", "initials", "44887"], ["1439", "Jesús Rojano", "autores/joomla/col_rojano.png", "initials", "44888"], ["1441", "Gilles Castelnau", "autores/joomla/col_castelnau.png", "initials", "44889"], ["1442", "Elvira Pérez", "autores/joomla/col_elvira.png", "initials", "44890"], ["1443", "Javier Fariñas Martín", "autores/joomla/col_farinas.png", "initials", "44891"], ["1444", "Nazareth Castellanos", "autores/joomla/col_nazareth.png", "initials", "44892"], ["1446", "Enrique Ciro Bianchi", "autores/joomla/col_ciro.png", "initials", "44893"], ["1447", "Eloy Mealla", "autores/joomla/col_mealla.png", "initials", "44894"], ["1449", "Tete Hernández", "autores/joomla/col_tete.png", "initials", "44895"], ["1450", "Volker Türk", "autores/joomla/col_volker.png", "initials", "44896"], ["1454", "Mari Carmen y Fernando Bermúdez", "autores/joomla/col_mcfbermudez.png", "initials", "44897"], ["1455", "Silvio Báez", "autores/joomla/col_baez.png", "initials", "44898"], ["1456", "Pablo Cirujeda", "autores/joomla/col_cirujeda.png", "initials", "44899"], ["1457", "Leandro Gaitán", "autores/joomla/col_gaitan.png", "initials", "44900"], ["1460", "Archicompostela", "autores/joomla/col_archicompostela.jpg", "initials", "44901"], ["1465", "Janet Forbes", "autores/joomla/col_forbes.png", "initials", "44902"], ["1466", "Mateo González Alonso", "autores/joomla/col_mateo-gonzalez.png", "initials", "44903"], ["1468", "José Luis Celada", "autores/joomla/col_celada.png", "initials", "44904"], ["1469", "Joaquín Sánchez", "autores/joomla/col_joaquin-sanchez.png", "initials", "44905"], ["1472", "Rafael Luciani", "autores/joomla/col_luciani.png", "initials", "44906"], ["1476", "Juan Currais Porrúa", "autores/joomla/col_currais.png", "initials", "44907"], ["1477", "Infomadrid / B. Aragoneses", "autores/joomla/col_infomadrid-aragoneses.png", "initials", "44908"], ["1478", "Marie-Lucile Kubacki", "autores/joomla/col_lucile.png", "initials", "44909"], ["1481", "Martín Burgos", "autores/joomla/col_martin-burgos.png", "initials", "44910"], ["1482", "Leopoldina Reis Simões", "autores/joomla/col_reis.png", "initials", "44911"], ["1483", "Joachim Negel", "autores/joomla/col_negel.png", "initials", "44912"], ["1484", "Joyce Meyer", "autores/joomla/col_meyer.png", "initials", "44913"], ["1485", "Francesco Strazzari", "autores/joomla/col_strazzari.png", "initials", "44914"], ["1486", "Douglas Sepulchre", "autores/joomla/col_sepulchre.png", "initials", "44915"], ["1488", "Antonio Zugasti", "autores/joomla/col_zugasti.png", "initials", "44916"], ["1489", "Carlos F. Chamorro", "autores/joomla/col_carlos_chamorro.png", "initials", "44917"], ["1490", "Llucià Pou Sabaté", "autores/joomla/col_pou.png", "initials", "44918"], ["1491", "José María Marín Sevilla", "autores/joomla/col_marin-sevilla.png", "initials", "44919"], ["1492", "Julio Pernús", "autores/joomla/col_pernus.png", "initials", "44920"], ["1493", "Pedro Simón", "autores/joomla/col_pedro-simon.png", "initials", "44921"], ["1498", "Pere Montagut", "autores/joomla/col_montagut.png", "initials", "44922"], ["1499", "Francesca Merlo", "autores/joomla/col_merlo.png", "initials", "44923"], ["1501", "Rose Marie Barandiaran", "autores/joomla/col_barandiaran.png", "initials", "44924"], ["1502", "Blanca Albaida", "autores/joomla/col_albaida.png", "initials", "44925"], ["1504", "Monseñor Oscar Egea", "autores/joomla/col_egea.png", "initials", "44926"], ["1506", "Silvia Cáceres Frisancho", "autores/joomla/col_caceres.png", "initials", "44927"], ["1507", "Roberto Cetera", "autores/joomla/col_cetera.png", "initials", "44928"], ["1508", "Rubén Cruz", "autores/joomla/col_ruben-cruz.png", "initials", "44929"], ["1513", "Viqui Molins", "autores/joomla/col_viqui-molins.png", "initials", "44930"], ["1514", "Francisco Javier Bustillo", "autores/joomla/col_bustillo.png", "initials", "44931"], ["1515", "Santiago Tedeschi", "autores/joomla/col_tedeschi.png", "initials", "44932"], ["1517", "Manolo Navarro", "autores/joomla/col_navarro.png", "initials", "44933"], ["1518", "Vanesa Gourhand", "autores/joomla/col_gourhand.png", "initials", "44934"], ["1519", "Luis Español Bouché", "autores/joomla/col_espanol.png", "initials", "44935"], ["1521", "Gloria Leiva Rivera", "autores/joomla/col_leiva.png", "initials", "44936"], ["1522", "Silvia Rozas Barrero", "autores/joomla/col_rozas.png", "initials", "44937"], ["1523", "Javier Gil Quintana", "autores/joomla/col_gil-quintana.png", "initials", "44938"], ["1524", "Fray Roberto de la Iglesia", "autores/joomla/col_fray-roberto.png", "initials", "44939"], ["1527", "Jaime Flaquer", "autores/joomla/col_flaquer.png", "initials", "44940"], ["1528", "Natalia Velasco", "autores/joomla/col_natalia_velasco.png", "initials", "44941"], ["1530", "Antonio J. Mialdea", "autores/joomla/col_mialdea.png", "initials", "44942"], ["1532", "Gabriela Castellanos Llanos", "autores/joomla/col_gabriela.png", "initials", "44943"], ["1533", "Paloma Pérez Muniáin", "autores/joomla/col_paloma-perez.png", "initials", "44944"], ["1534", "Natalia Chientaroli", "autores/joomla/col_chientaroli.png", "initials", "44945"], ["1535", "Paula Bistagnino", "autores/joomla/col_bistagnino.png", "initials", "44946"], ["1536", "André Luiz Bordignon", "autores/joomla/col_bordignon.png", "initials", "44947"], ["1537", "Ángel Sixto Rossi", "autores/joomla/col_sixto.png", "initials", "44948"], ["1539", "José Bautista", "autores/joomla/col_jose_bautista.png", "initials", "44949"], ["1541", "Robert Ageneau", "autores/joomla/col_ageneau.png", "initials", "44950"], ["1543", "Jonás Fernández", "autores/joomla/col_jonas-fernandez.png", "initials", "44951"], ["1546", "Merche Saiz", "autores/joomla/col_merche.png", "initials", "44952"], ["1550", "Juan Manuel Ribeiro", "autores/joomla/col_ribeiro.png", "initials", "44953"], ["1551", "Roberto Paglialonga", "autores/joomla/col_paglialonga.png", "initials", "44954"], ["1552", "Cesare Baldi", "autores/joomla/col_baldi.png", "initials", "44955"], ["1553", "Miguel Ángel Gullón Pérez", "autores/joomla/col_gullon.png", "initials", "44956"], ["1554", "Susana Acosta", "autores/joomla/col_acosta.png", "initials", "44957"], ["1555", "Faustino Castaño", "autores/joomla/col_faustino-castano.png", "initials", "44958"], ["1558", "Mabel Ruiz Ruiz", "autores/joomla/col_mabel.png", "initials", "44959"], ["1559", "Víctor M. Ruano", "autores/joomla/col_ruano.png", "initials", "44960"], ["466", "Gerardo Villar", "autores/joomla/col_barros-villar.png", "initials", "44683"], ["406", "José Manuel Vidal", "autores/joomla/col_vidal_fer.png", "initials", "44490"], ["474", "Mari Paz López Santos", "autores/joomla/col_bennasar-santos.png", "trim", "44961"], ["569", "Carmen Soto", "autores/joomla/col_Carme_Soto.png", "trim", "44962"], ["979", "Inma Eibe", "autores/joomla/col_cruz_eibe.png", "trim", "44963"], ["801", "Pedro", "autores/joomla/col_pedro-simon.png", "initials", "44921"], ["814", "Reyes", "autores/joomla/col_alberto_reyes.png", "initials", "44836"], ["1142", "Hernán Reyes Alcaide", "autores/joomla/col_hernan_reyes.png", "initials", "44964"], ["470", "Ana Sofía Pérez-Bustamante", "autores/joomla/col_jaime_bustamante.png", "initials", "44886"], ["504", "Emilia Robles", "autores/joomla/col_emi_robles.png", "trim", "44965"], ["1109", "Gregorio Delgado del Río", "autores/joomla/col_delgado-delrio.png", "initials", "44966"], ["555", "Javier Domínguez", "autores/joomla/col_dominguez_pb.png", "initials", "44967"], ["765", "Juan Rubio", "autores/joomla/col_rubio-hanc.png", "initials", "44474"], ["442", "Valerio Gigante", "autores/joomla/col_v_gigante.png", "trim", "44968"], ["544", "Yolanda Plaza Ruíz", "autores/joomla/col_plaza_cris.png", "initials", "44388"], ["578", "Juan Martín Velasco", "autores/joomla/col_natalia_velasco.png", "initials", "44941"], ["585", "Carlos Prieto", "autores/joomla/col_prieto-moreno.png", "initials", "44969"], ["601", "Eusebio Losada", "autores/joomla/col_miguel-s-losada.png", "initials", "44970"], ["664", "A. González", "autores/joomla/col_mateo-gonzalez.png", "initials", "44903"], ["665", "María y José Ignacio López Vigil", "autores/joomla/col_jm_vigil.png", "initials", "44431"], ["682", "Salvador Mendoza", "autores/joomla/col_ant_mendoza.png", "initials", "44718"], ["851", "Jonás", "autores/joomla/col_jonas-fernandez.png", "initials", "44951"], ["1093", "Gonzalo Brito", "autores/joomla/col_brito-gon.png", "initials", "44971"], ["1215", "David López Royo", "autores/joomla/col_lopez_royo.png", "initials", "44972"], ["1494", "Ignacio Álvarez-Ossorio Alvariño", "autores/joomla/col_alvarez-ossorio.png", "initials", "44973"]] \ No newline at end of file diff --git a/mirror-antiguo/deploy/nginx-mirror.conf b/mirror-antiguo/deploy/nginx-mirror.conf index 11d8944..02b5847 100644 --- a/mirror-antiguo/deploy/nginx-mirror.conf +++ b/mirror-antiguo/deploy/nginx-mirror.conf @@ -13,6 +13,21 @@ server { # application/octet-stream y el navegador se los descarga en vez de mostrarlos. default_type text/html; + # URLs históricas de catálogo: el catálogo vigente vive en Ediciones Fe Adulta. + # 302 primero: evita cachear un destino externo de forma irreversible durante el soak. + location ~ ^/(?:es/)?catalogo-de-libros-feadulta(?:/|\.html)?$ { + return 302 https://edicionesfeadulta.com/; + } + + # La vista imprimible Joomla de esta página EFFA no existe en el archivo estático. + # Conserva la página normal del archivo; sólo la variante ?print=1 va al contenido WP vigente. + location = /es/effa/95-secc5cat/3304-seccion5col00.html { + if ($arg_print = 1) { + return 302 https://www.feadulta.com/seccion5col00-2/; + } + try_files $uri $uri.html $uri/index.html =404; + } + location / { try_files $uri $uri.html $uri/index.html =404; } diff --git a/mirror-antiguo/stopped-containers.txt.hecho-20260730T014132Z b/mirror-antiguo/stopped-containers.txt.hecho-20260730T014132Z new file mode 100644 index 0000000..363aa3c --- /dev/null +++ b/mirror-antiguo/stopped-containers.txt.hecho-20260730T014132Z @@ -0,0 +1,10 @@ +portfolio-tracker +yt-api-bridge +wordpress-web +joomla-web-php83 +jellyfin +triptyk-local-wordpress-1 +triptyk-local-db-1 +yt-summaries +joomla-web +wordpress-mysql diff --git a/scripts/cdmon-retire-fewp1.sh b/scripts/cdmon-retire-fewp1.sh new file mode 100755 index 0000000..f0ef809 --- /dev/null +++ b/scripts/cdmon-retire-fewp1.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# Retira exclusivamente el esquema vacío fewp1 de CDMON. +# Por defecto solo hace dry-run. La eliminación real exige --apply y el token exacto. +set -euo pipefail + +mode="dry-run" +if [[ "${1:-}" == "--apply" ]]; then + mode="apply" +fi + +if [[ "$mode" == "apply" && "${CONFIRM_DROP_FEWP1:-}" != "DROP_FEWP1" ]]; then + echo "Refusing apply: export CONFIRM_DROP_FEWP1=DROP_FEWP1 first." >&2 + exit 2 +fi + +set -a +source "$HOME/.hermes/profiles/feadulta/.env" +set +a + +php='global $wpdb; +$count=(int)$wpdb->get_var("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema=\"fewp1\""); +if ($count !== 0) { fwrite(STDERR, "ABORT: fewp1 has ".$count." tables; it is not empty.\n"); exit(3); } +echo "PASS: fewp1 exists and has 0 tables.\n";' + +if [[ "$mode" == "apply" ]]; then + php+=' $ok=$wpdb->query("DROP DATABASE `fewp1`"); +if ($ok === false) { fwrite(STDERR, "ABORT: DROP DATABASE failed.\n"); exit(4); } +$remaining=(int)$wpdb->get_var("SELECT COUNT(*) FROM information_schema.schemata WHERE schema_name=\"fewp1\""); +if ($remaining !== 0) { fwrite(STDERR, "ABORT: fewp1 remains after DROP.\n"); exit(5); } +echo "APPLIED: fewp1 removed; verified absent.\n";' +else + php+=' echo "DRY-RUN: would execute DROP DATABASE `fewp1`; no production change made.\n";' +fi + +printf -v quoted_php '%q' "$php" +sshpass -p "$FEA_PROD_SSH_PASS" ssh -o StrictHostKeyChecking=accept-new "$FEA_PROD_SSH_HOST" \ + "cd /web && wp eval $quoted_php" diff --git a/scripts/fea_translate_helper.php b/scripts/fea_translate_helper.php index dd35ec3..b12b1ed 100644 --- a/scripts/fea_translate_helper.php +++ b/scripts/fea_translate_helper.php @@ -262,6 +262,47 @@ switch ($cmd) { break; } + case 'clone_new': { + // Clona en un ID local NUEVO. Se usa al importar desde prod cuando el + // mismo ID ya está ocupado por contenido local distinto. + $lang = (string) ($argv[2] ?? ''); + $status = (string) ($argv[3] ?? ''); + if ($lang === '') { + fwrite(STDERR, "uso: clone_new \n"); exit(6); + } + $payload = json_decode(file_get_contents('php://stdin'), true); + if (!is_array($payload) || empty($payload['title'])) { + fwrite(STDERR, "payload inválido por stdin\n"); exit(4); + } + $postarr = [ + 'post_title' => wp_slash($payload['title']), + 'post_content' => wp_slash($payload['content'] ?? ''), + 'post_excerpt' => wp_slash($payload['excerpt'] ?? ''), + 'post_status' => $status ?: ($payload['status'] ?? 'draft'), + 'post_type' => $payload['type'] ?? 'post', + 'post_author' => (int) ($payload['author'] ?? 1), + 'post_date' => $payload['date'] ?? current_time('mysql'), + 'post_date_gmt'=> $payload['date_gmt'] ?? current_time('mysql', true), + 'post_name' => $payload['slug'] ?? '', + 'to_ping' => '', + 'pinged' => '', + ]; + $new_id = wp_insert_post($postarr, true); + if (is_wp_error($new_id)) { fwrite(STDERR, $new_id->get_error_message() . "\n"); exit(5); } + pll_set_post_language($new_id, $lang); + $cats = []; + foreach ((array) ($payload['cat_slugs'] ?? []) as $slug) { + $term = get_term_by('slug', (string) $slug, 'category'); + if ($term && !is_wp_error($term)) $cats[] = (int) $term->term_id; + } + if (!$cats) $cats = array_values(array_unique(array_map('intval', (array) ($payload['cats'] ?? [])))); + wp_set_post_categories($new_id, $cats); + set_meta_payload($new_id, normalize_meta_input($payload)); + clean_post_cache($new_id); + echo $new_id; + break; + } + case 'carta_sections': { // Descubre el cluster de una carta parseando sus propios enlaces internos // (misma lógica que pinta la portada, fea-carta-portada.php). No depende diff --git a/scripts/import_human_pagola_translations.py b/scripts/import_human_pagola_translations.py new file mode 100644 index 0000000..0481892 --- /dev/null +++ b/scripts/import_human_pagola_translations.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +"""Importa las traducciones editoriales humanas adjuntas a un issue de carta. + +Por defecto solo valida y muestra el plan. --apply-local crea borradores en el +WordPress Docker local; nunca publica ni toca producción. +""" +from __future__ import annotations + +import argparse +import hashlib +import html +import json +import re +import subprocess +import tempfile +import zipfile +from pathlib import Path +from xml.etree import ElementTree as ET + +ROOT = Path(__file__).resolve().parent +HELPER = ROOT / "fea_translate_helper.php" +CONTAINER = "wordpress-web" +SOURCE_ID = 55465 # Pagola, Carta 738 +LANG_BY_NAME = {"2_eng": "en", "3_fr": "fr", "4_it": "it", "5_pt": "pt"} +TRANSLATOR_LABELS = ("Translator:", "Traducteur:", "Traduzzione:", "Tradutor:") + + +def docx_lines(path: Path) -> list[str]: + ns = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"} + with zipfile.ZipFile(path) as zf: + root = ET.fromstring(zf.read("word/document.xml")) + return [ + "".join(t.text or "" for t in p.findall(".//w:t", ns)).strip() + for p in root.findall(".//w:p", ns) + if "".join(t.text or "" for t in p.findall(".//w:t", ns)).strip() + ] + + +def value_after(lines: list[str], label: str) -> str: + try: + return lines[lines.index(label) + 1] + except (ValueError, IndexError) as exc: + raise ValueError(f"Falta {label!r}") from exc + + +def parse_doc(path: Path) -> dict: + lines = docx_lines(path) + title = value_after(lines, "Título:") + excerpt = value_after(lines, "Entradilla:") + author = value_after(lines, "Autor:") + start = lines.index("Cuerpo:") + 1 + end = next((i for i in range(start, len(lines)) + if any(lines[i].startswith(label) for label in TRANSLATOR_LABELS)), len(lines)) + body = lines[start:end] + if not body: + raise ValueError("Cuerpo vacío") + translator = "" + if end < len(lines): + label = next(label for label in TRANSLATOR_LABELS if lines[end].startswith(label)) + translator = lines[end][len(label):].strip() + if not translator and end + 1 < len(lines): + translator = lines[end + 1] + # La fuente española incluye el crédito/origen como último párrafo. + body.append('Publicado en: https://www.gruposdejesus.com') + content = "\n".join( + f"

{line if line.startswith('Publicado en: " for line in body + ) + return { + "title": title, + "excerpt": excerpt, + "author": author, + "translator": translator, + "content": content, + "source_sha256": hashlib.sha256(path.read_bytes()).hexdigest(), + } + + +def run(cmd: list[str], stdin: str | None = None) -> str: + result = subprocess.run(cmd, input=stdin, text=True, capture_output=True) + if result.returncode: + raise RuntimeError(f"rc={result.returncode}: {result.stderr.strip()} {result.stdout.strip()}") + return result.stdout.strip() + + +def helper(*args: str, stdin: str | None = None) -> str: + return run(["docker", "exec", "-i", CONTAINER, "php", "/tmp/fea_translate_helper.php", *args], stdin) + + +def lang_for(path: Path) -> str: + for marker, lang in LANG_BY_NAME.items(): + if marker in path.name: + return lang + raise ValueError(f"No reconozco idioma en {path.name}") + + +def apply_meta(post_id: int, doc: Path, parsed: dict) -> None: + payload = json.dumps({"id": post_id, "doc": doc.name, "sha": parsed["source_sha256"], + "translator": parsed["translator"]}, ensure_ascii=False) + php = r'''$p=json_decode(base64_decode(getenv('PAYLOAD')),true); update_post_meta($p['id'],'traduccion_automatica','0'); update_post_meta($p['id'],'traduccion_modelo','editorial-humana'); update_post_meta($p['id'],'traduccion_fuente_doc',$p['doc']); update_post_meta($p['id'],'traduccion_fuente_sha256',$p['sha']); update_post_meta($p['id'],'traduccion_editor',$p['translator']); echo 'ok';''' + import base64 + encoded = base64.b64encode(payload.encode()).decode() + run(["docker", "exec", "-i", "-e", f"PAYLOAD={encoded}", CONTAINER, + "wp", "--allow-root", "eval", php]) + + +def main() -> int: + ap = argparse.ArgumentParser() + ap.add_argument("--dir", type=Path, required=True) + ap.add_argument("--apply-local", action="store_true") + args = ap.parse_args() + docs = sorted(args.dir.glob("*.docx")) + if len(docs) != 4: + raise SystemExit(f"Se esperaban 4 DOCX, encontrados {len(docs)}") + run(["docker", "cp", str(HELPER), f"{CONTAINER}:/tmp/fea_translate_helper.php"]) + for doc in docs: + lang, parsed = lang_for(doc), parse_doc(doc) + existing = helper("exists", str(SOURCE_ID), lang) + plan = {"lang": lang, "doc": doc.name, "existing": int(existing or "0"), + "title": parsed["title"], "excerpt_chars": len(parsed["excerpt"]), + "content_chars": len(parsed["content"]), "translator": parsed["translator"]} + print(json.dumps(plan, ensure_ascii=False)) + if not args.apply_local: + continue + if int(existing or "0"): + raise RuntimeError(f"{lang} ya existe como #{existing}; no sobrescribo") + payload = json.dumps({"title": parsed["title"], "excerpt": parsed["excerpt"], + "content": parsed["content"], "model": "editorial-humana"}, ensure_ascii=False) + post_id = int(helper("create", str(SOURCE_ID), lang, "draft", stdin=payload)) + apply_meta(post_id, doc, parsed) + print(json.dumps({"created": post_id, "lang": lang, "status": "draft"})) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/minimax_tts.py b/scripts/minimax_tts.py index 24124d5..08e864e 100644 --- a/scripts/minimax_tts.py +++ b/scripts/minimax_tts.py @@ -361,12 +361,12 @@ def _split_for_tts(text, limit=CHAR_LIMIT): return chunks -def _synth_chunk(text, voice_id, model): +def _synth_chunk(text, voice_id, model, speed=1.0): """Una petición t2a. Devuelve (audio_bytes|None, rc, usage_chars).""" body = { "model": model, "text": text, - "voice_setting": {"voice_id": voice_id, "speed": 1.0, "vol": 1.0, "pitch": 0}, + "voice_setting": {"voice_id": voice_id, "speed": speed, "vol": 1.0, "pitch": 0}, "audio_setting": {"sample_rate": 32000, "bitrate": 128000, "format": "mp3", "channel": 1}, "language_boost": "Spanish", } @@ -381,13 +381,15 @@ def _synth_chunk(text, voice_id, model): return bytes.fromhex(audio_hex), 0, usage -def t2a(text, voice_id, model, name): +def t2a(text, voice_id, model, name, speed=1.0): + if not 0.5 <= float(speed) <= 2.0: + raise ValueError(f"speed fuera de rango: {speed} (permitido 0.5–2.0)") chunks = _split_for_tts(text) - print(f"Sintetizando {len(text)} car con {model} / {voice_id} " + print(f"Sintetizando {len(text)} car con {model} / {voice_id} a {float(speed):.2f}× " f"({len(chunks)} petición/es)…", flush=True) raw = OUT / f"{name}.raw.mp3" if len(chunks) == 1: - audio, rc, _ = _synth_chunk(chunks[0], voice_id, model) + audio, rc, _ = _synth_chunk(chunks[0], voice_id, model, speed) if audio is None: return rc raw.write_bytes(audio) @@ -398,7 +400,7 @@ def t2a(text, voice_id, model, name): import os as _os, time as _t _t.sleep(int(_os.environ.get("FEA_CHUNK_PAUSE", "35"))) # respetar TPM de MiniMax print(f" trozo {k + 1}/{len(chunks)} ({len(ch)} car)…", flush=True) - audio, rc, _ = _synth_chunk(ch, voice_id, model) + audio, rc, _ = _synth_chunk(ch, voice_id, model, speed) if audio is None: for p in parts: p.unlink(missing_ok=True) diff --git a/scripts/phase_a_enrique_preview.py b/scripts/phase_a_enrique_preview.py new file mode 100644 index 0000000..7f8cb3d --- /dev/null +++ b/scripts/phase_a_enrique_preview.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 +"""Fase A local: borrador de Enrique + copia draft de la carta para revisión. + +Por defecto no escribe WordPress. --apply-local sólo modifica el WordPress Docker local. +Nunca publica ni toca producción. +""" +import argparse +import base64 +import hashlib +import html +import json +import os +import re +import subprocess +import sys +import zipfile +from pathlib import Path +from xml.etree import ElementTree as ET + +ROOT = Path(__file__).resolve().parent.parent +DEFAULT_DOC = Path("/home/rafa/.hermes/cache/documents/doc_7909db597c74_7r_Enrique_Mart_nez_Lozano_tesoro_esta_ya_en_nosotros.docx") +CARTA_PROD_ID = 54914 +AUTHOR_ID = 384 # Enrique Martínez Lozano, verificado localmente. +CATEGORIES = [1650, 71] # Artículos + Feadulta +SLUG = "el-tesoro-esta-ya-en-nosotros" + + +def docx_text(path: Path) -> list[str]: + ns = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"} + with zipfile.ZipFile(path) as zf: + root = ET.fromstring(zf.read("word/document.xml")) + out = [] + for p in root.findall(".//w:p", ns): + text = "".join(t.text or "" for t in p.findall(".//w:t", ns)).strip() + if text: + out.append(text) + return out + + +def parse_source(path: Path) -> dict: + lines = docx_text(path) + def after(label: str) -> str: + return lines[lines.index(label) + 1] + title = after("Título:") + author = after("Autor:") + assert title == "EL TESORO ESTÁ YA EN NOSOTROS", title + assert author == "ENRIQUE MARTÍNEZ LOZANO", author + body_start = lines.index("Cuerpo:") + 1 + body = lines[body_start:] + # Última firma del boletín no es contenido del post: el autor va en WP. + if body[-1].startswith("ENRIQUE MARTÍNEZ LOZANO"): + body = body[:-1] + date_line, bible, *paragraphs = body + intro = lines[lines.index("Entradilla:") + 1] + content = "\n".join( + [f"

{html.escape(date_line)}

", + f"

{html.escape(bible)}

"] + + [f"

{html.escape(p)}

" for p in paragraphs] + ) + return {"title": title.lower().capitalize(), "author": author.title(), "intro": intro, + "content": content, "source_sha256": hashlib.sha256(path.read_bytes()).hexdigest()} + + +def prod_card() -> dict: + sys.path.insert(0, str(ROOT / "scripts")) + import sync_translations_to_prod as sync + return json.loads(sync.prod_helper("read_full", str(CARTA_PROD_ID))) + + +def carta_candidate(card: dict, anchor: str) -> str: + marker = '

 

\n

Para unas eucaristías más participativas y actuales

' + assert card["content"].count(marker) == 1, "Marcador de sección no único/no encontrado" + return card["content"].replace(marker, anchor + "\n" + marker, 1) + + +def run_wp(payload: dict, apply: bool) -> dict: + encoded = base64.b64encode(json.dumps(payload, ensure_ascii=False).encode()).decode() + php = r''' +$p=json_decode(base64_decode(getenv('FEA_PAYLOAD')), true); +$apply=getenv('FEA_APPLY') === '1'; +$existing=get_page_by_path($p['slug'], OBJECT, 'post'); +$author=get_user_by('id',(int)$p['author_id']); +$cats=array_map('intval',$p['categories']); +$cat_ok=count(array_filter($cats, fn($id)=>term_exists($id,'category')))===count($cats); +$preview=get_posts(['post_type'=>'post','post_status'=>'any','meta_key'=>'fea_phase_a_source_hash','meta_value'=>$p['source_sha256'],'numberposts'=>1]); +$out=['dry_run'=>!$apply,'existing_slug'=>$existing?['id'=>$existing->ID,'status'=>$existing->post_status]:null, + 'author'=>$author?['id'=>$author->ID,'name'=>$author->display_name]:null,'categories_ok'=>$cat_ok, + 'preview_existing'=>$preview?['id'=>$preview[0]->ID,'status'=>$preview[0]->post_status]:null, + 'candidate_anchor'=>$p['anchor']]; +if (!$author || !$cat_ok) { $out['error']='Autor o categorías no válidos'; echo wp_json_encode($out,JSON_UNESCAPED_UNICODE); exit(3); } +if ($existing || $preview) { $out['error']='Ya existe un borrador/slug para esta Fase A; no se duplica'; echo wp_json_encode($out,JSON_UNESCAPED_UNICODE); exit(4); } +if (!$apply) { echo wp_json_encode($out,JSON_UNESCAPED_UNICODE); exit; } +$article_id=wp_insert_post(['post_type'=>'post','post_status'=>'draft','post_author'=>(int)$p['author_id'], + 'post_title'=>$p['article_title'],'post_name'=>$p['slug'],'post_excerpt'=>$p['intro'], + 'post_content'=>$p['article_content'],'post_category'=>$cats],true); +if (is_wp_error($article_id)) { $out['error']=$article_id->get_error_message(); echo wp_json_encode($out,JSON_UNESCAPED_UNICODE); exit(5); } +if (function_exists('pll_set_post_language')) pll_set_post_language($article_id,'es'); +update_post_meta($article_id,'fea_phase_a_source_hash',$p['source_sha256']); +update_post_meta($article_id,'fea_phase_a_source_doc','7r_Enrique Martínez Lozano_tesoro_esta_ya_en_nosotros.docx'); +update_post_meta($article_id,'fea_phase_a_status','preview-only'); +$preview_id=wp_insert_post(['post_type'=>'post','post_status'=>'draft','post_author'=>(int)$p['card_author_id'], + 'post_title'=>'PREVIEW — Hacia el corazón (+ Enrique Martínez Lozano)','post_excerpt'=>'Copia local de validación; no publicar.', + 'post_content'=>$p['candidate_card_content']],true); +if (is_wp_error($preview_id)) { wp_delete_post($article_id,true); $out['error']=$preview_id->get_error_message(); echo wp_json_encode($out,JSON_UNESCAPED_UNICODE); exit(6); } +if (function_exists('pll_set_post_language')) pll_set_post_language($preview_id,'es'); +update_post_meta($preview_id,'fea_phase_a_source_hash',$p['source_sha256']); +update_post_meta($preview_id,'fea_phase_a_source_prod_id',(int)$p['carta_prod_id']); +update_post_meta($preview_id,'fea_phase_a_preview_article_id',$article_id); +update_post_meta($preview_id,'fea_phase_a_status','preview-only'); +$out['article']=['id'=>$article_id,'status'=>'draft','slug'=>get_post_field('post_name',$article_id),'author'=>get_the_author_meta('display_name',(int)$p['author_id'])]; +$out['preview_card']=['id'=>$preview_id,'status'=>'draft','source_prod_id'=>(int)$p['carta_prod_id']]; +echo wp_json_encode($out,JSON_UNESCAPED_UNICODE); +''' + cmd = [ + "docker", "exec", "-i", "-e", f"FEA_PAYLOAD={encoded}", + "-e", f"FEA_APPLY={'1' if apply else '0'}", "wordpress-web", + "wp", "--allow-root", "eval", php, + ] + result = subprocess.run(cmd, text=True, capture_output=True, check=False) + if result.returncode: + raise RuntimeError(f"WP local rc={result.returncode}: {result.stderr}\n{result.stdout}") + return json.loads(result.stdout) + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--doc", type=Path, default=DEFAULT_DOC) + ap.add_argument("--apply-local", action="store_true") + ap.add_argument("--output", type=Path, required=True) + args = ap.parse_args() + source = parse_source(args.doc) + card = prod_card() # lectura server-side únicamente. + article_url = "http://localhost:8080/" + SLUG + "/" + anchor = (f'

Enrique Martínez Lozano: ' + f'{html.escape(source["title"])}. {html.escape(source["intro"])}

') + payload = { + "source_sha256": source["source_sha256"], "article_title": source["title"], + "article_content": source["content"], "intro": source["intro"], "slug": SLUG, + "author_id": AUTHOR_ID, "categories": CATEGORIES, "anchor": anchor, + "candidate_card_content": carta_candidate(card, anchor), "card_author_id": card["author"], + "carta_prod_id": CARTA_PROD_ID, + } + result = run_wp(payload, args.apply_local) + report = {"source": source, "prod_card": {"id": card["id"], "title": card["title"], "status": card["status"]}, + "result": result, "mode": "apply-local" if args.apply_local else "dry-run"} + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + print(json.dumps(report, ensure_ascii=False, indent=2)) + +if __name__ == "__main__": + main() diff --git a/scripts/release_issue181_prod.sh b/scripts/release_issue181_prod.sh new file mode 100755 index 0000000..e56690a --- /dev/null +++ b/scripts/release_issue181_prod.sh @@ -0,0 +1,167 @@ +#!/usr/bin/env bash +# Release Fase 1+2, issue #181: 68 traducciones publicadas + 16 MP3 TTS. +# Por defecto es sólo dry-run. --apply requiere confirmación explícita de Rafa. +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$ROOT" + +MODE="dry-run" +if [[ "${1:-}" == "--apply" ]]; then + MODE="apply" +elif [[ "${1:-}" == "--verify" ]]; then + MODE="verify" +elif [[ "${1:-}" != "" && "${1:-}" != "--dry-run" ]]; then + echo "Uso: $0 [--dry-run|--verify|--apply]" >&2 + exit 2 +fi + +# shellcheck disable=SC1091 +source ~/.hermes/profiles/feadulta/.env +: "${FEA_PROD_WPLOAD:=/web/wp-load.php}" +if [[ "$FEA_PROD_WPLOAD" != "/web/wp-load.php" ]]; then + echo "ABORT: FEA_PROD_WPLOAD debe ser /web/wp-load.php (recibido: $FEA_PROD_WPLOAD)" >&2 + exit 2 +fi + +RELEASE_DIR="logs/release-issue-181" +mkdir -p "$RELEASE_DIR/backups" +STAMP="$(date -u +%Y%m%dT%H%M%SZ)" +ORIGINS=(54875 54902 54903 54883 54884 54885 54886 54866 54867 54868 54869 54870 54871 54872 54873 54880 54914) +AUDIO_IDS=(54875 54902 54903 54883 54884 54885 54886 54866 54867 54868 54869 54870 54871 54872 54873 54880) + +if [[ "$MODE" == "apply" && "${FEA_RELEASE_CONFIRM:-}" != "PUBLISH_ISSUE_181" ]]; then + echo "ABORT: para escribir en producción usa:" >&2 + echo " FEA_RELEASE_CONFIRM=PUBLISH_ISSUE_181 $0 --apply" >&2 + exit 2 +fi + +preflight() { + python3 - "${ORIGINS[@]}" <<'PY' +import json, sys +sys.path.insert(0, 'scripts') +import sync_translations_to_prod as sync +ids = [int(x) for x in sys.argv[1:]] +rows = [] +for pid in ids: + d = json.loads(sync.prod_helper('read_full', str(pid))) + rows.append({'id': pid, 'status': d['status'], 'lang': d['lang'], 'translations': d.get('translations', {})}) +assert len(rows) == 17 +assert all(r['status'] == 'publish' and r['lang'] == 'es' for r in rows), rows +# Los 16 artículos no deben tener traducciones aún; la carta tampoco antes del primer release. +assert all(r['translations'] == {'es': r['id']} for r in rows), rows +print(json.dumps(rows, ensure_ascii=False, indent=2)) +print('preflight=PASS sources=17') +PY +} + +backup_prod_state() { + python3 - "$RELEASE_DIR/backups/prod-before-$STAMP.json" "${ORIGINS[@]}" -- "${AUDIO_IDS[@]}" <<'PY' +import json, sys +out = sys.argv[1] +sep = sys.argv.index('--') +origins = [int(x) for x in sys.argv[2:sep]] +audio_ids = [int(x) for x in sys.argv[sep+1:]] +sys.path.insert(0, 'scripts') +import sync_translations_to_prod as translations +import sync_audio_to_prod as audio +payload = { + 'origins': {str(pid): json.loads(translations.prod_helper('read_full', str(pid))) for pid in origins}, + 'audio_before': { + str(pid): { + 'url': audio.prod_helper('getmeta', str(pid), 'fea_audio_url').strip(), + 'voice': audio.prod_helper('getmeta', str(pid), 'fea_audio_voice').strip(), + 'done': audio.prod_helper('getmeta', str(pid), 'fea_audio_done').strip(), + } for pid in audio_ids + }, +} +with open(out, 'w', encoding='utf-8') as fh: + json.dump(payload, fh, ensure_ascii=False, indent=2) +print(out) +PY +} + +verify_release() { + python3 - "${ORIGINS[@]}" -- "${AUDIO_IDS[@]}" <<'PY' +import json, sys, time +sep = sys.argv.index('--') +origins = [int(x) for x in sys.argv[1:sep]] +audio_ids = [int(x) for x in sys.argv[sep+1:]] +sys.path.insert(0, 'scripts') +import sync_translations_to_prod as translations +import sync_audio_to_prod as audio + +def read_post(pid): + """Lectura server-side resiliente ante una respuesta SSH/PHP vacía transitoria.""" + last = '' + for attempt in range(1, 4): + raw = translations.prod_helper('read_full', str(pid)).strip() + if raw: + try: + return json.loads(raw) + except json.JSONDecodeError as exc: + last = f'JSON inválido intento {attempt}: {exc}; prefijo={raw[:160]!r}' + else: + last = f'respuesta vacía intento {attempt}' + time.sleep(attempt) + raise AssertionError(f'No se pudo leer post #{pid}: {last}') + +for pid in origins: + d = read_post(pid) + group = d.get('translations', {}) + assert set(group) == {'es', 'en', 'fr', 'it', 'pt'}, (pid, group) + for lang, tid in group.items(): + td = read_post(tid) + assert td['lang'] == lang and td['status'] == 'publish', (pid, lang, tid, td['lang'], td['status']) +for pid in audio_ids: + url = audio.prod_helper('getmeta', str(pid), 'fea_audio_url').strip() + done = audio.prod_helper('getmeta', str(pid), 'fea_audio_done').strip() + assert url.endswith(f'/wp-content/uploads/tts/{pid}.mp3') and done == '1', (pid, url, done) +print('verification=PASS groups=17 translations=68 audio=16') +PY +} + +if [[ "$MODE" == "verify" ]]; then + echo "== Verificación server-side posterior (solo lectura) ==" + verify_release | tee "$RELEASE_DIR/verification-$STAMP.txt" + echo "VERIFICACIÓN ISSUE #181 COMPLETADA" + exit 0 +fi + +echo "== Preflight server-side ($MODE): 17 fuentes ES ==" +preflight | tee "$RELEASE_DIR/preflight-$MODE-$STAMP.json" + +if [[ "$MODE" == "dry-run" ]]; then + : > "$RELEASE_DIR/translations-dry-run-$STAMP.log" + for origin in "${ORIGINS[@]}"; do + FEA_SYNC_STATUS=publish \ + FEA_SYNC_LOG="$RELEASE_DIR/translations-dry-run-$STAMP.log" \ + FEA_SYNC_STATE="$RELEASE_DIR/translations-$origin-state.json" \ + python3 scripts/sync_translations_to_prod.py --origin "$origin" --dry-run + done + FEA_AUDIO_SYNC_LOG="$RELEASE_DIR/audio-dry-run-$STAMP.log" \ + FEA_AUDIO_SYNC_STATE="$RELEASE_DIR/audio-state.json" \ + python3 scripts/sync_audio_to_prod.py --ids "$(IFS=,; echo "${AUDIO_IDS[*]}")" --dry-run | tee "$RELEASE_DIR/audio-dry-run-$STAMP.log" + echo "DRY-RUN terminado: 68 traducciones publicables + 16 audios planificados." + exit 0 +fi + +echo "== Backup server-side previo ==" +backup_prod_state | tee "$RELEASE_DIR/backup-path-$STAMP.txt" + +echo "== Subiendo 68 traducciones como publish ==" +for origin in "${ORIGINS[@]}"; do + FEA_SYNC_STATUS=publish \ + FEA_SYNC_LOG="$RELEASE_DIR/translations-apply-$STAMP.log" \ + FEA_SYNC_STATE="$RELEASE_DIR/translations-$origin-state.json" \ + python3 scripts/sync_translations_to_prod.py --origin "$origin" +done + +echo "== Subiendo 16 audios ==" +FEA_AUDIO_SYNC_LOG="$RELEASE_DIR/audio-apply-$STAMP.log" \ +FEA_AUDIO_SYNC_STATE="$RELEASE_DIR/audio-state.json" \ +python3 scripts/sync_audio_to_prod.py --ids "$(IFS=,; echo "${AUDIO_IDS[*]}")" + +echo "== Verificación server-side posterior ==" +verify_release | tee "$RELEASE_DIR/verification-$STAMP.txt" +echo "RELEASE ISSUE #181 COMPLETADO" diff --git a/scripts/sync_audio_to_prod.py b/scripts/sync_audio_to_prod.py index 211856f..b3dc01f 100644 --- a/scripts/sync_audio_to_prod.py +++ b/scripts/sync_audio_to_prod.py @@ -3,9 +3,10 @@ sync_audio_to_prod.py — Sube a PROD los mp3 de TTS ya generados/enlazados en local (fea_audio_done=1) y fija el meta fea_audio_url en prod. -Prod (134.0.10.170) tiene glibc rota: scp/sftp NO funcionan (connection closed). -Workaround: subir el binario por stdin de ssh ("cat > ruta"), igual que el resto -de scripts que tocan ese servidor (ver feadulta-server-glibc-rota.md). +Prod vive en Hetzner (Coolify/Docker) desde el cutover de agosto 2026. Subida +del binario por stdin de ssh ("cat > ruta" dentro del contenedor vía +`docker exec -i`), sin depender de scp/sftp — mismo patrón que +sync_translations_to_prod.py y sync_carta_from_prod.py. Uso: python3 sync_audio_to_prod.py --carta 54254 # sincroniza toda la cola de la carta @@ -19,8 +20,10 @@ Rollback (despublica en prod lo que este script publicó): from __future__ import annotations import argparse +import base64 import json import os +import shlex import subprocess import time from pathlib import Path @@ -31,13 +34,20 @@ DB_NAME = os.environ.get("FEA_DB_NAME", "wordpress_db") DB_USER = os.environ.get("FEA_DB_USER", "wordpress_user") DB_PASS = os.environ.get("FEA_DB_PASS", "wordpress_pass") -PROD_HOST = os.environ.get("FEA_PROD_HOST", "feadulta@134.0.10.170") -PROD_PASS = os.environ.get("FEA_PROD_PASS", "C6c2A!mAl3Wj.BQF") -PROD_WPLOAD = os.environ.get("FEA_PROD_WPLOAD", "/web/wp-load.php") -PROD_HELPER = "/tmp/fea_post_io.php" -PROD_UPLOADS_TTS = "/web/wp-content/uploads/tts" +PROD_HOST = os.environ.get("FEA_PROD_SSH_HOST", "") +PROD_PASS = os.environ.get("FEA_PROD_SSH_PASS", "") +PROD_WPLOAD = os.environ.get("FEA_PROD_WPLOAD", "/var/www/html/wp-load.php") +# Desde el cutover a Hetzner, WordPress vive dentro de Coolify/Docker. Si se +# define, el helper y la subida de mp3 se ejecutan dentro del contenedor. +# Espejo de sync_translations_to_prod.py / sync_carta_from_prod.py. +PROD_DOCKER_CONTAINER = os.environ.get("FEA_PROD_DOCKER_CONTAINER", "") +PROD_UPLOADS_TTS = os.environ.get("FEA_PROD_UPLOADS_TTS", "/var/www/html/wp-content/uploads/tts") HELPER_SRC = Path(__file__).resolve().parent / "fea_post_io.php" +# Se evalúa en memoria con `php -r`: no se copia un helper temporal a prod. +HELPER_EVAL_CODE = "eval(base64_decode(" + repr( + base64.b64encode(HELPER_SRC.read_text(encoding="utf-8").removeprefix(" str: return r.stdout.strip() +def prod_id_for_local(local_id: int) -> int: + """Resolve a remapped local post to its original production ID. + + ``sync_carta_from_prod.py --remap-conflicts`` keeps this mapping in + ``fea_prod_source_id``. Audio files remain named with the local ID, but + remote paths and production post meta must use the source ID. + """ + source_id = local_meta(local_id, "fea_prod_source_id") + return int(source_id) if source_id.isdigit() else local_id + + def carta_article_ids(carta_id: int) -> list[int]: q = ("SELECT post_id FROM wp_postmeta " f"WHERE meta_key='_carta_id' AND meta_value='{carta_id}' ORDER BY post_id;") @@ -85,47 +106,80 @@ def carta_article_ids(carta_id: int) -> list[int]: return [int(x) for x in r.stdout.split() if x.isdigit()] -# ── Prod (glibc rota: nada de scp/sftp, todo por ssh + cat) ──────────────────── +# ── Prod (Hetzner/Docker: todo por ssh, mp3 por stdin de "cat") ──────────────── def _ssh_text(remote_cmd: str, *, stdin: str | None = None, timeout: int = 120) -> str: - cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", - "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] + # El Hetzner nuevo usa auth por clave (ed25519 claude-code@feadulta); sshpass + # solo se antepone si hay contraseña configurada (servidor viejo CDMON). + if PROD_PASS: + cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] + else: + cmd = ["ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] r = subprocess.run(cmd, input=stdin, capture_output=True, text=True, timeout=timeout) if r.returncode != 0: raise RuntimeError(f"ssh falló ({r.returncode}): {remote_cmd[:80]}…\n{r.stderr.strip()[:400]}") return r.stdout +def _remote_wrap(inner_cmd: str) -> str: + """Envuelve un comando para que corra dentro del contenedor Docker de prod + si FEA_PROD_DOCKER_CONTAINER está definido; si no, corre en el host tal cual. + + Importante: el wrapping (incluidas redirecciones como `< ruta`) debe quedar + DENTRO de la shell del contenedor (`sh -c '...'`), porque `docker exec + CONTENEDOR cmd < ruta` resuelve esa redirección en el filesystem del HOST, + no dentro del contenedor. + """ + if PROD_DOCKER_CONTAINER: + return f"docker exec -i {shlex.quote(PROD_DOCKER_CONTAINER)} sh -c {shlex.quote(inner_cmd)}" + return inner_cmd + + def _ssh_upload_bytes(data: bytes, remote_path: str, *, timeout: int = 180) -> None: - cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", - "-o", "ConnectTimeout=20", PROD_HOST, f"cat > {remote_path}"] + remote_cmd = _remote_wrap(f"cat > {remote_path}") + if PROD_PASS: + cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] + else: + cmd = ["ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] sh(cmd, input_bytes=data, timeout=timeout) -_prod_helper_ready = False - - def prod_helper(subcmd: str, *args: str) -> str: - global _prod_helper_ready - if not _prod_helper_ready: - _ssh_upload_bytes(HELPER_SRC.read_bytes(), PROD_HELPER) - _prod_helper_ready = True - inner = f"FEA_WP_LOAD={PROD_WPLOAD} php {PROD_HELPER} {subcmd} " + " ".join(args) - return _ssh_text(inner, timeout=60) + """Ejecuta el helper PHP en memoria; no deja ficheros temporales en prod.""" + argv = " ".join(shlex.quote(x) for x in (subcmd, *args)) + inner = ( + f"FEA_WP_LOAD={shlex.quote(PROD_WPLOAD)} " + f"php -r {shlex.quote(HELPER_EVAL_CODE)} {argv}" + ) + if PROD_DOCKER_CONTAINER: + remote_cmd = ( + f"docker exec -i -e FEA_WP_LOAD={shlex.quote(PROD_WPLOAD)} " + f"{shlex.quote(PROD_DOCKER_CONTAINER)} php -r {shlex.quote(HELPER_EVAL_CODE)} {argv}" + ) + else: + remote_cmd = inner + return _ssh_text(remote_cmd, timeout=60) -def prod_upload_mp3(post_id: int) -> None: - src = LOCAL_TTS_DIR / f"{post_id}.mp3" +def prod_upload_mp3(local_id: int, prod_id: int) -> None: + src = LOCAL_TTS_DIR / f"{local_id}.mp3" data = src.read_bytes() - remote_path = f"{PROD_UPLOADS_TTS}/{post_id}.mp3" + remote_path = f"{PROD_UPLOADS_TTS}/{prod_id}.mp3" _ssh_upload_bytes(data, remote_path) - # Verificación de tamaño (glibc rota => sin fiarse ciegamente del rc=0 de ssh) - remote_size = int(_ssh_text(f"wc -c < {remote_path}").strip()) + # Verificación de tamaño: no fiarse ciegamente del rc=0 de ssh. `wc -c` debe + # correr (y resolver la redirección) DENTRO del contenedor — ver _remote_wrap. + remote_size = int(_ssh_text(_remote_wrap(f"wc -c < {remote_path}")).strip()) if remote_size != len(data): - raise RuntimeError(f"tamaño no coincide tras subir #{post_id}: local={len(data)} remoto={remote_size}") + raise RuntimeError( + f"tamaño no coincide tras subir prod#{prod_id}: local={len(data)} remoto={remote_size}" + ) def prod_remove_mp3(post_id: int) -> None: - _ssh_text(f"rm -f {PROD_UPLOADS_TTS}/{post_id}.mp3") + _ssh_text(_remote_wrap(f"rm -f {PROD_UPLOADS_TTS}/{post_id}.mp3")) # ── Estado ─────────────────────────────────────────────────────────────────── @@ -149,25 +203,27 @@ def sync_one(post_id: int, state: dict, *, dry_run: bool) -> str: return "sin-audio-local" if not (LOCAL_TTS_DIR / f"{post_id}.mp3").exists(): return "mp3-local-ausente" + prod_id = prod_id_for_local(post_id) if dry_run: - return "PLAN: subiría mp3 + setaudio" + return f"PLAN: local#{post_id}.mp3 → prod#{prod_id}.mp3 + setaudio" voice = local_meta(post_id, "fea_audio_voice") or "NicoFeadulta2026" - prod_upload_mp3(post_id) - prod_helper("setaudio", str(post_id), f"/wp-content/uploads/tts/{post_id}.mp3", voice) - if post_id not in state["synced"]: - state["synced"].append(post_id) + prod_upload_mp3(post_id, prod_id) + prod_helper("setaudio", str(prod_id), f"/wp-content/uploads/tts/{prod_id}.mp3", voice) + if prod_id not in state["synced"]: + state["synced"].append(prod_id) save_state(state) - return "ok" + return f"ok prod#{prod_id}" def rollback_one(post_id: int, state: dict) -> str: - prod_helper("unsetaudio", str(post_id)) - prod_remove_mp3(post_id) - if post_id in state["synced"]: - state["synced"].remove(post_id) + prod_id = prod_id_for_local(post_id) + prod_helper("unsetaudio", str(prod_id)) + prod_remove_mp3(prod_id) + if prod_id in state["synced"]: + state["synced"].remove(prod_id) save_state(state) - return "ok" + return f"ok prod#{prod_id}" def main() -> int: @@ -194,7 +250,7 @@ def main() -> int: for pid in ids: try: if args.rollback: - if pid not in state["synced"] and not args.ids: + if prod_id_for_local(pid) not in state["synced"] and not args.ids: res = "no-estaba-sincronizado" skip += 1 else: diff --git a/scripts/sync_carta_from_prod.py b/scripts/sync_carta_from_prod.py index 6b814e7..d1d1760 100644 --- a/scripts/sync_carta_from_prod.py +++ b/scripts/sync_carta_from_prod.py @@ -23,6 +23,8 @@ el mismo fea_translate_helper.php sin tocar su lógica, solo invertido Uso: python3 sync_carta_from_prod.py --carta 54495 --dry-run python3 sync_carta_from_prod.py --carta 54495 + python3 sync_carta_from_prod.py --ids 54875,54902,54903 --dry-run + python3 sync_carta_from_prod.py --ids 54875,54902,54903 Tras esto, el resto del ciclo ya existente no cambia: translate_post.py --carta 54495 --langs en,fr,it,pt --status draft @@ -34,8 +36,10 @@ Tras esto, el resto del ciclo ya existente no cambia: from __future__ import annotations import argparse +import base64 import json import os +import shlex import subprocess import time from pathlib import Path @@ -44,7 +48,11 @@ WP_CONTAINER = os.environ.get("FEA_WP_CONTAINER", "wordpress-web") PROD_HOST = os.environ.get("FEA_PROD_SSH_HOST", "") PROD_PASS = os.environ.get("FEA_PROD_SSH_PASS", "") -PROD_WPLOAD = os.environ.get("FEA_PROD_WPLOAD", "/web/wp-load.php") +PROD_WPLOAD = os.environ.get("FEA_PROD_WPLOAD", "/var/www/html/wp-load.php") +# Desde el cutover a Hetzner, WordPress vive dentro de Coolify/Docker. Si se +# define, el helper se ejecuta en memoria dentro del contenedor; no se escribe +# ningún fichero temporal en prod. +PROD_DOCKER_CONTAINER = os.environ.get("FEA_PROD_DOCKER_CONTAINER", "") PROD_HELPER = "/tmp/fea_translate_helper.php" HELPER_SRC = Path(__file__).resolve().parent / "fea_translate_helper.php" @@ -74,22 +82,35 @@ def sh(cmd: list[str], *, stdin: str | None = None, timeout: int = 120) -> str: # ── Prod (origen, solo lectura) ───────────────────────────────────────────── -_prod_ready = False - - def _ssh(remote_cmd: str, *, stdin: str | None = None, timeout: int = 120) -> str: - cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", - "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] + # El Hetzner nuevo usa auth por clave (ed25519 claude-code@feadulta); sshpass + # solo se antepone si hay contraseña configurada (servidor viejo CDMON). + if PROD_PASS: + cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] + else: + cmd = ["ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] return sh(cmd, stdin=stdin, timeout=timeout) -def prod_helper(subcmd: str, *args: str, stdin: str | None = None) -> str: - global _prod_ready - if not _prod_ready: - _ssh(f"cat > {PROD_HELPER}", stdin=HELPER_SRC.read_text(encoding="utf-8")) - _prod_ready = True - inner = f"FEA_WP_LOAD={PROD_WPLOAD} php {PROD_HELPER} {subcmd} " + " ".join(args) - return _ssh(inner, stdin=stdin, timeout=180) +def prod_helper(subcmd: str, *args: str) -> str: + """Run the helper in prod memory; never upload a temporary file to prod.""" + helper_php = HELPER_SRC.read_text(encoding="utf-8").replace(" dict: @@ -110,6 +131,17 @@ def seed_ids_from_carta(carta_id: int) -> list[int]: return sorted(ids) +def seed_ids_from_csv(raw_ids: str) -> list[int]: + """Parse a deliberate prod→local subset for Mixbot --parte1 (#181).""" + try: + ids = sorted({int(part.strip()) for part in raw_ids.split(",") if part.strip()}) + except ValueError as exc: + raise ValueError("--ids debe ser una lista CSV de IDs numéricos") from exc + if not ids or any(pid <= 0 for pid in ids): + raise ValueError("--ids debe contener al menos un ID positivo") + return ids + + def collect_related_posts(seed_ids: list[int]) -> tuple[dict[int, dict], list[dict[str, int]]]: posts: dict[int, dict] = {} groups: dict[tuple[tuple[str, int], ...], dict[str, int]] = {} @@ -153,7 +185,11 @@ def local_read_safe(post_id: int) -> dict | None: return None -def local_clone(post: dict) -> int: +def local_clone(post: dict, *, preserve_id: bool = True) -> int: + # Conserva el ID remoto como trazabilidad incluso cuando haya que crear un + # ID local nuevo por una colisión entre entornos. + meta = dict(post.get("meta", {})) + meta["fea_prod_source_id"] = [str(post["id"])] payload = { "title": post["title"], "content": post.get("content", ""), @@ -166,10 +202,14 @@ def local_clone(post: dict) -> int: "status": post.get("status"), "cats": post.get("cats", []), "cat_slugs": post.get("cat_slugs", []), - "meta": post.get("meta", {}), + "meta": meta, } - out = local_helper("clone", str(post["id"]), post.get("lang") or "es", STATUS, - stdin=json.dumps(payload)).strip() + if preserve_id: + out = local_helper("clone", str(post["id"]), post.get("lang") or "es", STATUS, + stdin=json.dumps(payload)).strip() + else: + out = local_helper("clone_new", post.get("lang") or "es", STATUS, + stdin=json.dumps(payload)).strip() return int(out) @@ -179,13 +219,9 @@ def local_save_group(group: dict[str, int]) -> dict[str, int]: # ── Main ───────────────────────────────────────────────────────────────────── -def sync_carta(carta_id: int, *, dry_run: bool) -> int: - seed_ids = seed_ids_from_carta(carta_id) - log(f"Cluster descubierto desde fea_parse_carta_sections(prod#{carta_id}): " - f"{len(seed_ids)} post(s) -> {seed_ids}") - if not seed_ids or seed_ids == [carta_id]: - log(" ⚠️ El parser no resolvió ningún artículo enlazado (¿carta sin publicar aún, " - "o secciones sin encabezados reconocibles?). Revisa antes de continuar.") +def sync_posts(seed_ids: list[int], *, dry_run: bool, source_label: str, + remap_conflicts: bool = False) -> int: + log(f"Lote {source_label}: {len(seed_ids)} post(s) -> {seed_ids}") posts, groups = collect_related_posts(seed_ids) @@ -196,51 +232,82 @@ def sync_carta(carta_id: int, *, dry_run: bool) -> int: conflicts.append((pid, existing.get("title", ""), p.get("title", ""))) if conflicts: - log(f" ⚠️ {len(conflicts)} CONFLICTO(S): el ID ya existe en local con OTRO contenido " - f"y va a ser SOBRESCRITO:") + log(f" ⚠️ {len(conflicts)} CONFLICTO(S): el ID ya existe en local con OTRO contenido:") for pid, old_title, new_title in conflicts: - log(f" #{pid}: local actual «{old_title[:50]}» -> prod «{new_title[:50]}»") + log(f" #{pid}: local actual «{old_title[:50]}» | prod «{new_title[:50]}»") + if not dry_run and not remap_conflicts: + raise RuntimeError( + "Importación cancelada: usar --remap-conflicts para crear IDs locales nuevos; " + "nunca se sobrescriben posts locales por un choque de IDs entre entornos." + ) if dry_run: for pid, p in posts.items(): - log(f" PULL prod#{pid} [{p.get('lang','?')}] status={p.get('status')} " + action = "REMAPPING to new local ID" if pid in {c[0] for c in conflicts} else "PULL" + log(f" {action} prod#{pid} [{p.get('lang','?')}] status={p.get('status')} " f"slug={p.get('slug','')} «{p.get('title','')[:50]}»") for group in groups: log(f" GROUP {group}") log("DRY-RUN: nada escrito en local.") return 0 + conflict_ids = {pid for pid, _, _ in conflicts} + id_map: dict[int, int] = {} for pid, p in posts.items(): - new_id = local_clone(p) + new_id = local_clone(p, preserve_id=pid not in conflict_ids) + id_map[pid] = new_id if new_id != pid: - log(f" ⚠️ prod#{pid} se clonó como local#{new_id} — ID NO preservado, revisar a mano.") + log(f" remap prod#{pid} -> local#{new_id} [{p.get('lang','?')}] «{p['title'][:45]}»") else: log(f" clone prod#{pid} -> local#{new_id} [{p.get('lang','?')}] «{p['title'][:45]}»") for group in groups: - if len(group) < 2: + local_group = {lang: id_map.get(pid, pid) for lang, pid in group.items()} + if len(local_group) < 2: continue - saved = local_save_group(group) + saved = local_save_group(local_group) log(f" group enlazado en local {saved}") - log(f"FIN sync prod->local. carta={carta_id} posts={len(posts)} conflictos_previos={len(conflicts)}") + log(f"FIN sync prod->local. fuente={source_label} posts={len(posts)} conflictos_previos={len(conflicts)}") return 0 +def sync_carta(carta_id: int, *, dry_run: bool, remap_conflicts: bool = False) -> int: + seed_ids = seed_ids_from_carta(carta_id) + if not seed_ids or seed_ids == [carta_id]: + log(" ⚠️ El parser no resolvió ningún artículo enlazado (¿carta sin publicar aún, " + "o secciones sin encabezados reconocibles?). Revisa antes de continuar.") + return sync_posts(seed_ids, dry_run=dry_run, source_label=f"carta prod#{carta_id}", + remap_conflicts=remap_conflicts) + + +def sync_ids(raw_ids: str, *, dry_run: bool, remap_conflicts: bool = False) -> int: + return sync_posts(seed_ids_from_csv(raw_ids), dry_run=dry_run, + source_label="IDs explícitos de Mixbot --parte1", + remap_conflicts=remap_conflicts) + + def main() -> int: ap = argparse.ArgumentParser( description="Copia una carta (y su cluster de artículos) de PROD a LOCAL preservando IDs.") - ap.add_argument("--carta", type=int, required=True, help="ID del post ES de la carta en PROD.") + group = ap.add_mutually_exclusive_group(required=True) + group.add_argument("--carta", type=int, help="ID del post ES de la carta en PROD.") + group.add_argument("--ids", help="Lista CSV explícita de posts ES para Mixbot --parte1 (#181).") ap.add_argument("--dry-run", action="store_true", help="Solo muestra el plan; no escribe en local.") + ap.add_argument("--remap-conflicts", action="store_true", + help="Ante IDs ocupados localmente, crea IDs nuevos y guarda fea_prod_source_id; nunca sobrescribe.") args = ap.parse_args() - if not PROD_HOST or not PROD_PASS: + if not PROD_HOST: raise SystemExit( - "Faltan FEA_PROD_SSH_HOST / FEA_PROD_SSH_PASS en el entorno.\n" + "Falta FEA_PROD_SSH_HOST en el entorno (FEA_PROD_SSH_PASS es opcional: " + "el Hetzner nuevo usa auth por clave).\n" "Antes de ejecutar: source ~/.hermes/profiles/feadulta/.env" ) - return sync_carta(args.carta, dry_run=args.dry_run) + if args.carta: + return sync_carta(args.carta, dry_run=args.dry_run, remap_conflicts=args.remap_conflicts) + return sync_ids(args.ids, dry_run=args.dry_run, remap_conflicts=args.remap_conflicts) if __name__ == "__main__": diff --git a/scripts/sync_translations_to_prod.py b/scripts/sync_translations_to_prod.py index 82b948b..48cf742 100644 --- a/scripts/sync_translations_to_prod.py +++ b/scripts/sync_translations_to_prod.py @@ -16,8 +16,10 @@ coincidencia local↔prod cuando prod va por detrás. from __future__ import annotations import argparse +import base64 import json import os +import shlex import subprocess import time from pathlib import Path @@ -29,12 +31,20 @@ DB_NAME = os.environ.get("FEA_DB_NAME", "wordpress_db") DB_USER = os.environ.get("FEA_DB_USER", "wordpress_user") DB_PASS = os.environ.get("FEA_DB_PASS", "wordpress_pass") -PROD_HOST = os.environ.get("FEA_PROD_HOST", "feadulta@134.0.10.170") -PROD_PASS = os.environ.get("FEA_PROD_PASS", "C6c2A!mAl3Wj.BQF") -PROD_WPLOAD = os.environ.get("FEA_PROD_WPLOAD", "/web/wp-load.php") -PROD_HELPER = "/tmp/fea_translate_helper.php" +PROD_HOST = os.environ.get("FEA_PROD_SSH_HOST", "") +PROD_PASS = os.environ.get("FEA_PROD_SSH_PASS", "") +PROD_WPLOAD = os.environ.get("FEA_PROD_WPLOAD", "/var/www/html/wp-load.php") +# Desde el cutover a Hetzner, WordPress vive dentro de Coolify/Docker. Si se +# define, el helper se ejecuta en memoria dentro del contenedor; no se escribe +# ningún fichero temporal en prod. Espejo de sync_carta_from_prod.py. +PROD_DOCKER_CONTAINER = os.environ.get("FEA_PROD_DOCKER_CONTAINER", "") HELPER_SRC = Path(__file__).resolve().parent / "fea_translate_helper.php" +# El helper se ejecuta en memoria con `php -r` en prod. Así no se copia ningún +# fichero a /tmp remoto y stdin queda disponible para el payload JSON. +HELPER_EVAL_CODE = "eval(base64_decode(" + repr( + base64.b64encode(HELPER_SRC.read_text(encoding="utf-8").removeprefix(" dict: def local_translation_pairs() -> list[tuple[int, int]]: - q = ("SELECT post_id, meta_value FROM wp_postmeta " - "WHERE meta_key='traduccion_origen' ORDER BY CAST(meta_value AS UNSIGNED), post_id;") + """Devuelve (traducción_local, origen_ES_en_prod). + + Normalmente ambos entornos compartían IDs. Para importaciones remapeadas, + la carta ES local guarda `fea_prod_source_id`; esa referencia remota tiene + prioridad y evita enlazar una traducción con un post distinto de prod. + """ + q = ( + "SELECT tr.post_id, COALESCE(NULLIF(src.meta_value,''), tr.meta_value) " + "FROM wp_postmeta tr " + "LEFT JOIN wp_postmeta src ON src.post_id=CAST(tr.meta_value AS UNSIGNED) " + "AND src.meta_key='fea_prod_source_id' " + "WHERE tr.meta_key='traduccion_origen' " + "ORDER BY CAST(COALESCE(NULLIF(src.meta_value,''), tr.meta_value) AS UNSIGNED), tr.post_id;" + ) out = sh(["docker", "exec", DB_CONTAINER, "mysql", f"-u{DB_USER}", f"-p{DB_PASS}", DB_NAME, "-N", "-e", q]) pairs = [] @@ -155,21 +177,31 @@ def collect_related_posts(seed_ids: list[int]) -> tuple[dict[int, dict], list[di # ── Prod ───────────────────────────────────────────────────────────────────── -_prod_ready = False - - def _ssh(remote_cmd: str, *, stdin: str | None = None, timeout: int = 120) -> str: - cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", - "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] + # El Hetzner nuevo usa auth por clave (ed25519 claude-code@feadulta); sshpass + # solo se antepone si hay contraseña configurada (servidor viejo CDMON). + if PROD_PASS: + cmd = ["sshpass", "-p", PROD_PASS, "ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] + else: + cmd = ["ssh", "-o", "StrictHostKeyChecking=accept-new", + "-o", "ConnectTimeout=20", PROD_HOST, remote_cmd] return sh(cmd, stdin=stdin, timeout=timeout) def prod_helper(subcmd: str, *args: str, stdin: str | None = None) -> str: - global _prod_ready - if not _prod_ready: - _ssh(f"cat > {PROD_HELPER}", stdin=HELPER_SRC.read_text(encoding="utf-8")) - _prod_ready = True - inner = f"FEA_WP_LOAD={PROD_WPLOAD} php {PROD_HELPER} {subcmd} " + " ".join(args) + """Ejecuta el helper PHP en memoria; no crea ficheros temporales en prod.""" + argv = " ".join(shlex.quote(x) for x in (subcmd, *args)) + if PROD_DOCKER_CONTAINER: + inner = ( + f"docker exec -i -e FEA_WP_LOAD={shlex.quote(PROD_WPLOAD)} " + f"{shlex.quote(PROD_DOCKER_CONTAINER)} php -r {shlex.quote(HELPER_EVAL_CODE)} {argv}" + ) + else: + inner = ( + f"FEA_WP_LOAD={shlex.quote(PROD_WPLOAD)} " + f"php -r {shlex.quote(HELPER_EVAL_CODE)} {argv}" + ) return _ssh(inner, stdin=stdin, timeout=180) @@ -256,7 +288,12 @@ def deploy_fixed_ids(seed_ids: list[int], *, keep_existing: set[int], dry_run: b # ── Main legado ────────────────────────────────────────────────────────────── -def legacy_sync(limit: int, origin: int) -> int: +def legacy_sync(limit: int, origin: int, *, dry_run: bool = False) -> int: + """Sincroniza por origen ES+idioma, sin reutilizar IDs locales en prod. + + Este es el modo seguro si producción ha avanzado y sus IDs ya pueden + colisionar con traducciones creadas en el entorno local. + """ state = load_state() pairs = local_translation_pairs() if origin: @@ -280,6 +317,10 @@ def legacy_sync(limit: int, origin: int) -> int: if key in state["done"]: n_skip += 1 continue + if dry_run: + log(f" PLAN {key}: crearía traducción [{lang}] «{t['title'][:45]}»") + n_ok += 1 + continue try: new_id = prod_create(src_origin, lang, t["title"], t["content"]) state["done"][key] = new_id @@ -292,8 +333,10 @@ def legacy_sync(limit: int, origin: int) -> int: n_err += 1 log(f" {key} ERROR: {exc}") - save_state(state) - log(f"FIN sync legado. nuevos={n_ok} saltados={n_skip} errores={n_err}. Estado: {STATE_FILE}") + if not dry_run: + save_state(state) + mode = "DRY-RUN" if dry_run else "SYNC" + log(f"FIN sync legado {mode}. nuevos/plan={n_ok} saltados={n_skip} errores={n_err}. Estado: {STATE_FILE}") log("Recuerda en prod: ejecutar remap_translation_cats.php si alguna quedó sin categoría traducida.") return 0 @@ -318,7 +361,7 @@ def main() -> int: keep_existing = set(parse_csv_ints(args.keep_existing)) return deploy_fixed_ids(seed_ids, keep_existing=keep_existing, dry_run=args.dry_run) - return legacy_sync(args.limit, args.origin) + return legacy_sync(args.limit, args.origin, dry_run=args.dry_run) if __name__ == "__main__": diff --git a/scripts/translate_post.py b/scripts/translate_post.py index 4fe17b6..622aeae 100644 --- a/scripts/translate_post.py +++ b/scripts/translate_post.py @@ -271,7 +271,8 @@ def save_state(state: dict) -> None: # ── Orquestación ───────────────────────────────────────────────────────────── -def process_post(post_id: int, langs: list[str], status: str, force: bool, state: dict) -> None: +def process_post(post_id: int, langs: list[str], status: str, force: bool, state: dict, + *, dry_run: bool = False) -> None: src = read_post(post_id) if src.get("lang") and src["lang"] != "es": log(f"#{post_id} no es ES (lang={src['lang']}) — saltado") @@ -286,8 +287,14 @@ def process_post(post_id: int, langs: list[str], status: str, force: bool, state state["done"][key] = existing continue if existing and force: + if dry_run: + log(f" {lang}: PLAN regenerar traducción previa #{existing}") + continue php_helper("unlink", str(post_id), lang) log(f" {lang}: --force, eliminada traducción previa #{existing}") + if dry_run: + log(f" {lang}: PLAN traducir con {ENGINE} y crear como {status}") + continue try: t0 = time.time() title = translate_text(src["title"], lang, is_title=True) @@ -312,6 +319,7 @@ def main() -> int: ap.add_argument("--langs", default="en,fr,it,pt", help="Idiomas destino separados por coma.") ap.add_argument("--status", default="draft", choices=["draft", "publish"], help="Estado de la traducción.") ap.add_argument("--force", action="store_true", help="Regenera aunque ya exista la traducción.") + ap.add_argument("--dry-run", action="store_true", help="Muestra el plan sin llamar al LLM ni escribir en WordPress/estado.") args = ap.parse_args() langs = [l.strip() for l in args.langs.split(",") if l.strip() in LANG_NAMES] @@ -329,9 +337,11 @@ def main() -> int: state = load_state() for pid in ids: - process_post(pid, langs, args.status, args.force, state) - save_state(state) - log(f"FIN. {len(state['done'])} traducciones registradas, " + process_post(pid, langs, args.status, args.force, state, dry_run=args.dry_run) + if not args.dry_run: + save_state(state) + mode = "DRY-RUN" if args.dry_run else "FIN" + log(f"{mode}. {len(state['done'])} traducciones registradas, " f"{len(state.get('errors', {}))} errores. Estado: {STATE_FILE}") return 0 diff --git a/scripts/tts_produce.py b/scripts/tts_produce.py index 934b02c..1cee82b 100644 --- a/scripts/tts_produce.py +++ b/scripts/tts_produce.py @@ -29,7 +29,7 @@ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) import minimax_tts as mm # get_post_text, add_pauses, t2a, OUT import translate_post as tp # carta_article_ids -VOICE = "NicoFeadulta2026" +VOICE = os.environ.get("FEA_TTS_VOICE", "NicoFeadulta2026") MODEL = "speech-2.8-hd" CONTAINER = "wordpress-web" PROD = Path(__file__).resolve().parent.parent / "wordpress/wp-content/uploads/tts" @@ -103,6 +103,8 @@ def main(): help="para tras N audios OK en esta ejecución (0 = sin tope)") parser.add_argument("--dry-run", action="store_true", help="imprime la cola y sale, sin sintetizar ni gastar cuota") + parser.add_argument("--allow-default-voice", action="store_true", + help="permite Nico para autores sin voz digitalizada (desactivado por defecto)") args = parser.parse_args() if args.ids: os.environ["FEA_TTS_IDS"] = args.ids @@ -149,7 +151,15 @@ def main(): i += 1 continue - voice = mm.voice_for_author(author, VOICE) + cloned_voice = mm.voice_for_author(author, "") + if cloned_voice: + voice = cloned_voice + elif args.allow_default_voice: + voice = VOICE + else: + log(f"#{pid}: autor sin voz digitalizada (author_id={author}); omitido") + i += 1 + continue rc = mm.t2a(mm.add_pauses(text), voice, MODEL, f"prod-{pid}") if rc == 0: src = mm.OUT / f"prod-{pid}.mp3"