🎓 JSJIIT - JIIT Web Portal Wrapper#
because manually checking attendance is destroying my mental health fr fr (and because i’m running out of “why did I even do that” moments)
what even is this#
a browser-compatible javascript wrapper that lets you programmatically interact with JIIT’s web portal. one must imagine the developer happy.
god knew i’d be too powerful if I could solve captchas everyday so here we are
✨ features (real)#
- 🔐 login without the captcha (thanks to da goat codelif)
- 📊 get attendance details (or don’t, ignorance is bliss)
- 📝 check exam schedules (trauma incoming)
- 📈 fetch grades (fuck grades)
- 👀 view SGPA/CGPA (this healing shit taking forever)
how to use this (if you’re still here)#
first import the WebPortal class inside a <script type="module"> tag:
import { WebPortal } from 'https://cdn.jsdelivr.net/npm/[email protected]/dist/jsjiit.min.esm.js';
if this version causes issues, use the latest version from the cdn (even if i forget to update these docs). use the jsjiit to find the latest version number.
then let’s speedrun this depression:
// create your portal buddy (they won't leave you like she did)
const portal = new WebPortal();
// login (fingers crossed bestie)
await portal.student_login('your_username', 'your_password');
everything below needs login:#
// check grades (don't)
const gradeCardSems = await portal.get_semesters_for_grade_card();
const latestSem = gradeCardSems[0];
const grades = await portal.get_grade_card(latestSem);
// get attendance (prepare for disappointment)
const meta = await portal.get_attendance_meta();
const sem = meta.latest_semester();
const header = meta.latest_header();
const attendance = await portal.get_attendance(header, sem);
// Get attendace for every class of a subject
const subjectIndex = 1;
let subjectid = attendance["studentattendancelist"][subjectIndex]["subjectid"];
let individualsubjectcode = attendance["studentattendancelist"][subjectIndex]["individualsubjectcode"];
const possibleComponentCodes = ["Lsubjectcomponentid", "Psubjectcomponentid", "Tsubjectcomponentid"]
let subjectcomponentids = [];
for (let possibleComponentCode of possibleComponentCodes) {
if (attendance["studentattendancelist"][subjectIndex][possibleComponentCode]) {
subjectcomponentids.push(attendance["studentattendancelist"][subjectIndex][possibleComponentCode]);
}
}
let subjectAttendance = await portal.get_subject_daily_attendance(sem, subjectid, individualsubjectcode, subjectcomponentids);
// Check SGPA & CGPA
const sgpaCgpa = await portal.get_sgpa_cgpa();
// Download marks for a semester
const marksSems = await portal.get_semesters_for_marks();
const previousSem = marksSems[1];
const marks = await portal.download_marks(previousSem);
// Get registered subjects & faculties for a semester
const registerdSems = await portal.get_registered_semesters();
const latestSem = registerdSems[0];
const registeredSubjects = await portal.get_registered_subjects_and_faculties(latestSem);
// Get Exam Schedule & Venue
const examSems = await portal.get_semesters_for_exam_events();
const latestSem = examSems[0];
const examEvents = await portal.get_exam_events(latestSem);
const examSchedule = await portal.get_exam_schedule(examEvents[0]);
// Get Personal info like name, address ...
const personalInfo = await portal.get_personal_info();
we’re all gonna make it#
if this wrapper helped you avoid a mental breakdown, consider starring the repo (parasocial validation appreciated)
disclaimer#
not liable for any emotional damage caused by viewing your attendance. that’s between you and god fr
special thanks#
massive shoutout to codelif for creating pyjiit.
y’all should check out pyjiit, it’s the original goat that made jsjiit possible.
future#
- me: be funny
- repo: be funnier
- both: we’re so back