gradebook.ts
1 import * as pronote from "../src"; 2 import { credentials } from "./_credentials"; 3 import { GradeBook } from "~/models/gradebook"; 4 5 void async function main() { 6 const session = pronote.createSessionHandle(); 7 await pronote.loginCredentials(session, { 8 url: credentials.pronoteURL, 9 kind: pronote.AccountKind.STUDENT, 10 username: credentials.username, 11 password: credentials.password, 12 deviceUUID: credentials.deviceUUID 13 }); 14 const tab = session.userResource.tabs.get(pronote.TabLocation.Gradebook); 15 if (!tab) throw new Error("Cannot retrieve periods for the grades tab, you maybe don't have access to it."); 16 const selectedPeriod = tab.defaultPeriod!; 17 18 console.log("Available periods for this tab ->", tab.periods.map((period) => period.name).join(", ")); 19 console.log("We selected the default period,", selectedPeriod.name, "!\n"); 20 21 let gradebook: GradeBook; 22 try { 23 gradebook = await pronote.gradebook(session, selectedPeriod); 24 } 25 catch (error) { 26 console.error("The period is not accesibles"); 27 throw error; 28 } 29 30 console.group("--- Subjects ---"); 31 32 gradebook.subjects.forEach( 33 (subject) => { 34 console.group(subject.subject.name, ":", subject.teachers.join(", ")); 35 console.log("Coef:", subject.coef); 36 console.group("Averages:"); 37 console.log("Student:", subject.averages.student); 38 console.log("Class overall:", subject.averages.classOverall); 39 console.log("Max:", subject.averages.max); 40 console.log("Min:", subject.averages.min); 41 console.groupEnd(); // Averages 42 console.group("Assessment" + (subject.assessments.length > 1 ? "s: " : ": ")); 43 subject.assessments.forEach((a) => console.log(a)); 44 console.groupEnd(); // Assessments 45 console.groupEnd(); // Subject 46 } 47 ); 48 console.groupEnd(); // Subjects 49 console.log(); // Make space between categories 50 51 console.group("--- Overall ---"); 52 console.group("Assessment" + (gradebook.overallAssessments.length > 1 ? "s :" : " :")); 53 gradebook.overallAssessments.forEach((a) => console.log(a.name, ":", a.value)); 54 console.groupEnd(); // Assessments 55 console.groupEnd(); // Overall 56 }();