Final Grade added to JSON
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -34,5 +34,7 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
||||
.DS_Store
|
||||
|
||||
skyward_screenshots/**
|
||||
output/**
|
||||
|
||||
|
||||
skywardstate.json
|
||||
25
index.ts
25
index.ts
@@ -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
|
||||
@@ -72,6 +72,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,
|
||||
totalClasses: grades.length,
|
||||
@@ -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();
|
||||
@@ -754,6 +757,19 @@ async function navigateToGrading(page: Page, allClassGrades: any[]) {
|
||||
|
||||
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}`);
|
||||
|
||||
Reference in New Issue
Block a user