Independent Project Not affiliated with, sponsored by, or endorsed by the Watch Tower Bible and Tract Society or Jehovah's Witnesses.
jw-agent-toolkit
ES

Package · Library

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).

Features

What it does, in detail.

01

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).

02

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.

03

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.

04

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.

05

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).

06

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.

In practice

Four lines.
Verifiable result.

Workflow típico: registrar congregación, descubrir, descargar.

bash · jw-meeting-media
# 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

Public API

What the module exports.

Resumen de los símbolos principales. La exhaustive reference covers each one with signature, parameters, and examples.

  • MeetingProgramClient · MediaResolver · Downloader
  • MeetingStorage · Thumbnailer · PresenterManager
  • Congregation · load_registry · resolve_congregation
  • CLI: jw meeting {discover, download, list, congregation}
  • REST: /presenter/* · MCP: meeting_*