Guest User

Untitled

a guest
Jun 25th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. //Example: node <script.js> "<school>" <username> <password>
  2.  
  3. const { default: magister, getSchools } = require('magister2.js');
  4. const chalk = require('chalk');
  5.  
  6. process.stdout.write('\033c');
  7.  
  8. let school = process.argv[2];
  9. let username = process.argv[3];
  10. let password = process.argv[4];
  11.  
  12. getSchools(school)
  13. .then((schools) => schools[0])
  14. .then(school => magister({school,username,password}))
  15. .then(async m => {
  16. console.log(m.profileInfo.firstName + " " + m.profileInfo.lastName + ":")
  17. let courses = await m.courses();
  18. let course = courses[courses.length-1];
  19. let grades = await course.grades();
  20.  
  21. let classes = {};
  22.  
  23. grades.forEach(grade => {
  24.  
  25. //Remove workattitude grades and averages
  26. if (
  27. grade.type.header === "PR" ||
  28. grade.type.header.startsWith("Eind") ||
  29. isNaN(parseInt(grade.grade))
  30. ) return;
  31.  
  32.  
  33. let className = grade.class.abbreviation;
  34. if (!classes[className])
  35. classes[className] = [];
  36.  
  37. let {grade: value, weight} = grade;
  38.  
  39. classes[className].push({
  40. value: value.replace(',','.'),
  41. weight: weight
  42. });
  43.  
  44. });
  45.  
  46. for (let nameOfClass in classes) {
  47. let grades = classes[nameOfClass];
  48. let total_points = 0;
  49. let count = 0;
  50.  
  51. for (let i=0;i<grades.length;i++){
  52. total_points += grades[i].value * grades[i].weight;
  53. count += grades[i].weight;
  54. }
  55.  
  56. let requiredGrade = [
  57. Math.round(((5.5 * (count + 1) - total_points) / 1) *100)/100,
  58. Math.round(((5.5 * (count + 2) - total_points) / 2) *100)/100,
  59. Math.round(((5.5 * (count + 3) - total_points) / 3) *100)/100
  60. ]
  61.  
  62. for (let i=0;i<requiredGrade.length;i++) {
  63. if (requiredGrade[i] < 1)
  64. requiredGrade[i] = chalk.greenBright(1);
  65.  
  66. if (requiredGrade[i] < 3.5 && !isNaN(requiredGrade[i]))
  67. requiredGrade[i] = chalk.green(requiredGrade[i]);
  68.  
  69. if (requiredGrade[i] < 4.5 && !isNaN(requiredGrade[i]))
  70. requiredGrade[i] = chalk.yellowBright(requiredGrade[i]);
  71.  
  72. if (!isNaN(requiredGrade[i]))
  73. requiredGrade[i] = chalk.red(requiredGrade[i]);
  74. }
  75.  
  76. console.log(`${nameOfClass} 1: ${requiredGrade[0]}, 2: ${requiredGrade[1]}, 3: ${requiredGrade[2]}`);
  77. }
  78.  
  79. })
Add Comment
Please, Sign In to add comment