Final Grade added to JSON

This commit is contained in:
2025-12-21 13:43:40 -06:00
parent e40b8fd0fe
commit ff5bd9574e
2 changed files with 24 additions and 5 deletions

View File

@@ -16,7 +16,7 @@ const logger = pino({
},
});
const SCREENSHOTS_DIR = 'skyward_screenshots';
const OUTPUT_DIR = 'output';
const TARGET_CATEGORIES = ['NW1', 'NW2', 'SE1', 'NW3', 'NW4', 'SE2'];
// Browser pool to reuse browser instances
@@ -71,6 +71,9 @@ app.post('/fetch-grades', async (req, res) => {
try {
const grades = await runSkywardBot(username, password);
writeFileSync(`${OUTPUT_DIR}/grades_${username}_${Date.now()}.json`, JSON.stringify(grades, null, 2));
res.json({
success: true,
@@ -174,8 +177,8 @@ const runSkywardBot = async (username: string, password: string) => {
logger.info('Starting Skyward bot with Firefox on Linux...');
// Create screenshots directory if it doesn't exist
if (!existsSync(SCREENSHOTS_DIR)) {
mkdirSync(SCREENSHOTS_DIR);
if (!existsSync(OUTPUT_DIR)) {
mkdirSync(OUTPUT_DIR);
}
const browser = await getSharedBrowser();
@@ -753,7 +756,20 @@ async function navigateToGrading(page: Page, allClassGrades: any[]) {
logger.info(` ✓ Clicked grade cell`);
await page.waitForTimeout(2000);
const gradePercentageLabel = await page.$('label.labelTag.visualLabel.header');
let overallGrade = '';
if (gradePercentageLabel) {
const percentageText = (await gradePercentageLabel.textContent())?.trim();
overallGrade = percentageText || '';
logger.info(` 📊 Grade Percentage: ${percentageText}`);
} else {
logger.info(` No grade percentage label found`);
}
const categoryContainer = await page.$('span.SegmentedAssignmentsInformationCell:not(.left) label.labelTag.visualLabel');
if (!categoryContainer) {
@@ -896,6 +912,7 @@ async function navigateToGrading(page: Page, allClassGrades: any[]) {
teacher: teacher,
period: period,
category: categoryText,
overallGrade: overallGrade,
grades: grades,
});
@@ -961,7 +978,7 @@ async function navigateToGrading(page: Page, allClassGrades: any[]) {
logger.info(`\n🎉 Finished processing all grade cells!`);
try {
const gradesFilePath = `${SCREENSHOTS_DIR}/all_grades.json`;
const gradesFilePath = `${OUTPUT_DIR}/all_grades.json`;
writeFileSync(gradesFilePath, JSON.stringify(allClassGrades, null, 2));
logger.info(`\n📄 Saved all grades to: ${gradesFilePath}`);
logger.info(` Total classes processed: ${allClassGrades.length}`);