#!/usr/bin/env node /** * Generador de Libro de Estudio Offline * ====================================== * * Extrae el contenido académico de las páginas HTML descargadas del campus * virtual y genera dos formatos de estudio: * - LIBRO_DE_ESTUDIO.html → Versión navegable con portada, índice y CSS * - LIBRO_DE_ESTUDIO.md → Versión Markdown para leer en cualquier editor * * Modo de uso: * node generar_dashboard.mjs * * Requisitos: * - Haber ejecutado antes download_course.mjs para tener los HTML locales * - Funciona 100% offline, solo usa fs.readFileSync */ import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const DOWNLOADS_DIR = path.join(__dirname, "descargas"); const SECCIONES_DIR = path.join(DOWNLOADS_DIR, "secciones"); // ============================================================ // DATOS DEL CURSO — Estructura de módulos y secciones // ============================================================ const MODULOS = [ { titulo: "Módulo 1 — Planificación", carpeta: "Modulo_1_Planificacion", secciones: [ { carpeta: "Planificacion", titulo: "Planificación" }, { carpeta: "Preparacion_Atletica", titulo: "Preparación Atlética" }, { carpeta: "Explicacion_TP", titulo: "Explicación del Trabajo Práctico a Presentar" }, { carpeta: "Seguimientos_Equipos", titulo: "Seguimientos de Equipos" }, { carpeta: "Analisis_Equipos_1", titulo: "Análisis de Equipos de Voleibol", }, { carpeta: "Analisis_Equipos_2", titulo: "Análisis de Equipos de Voleibol 2", }, { carpeta: "TP_Final_Unidad", titulo: "Trabajo Práctico Final de la Unidad", }, ], }, { titulo: "Módulo 2 — Entrenamiento", carpeta: "Modulo_2_Entrenamiento", secciones: [ { carpeta: "Centrales_y_Oponentes", titulo: "Entrenamiento de los Centrales y Opuestos/as", }, { carpeta: "Puntas_y_Liberos", titulo: "Puntas y Liberos/as" }, { carpeta: "Entrenamiento_Armadoras", titulo: "Entrenamiento de los y las Armadoras", }, { carpeta: "Explicacion_TP", titulo: "Explicación del Trabajo Práctico a Presentar" }, ], }, ]; // ============================================================ // EXTRACCIÓN DE CONTENIDO DESDE HTML // ============================================================ /** * Lee un archivo HTML y extrae los temas de estudio organizados. * * Cada fila