/ examples / gradebook.ts
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  }();