UNPKG

@aurmeneta/buscacursos-uc

Version:

Obtener cursos desde buscacursos.uc.cl

63 lines (47 loc) 1.68 kB
const cheerio = require('cheerio/slim') const { fetchConfig, URLS } = require('../utils') /** * Obtiene los prerrequisitos, equivalencia y restricciones de un curso desde el cátalogo * @param sigla Sigla del curso a buscar * @returns {} */ async function obtenerDetallesCurso (sigla, url = URLS.catalogo) { const response = await fetch(url + `?tmpl=component&view=requisitos&sigla=${sigla}`, fetchConfig) const html = await response.text() const $ = cheerio.load(html) const filas = $('tr').toArray() // Prerrequisitos const prerrequisitos = [] const columnasPrerrequisitos = $(filas[0]).find('td').toArray() const prerrequisitosRaw = $(columnasPrerrequisitos.at(-1)).text().split('o') prerrequisitosRaw.forEach(prerrequisto => { const cursosRaw = prerrequisto.split('y') const cursos = [] cursosRaw.forEach(curso => { curso = curso.trim() let correquisito = false if (/\(c\)/.test(curso)) { correquisito = true } curso = curso.replaceAll(/\(c\)/g, '') curso = curso.replaceAll(/[()]/g, '') cursos.push({ sigla: curso, correquisito }) }) prerrequisitos.push(cursos) }) // Relación Prerrequisitos - Restricciones const relacion = $($(filas[1]).find('td')[1]).text().trim() // Restricciones const restricciones = $($(filas[2]).find('td')[1]).text().trim() // Equivalencias const equivalenciasRaw = $($(filas[3]).find('td')[1]).text().trim() const equivalencias = equivalenciasRaw.replaceAll(/[()]/g, '').split(' o ') return { prerrequisitos, restricciones, relacion, equivalencias } } exports.obtenerDetallesCurso = obtenerDetallesCurso