Archived bc UTN now uses SIU Guaraní.
Tool to retrieve information from the SIGA FRBA UTN website.
npm i siga-scraper
Method scrapeCursada : Promise<Course[]>,
Returns:
Course[]
// Response example.
[
{
courseId: string, // Id del curso interno del SIGA
curso: string, // Código del curso, ejemplo: K1021
nombre: string, // Nombre del curso
color: string, // Color del curso
dia: number[], // Representación numérica del día de la semana.
hora: string[], // Hora de la clase.
horaT: string[], // Hora de finalización de la clase.
turno: string, // 'Mañana' | 'Tarde' | 'Noche'
aula: string, // Aula del curso.
sede: string, // Sede en la que se dicta el curso.
},
];
PD: El día y las horas son arrays ya que en el caso de que una asignatura se curse más de un día, se alinean los indices de los 3 arrays.
El día empieza en 1 => Lunes, hasta el 6 => Sabado, se excluye el Domingo.
Method scrapeNotas : Promise<Notas[]>,
Returns:
Notas[]
// Response example.
[
courseId: string, // Id del curso interno del SIGA
name: string, // 'Análisis Matemático I'
notas: [
{
instancia: string, // Instancia de evaluación
calificacion: number, // Nota, 0..10, el 0 representa el ausente.
}
],
];
scrapeHistorialConsolidado() : Promise<RowEntry[]>,
Returns:
RowEntry[]
// Response RowEntry example.
export interface Acta {
sede: string;
libro: string;
folio: string;
nota?: number;
}
export interface RowEntry {
tipo: string; // 'Cursada' | 'Final';
estado: string;
plan: string; // Nombre del plan, ejemplo O95A (civil) o K08 (sistemas).
courseId: string; // Id del curso interno del SIGA
nombre: string; // Nombre del curso
year: number; // Año de la cursada
periodo: string; // Identificador del periodo
fecha: string; // DD/MM/AAAA
acta: Acta | null;
}
/*
{
"tipo": "Final",
"estado": "Aprob",
"plan": "K08",
"courseId": "950701",
"nombre": "Álgebra y Geometría Analítica",
"year": 2018,
"periodo": "K08 Anual",
"fecha": "29/11/2018",
"acta": {
"sede": "FRBA",
"libro": "PR045",
"folio": "180",
"nota": 8
}
}
*/
scrapeActaDeFinales() : Promise<ActaFinal[]>,
Returns:
ActaFinal[]
// Response example.
export interface ActaFinal {
fecha: string;
courseId: string;
nombre: string;
libro: string;
folio: string;
nota: number;
}
/*
{
"fecha": "01/01/2020",
"courseId": "000000",
"nombre": "Asignatura 1",
"libro": "AA001",
"folio": "33",
"nota": "10"
},
*/
import sigaScraper from 'siga-scraper';
async function main() {
await sigaScraper.start();
await sigaScraper.login(SIGA_USER, SIGA_PASS);
const response = await sigaScraper.scrapeCursada();
console.log(response);
/*
[{
courseId: '950703',
curso: 'Z2004',
nombre: 'Análisis Matemático II',
aula: '115',
sede: 'Campus',
color: '#7A94CF',
turno: 'Mañana',
dia: [3],
hora: ['8:30'],
horaT: ['12:30'],
}, ...]
*/
await sigaScraper.stop();
}
main();
import sigaScraper from 'siga-scraper';
async function main() {
await sigaScraper.start();
await sigaScraper.login(SIGA_USER, SIGA_PASS);
const tasksPromises = [
sigaScraper.scrapeNotas(),
sigaScraper.scrapeCursada(),
];
const [responseNotas, responseCursada] = await Promise.all(tasksPromises);
console.log(responseNotas); // => [ {...}, {...} ]
console.log(responseCursada); // => [ {...}, {...} ]
await sigaScraper.stop();
}
main();
Pull request are open and welcome.