Chillzone
Will find you a chillzone inside IIT KGP at any time
TOC
Organization of the code
This repository serves as the data scraper. It will scrape data from the ERP
using the given credentials. After that, you must copy the following files into
chill/src/
schedule.json
empty_schedule.json
subjectDetails.json
The submodule "chill" is the frontend that will use these JSON files to generate the static webpage. It is hosted on GitHub.
How does it work?
Request
curl 'https://erp.iitkgp.ernet.in/Acad/timetable_track.jsp?action=second&dept=AE' \
-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Cookie: JSESSIONID=ABCD.worker3;' \
--data 'for_session=2017-2018&for_semester=SPRING&dept=AE'
JSESSIONID
Getting a valid - Login to the ERP
- Go to Academic -> Timetable -> Subject List with Timetable Slots
- Open the browser console. Switch to the Network tab
- Choose any department and wait for the time table to load
- After the time table is loaded, check the Network tab for the
POST timetable_track.js ...
request. Select this request; switch to the Cookies tab and copy theJSESSIONID
cookie value to your.env
file
Updation for a new semester
- Get a valid
JSESSIONID
. Put this in the.env
file (using.env.template
as the base for this file) - Update the
SESSION
andSEMESTER
environment variables - Delete the
all_subjects.json
file - Delete the
first-year.csv
file. You need to populate this file manually usingfirst-year.csv.template
as a reference - Empty the
problems
array insidemain.go
- Run
go build && ./chillzone
. This will build and run themain
function insidemain.go
Note: In case you are unable to scrape the new semester's timetable, then, these steps will help you find the problem:
- Turn on
DEBUG
inside the.env
by setting it to"1"
- Reduce the size of the departments array to 2 so that you are not buried with output in the terminal
Meanings of the various files
Input Files
-
problems.json
JSON file that stores problems reported by users. Sometimes, the ERP might show that course A is scheduled to be held in room B, but later, due to (say) too many students, the course might be moved to a bigger room C. Then, a few nodes can be added to the JSON file without touching other files and the schedule can be regenerated.
-
first-year.csv
The first year timetable is not available by default on ERP, so we need to add it manually using the central timetable PDF. This CSV file will be taken into consideration when the schedule is constructed. Refer to the template for details.
Output Files
-
schedule.json
This is JSON file whose keys are the names of the rooms. Each value is a matrix with 5 rows and 9 columns. Each element in the matrix is the subject code of the class that will be held in that room during that one-hour slot. This string can be empty to show that the room will remain empty.
-
empty_schedule.json
This is a JSON file that stores a matrix with 5 rows and 9 columns. Each element of the matrix is a list of strings containing the list of rooms that are free during that one hour slot.
-
subjectDetails.json
This JSON file is used to show the tooltip with the name of the course and the name of the professors on top of the timetable entry in the chillzone webpage. It is a JSON file where the keys are subject codes and the values are strings with this structure:
<SUBJECT NAME> - <PROFESSOR NAMES>
.
Maintainer
Shivam Kumar Jha
@thealphadollar on GitHub and Metakgp Slack