Paquete · Librería
jw-meeting-media
Reunión-en-vivo · clean-room
Construido en la Fase 57 como implementación clean-room (estricta política de NO leer src/ del proyecto AGPL-3.0 sircharlo/meeting-media-manager). Parser HTML del WOL diseñado inspeccionando DOM real con DevTools, no copiando código M³. Stack: Python (jw-core PubMediaClient + WOLClient) + Tauri 2.x vanilla JS para presenter. F57.14 añadió drag-drop UI (sidebar + reorder + add file), F57.15 monitor externo automático (Tauri windows API), F57.16 multi-congregación (TOML registry con backwards-compat).
Funcionalidades
Lo que hace, en detalle.
MeetingProgramClient (F57)
HTTP client para wol.jw.org/{lang}/wol/meetings/{resource}/{lp_tag}/{year}/{week_num}. Parser BeautifulSoup sobre HTML del WOL con selectores semánticos (article.bodyTxt, h2, div.docSubContent, a.b, a.jsRef). Extrae secciones (Tesoros, Seamos mejores, Vida cristiana), items con bible_refs (parse_reference) y media_refs (imágenes CDN + videos jwbroadcasting + JWPUB linkeados).
Pipeline media: Resolver → Downloader → Storage
MediaResolver wrappea PubMediaClient para resolver video/audio refs con pub_code+track a URLs directas con sha256. Downloader idempotente: path scheme <cache>/<lang>/<year>/<week>/<filename>, skip si sha256 matches. MeetingStorage sqlite local: save_program(prog) + load_program(language, year, week, kind), mark_downloaded, get_download_info.
Presenter Tauri (F57 + F57.14)
Window declarativa Tauri 2.x en apps/desktop/src-tauri/tauri.conf.json. Frontend vanilla JS (sin Vue/React) sincronizado con PresenterManager Python vía REST (/presenter/sessions/{sid}/{state,play,pause,next,prev,stop,reorder,add,jump}). F57.14 añadió sidebar con cola de items, drag-drop nativo HTML5 para reordering + drop de archivos externos.
Monitor externo automático (F57.15)
Tauri commands en Rust: list_monitors devuelve MonitorInfo[] con name, width, height, x/y, scale, is_primary. move_presenter_to_monitor(name, fullscreen) reposiciona la ventana + set_fullscreen + focus. UI selector con dropdown menu en sidebar; fallback gracioso si solo 1 monitor.
Multi-congregación (F57.16)
Registry ~/.jw-agent-toolkit/meetings/congregations.toml. Comandos jw meeting congregation {add,list,remove}. Flag --congregation/-c en discover/download/list. resolve_congregation rules: name dado → lookup; sin name + 1 entry → auto; sin name + multiple → ValueError. Backwards-compat: sin registry → Congregation('default') con legacy cache root (no migration needed).
MCP tools + CLI (F57.10 + F57.12 + F57.16)
MCP tools: meeting_discover_week, meeting_download_media, meeting_list_programs, meeting_open_presenter, meeting_list_congregations, meeting_add_congregation. CLI: jw meeting {discover, download, list, congregation {add, list, remove}}. REST endpoints /presenter/* expuestos en jw_mcp.rest_api para que la ventana Tauri controle el estado.
En la práctica
Cuatro líneas.
Resultado verificable.
Workflow típico: registrar congregación, descubrir, descargar.
# 1. Registrar congregaciones
jw meeting congregation add norte --language es --notes "Sala del Reino Norte"
jw meeting congregation add sur --language en --notes "Bilingual ward"
# 2. Descubrir el programa de la semana
jw meeting discover --congregation norte --year 2026 --week 23
# 3. Descargar toda la media de esa semana
jw meeting download --congregation norte --year 2026 --week 23
# 4. Abrir presenter Tauri
# (en apps/desktop: yarn tauri dev)
# Drag-drop archivos externos en el sidebar
# Selector 🖥 mueve a monitor proyector + fullscreen API pública
Qué exporta el módulo.
Resumen de los símbolos principales. La referencia exhaustiva cubre cada uno con signature, parámetros y ejemplos.
- MeetingProgramClient · MediaResolver · Downloader
- MeetingStorage · Thumbnailer · PresenterManager
- Congregation · load_registry · resolve_congregation
- CLI: jw meeting {discover, download, list, congregation}
- REST: /presenter/* · MCP: meeting_*
Otros paquetes
Explora el resto del monorepo.
jw-core
El núcleo determinístico
jw-cli
Terminal para mortales
jw-mcp
Puente con tu agente
jw-rag
Recuperación híbrida
jw-agents
Orquestación multipaso + agéntica verificable
jw-finetune
Tu modelo, tus datos
jw-eval
Red de seguridad doctrinal
jw-gen
Generación con difusión, uso personal
jw-brain
Second-brain + Bible Knowledge Graph
jw-interp
Interpretabilidad mecanicista tri-modelo
jw-meeting-scheduler
Solver de asignaciones + importer organized-app
jw-legal
BrainDomain plugin: casos legales TJ vs Estado