Calculate Missed Hours for Classes

Automatically calculates the total hours missed for each class based on attendance records.

  1. // ==UserScript==
  2. // @name Calculate Missed Hours for Classes
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Automatically calculates the total hours missed for each class based on attendance records.
  6. // @match https://stars.bilkent.edu.tr/srs/*
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. (function() {
  11. 'use strict';
  12.  
  13. function calculateMissedHours() {
  14. const attendanceDivs = document.querySelectorAll(".attendDiv");
  15. const results = [];
  16.  
  17. attendanceDivs.forEach(attendDiv => {
  18. const className = attendDiv.querySelector("h4")?.innerText.trim() || "Unknown Class";
  19. const attendanceRows = attendDiv.querySelectorAll("table tr");
  20. let totalMissedHours = 0;
  21.  
  22. attendanceRows.forEach((row, index) => {
  23. if (index === 0) return;
  24. const attendanceCell = row.cells[2];
  25. if (attendanceCell) {
  26. const attended = parseInt(attendanceCell.querySelector("b")?.innerText || "0");
  27. const total = parseInt(attendanceCell.innerText.split("/")[1].trim());
  28. const missed = total - attended;
  29. totalMissedHours += missed;
  30. }
  31. });
  32.  
  33. results.push({ className, totalMissedHours });
  34. });
  35.  
  36. if (results.length > 0) {
  37. results.forEach(result => {
  38. console.log(`Class: ${result.className}, Total Hours Missed: ${result.totalMissedHours}`);
  39. alert(`Class: ${result.className}, Total Hours Missed: ${result.totalMissedHours}`);
  40. });
  41. } else {
  42. console.log("No attendance data found.");
  43. alert("No attendance data found.");
  44. }
  45. }
  46.  
  47. // Run the function automatically
  48. calculateMissedHours();
  49. })();