Lightning is a course sniper for real time monitoring of Rutgers Schedule of Classes. Get lightning fast notifications via email when a course you need opens up.
Built with Python, Requests, APScheduler, Mailgun, and <3.
The project is structured as follows.
soc.py
: Contains functions to interact with and process data from Rutgers SOC.sniper.py
: Contains the cron function that continuously monitors Rutgers SOC for openings and sends notifications.util.py
: Contains utility functions.test_processing.py
: Contains time comparison tests between different lookup methods to determine most efficient handling of API response.fa20/
courses.gzip
: Sample response fromhttps://sis.rutgers.edu/soc/api/courses.gzip?year=2020&term=9&campus=NB
(currently unused)courses.json
: Same content ascourses.gzip
, but formatted nicely :)openSections.gzip
: Sample response fromhttps://sis.rutgers.edu/soc/api/openSections.gzip?year=2020&term=9&campus=NB
sp21/
courses.json
: Sample response fromhttps://sis.rutgers.edu/soc/api/courses.gzip?year=2021&term=1&campus=NB
openSections.gzip
: Sample response fromhttps://sis.rutgers.edu/soc/api/openSections.gzip?year=2021&term=1&campus=NB
The following requirements are necessary in order to set up and use Lightning.
Make sure you have all of the necessary requirements before getting started.
- Clone the respository.
- Using HTTPS:
git clone https://github.com/anitejb/lightning
- Using SSH:
git clone git@github.com:anitejb/lightning.git
- Using HTTPS:
- Enter the working directory.
cd ./lightning
- Create a virtual environment.
python3 -m venv ./venv
- Activate the virtual environment.
- For Windows users:
venv\Scripts\activate
- For Linux/Mac users:
source venv/bin/activate
- For Windows users:
- Install necessary dependencies.
pip3 install -r requirements.txt
- Create a new file called
config.py
and copy the contents ofexample.config.py
into it. - Follow instructions in
config.py
and fill in the specified fields. - Run
python3 sniper.py
to launch Lightning.
Mailgun Free Plan: The free plan on Mailgun is fine for use with Lightning, but it has certain restrictions. Make sure to add any email addresses you plan on sending notifications to as "Authorized Reciepients" via your Mailgun dashboard. In addition, notification emails from Mailgun sandbox domains often end up in Spam folders. Make sure to add a filter in your email client to catch all emails from mailgun@<your_mailgun_domain>
and prevent them from going to your Spam folder (for example, the "Never send it to Spam" option in Gmail), so that you don't miss out when a course opens up!
Rutgers University Emails: Using a Rutgers provided email account (scarletmail) is not recommended because emails typically take a longer time to reach your inbox. Instead, use a personal account to make sure you get notifications as fast as possible.
Performance: Lightning is designed to be running 24/7, which may lead to performance issues if you are using it on a personal computer. To prevent this from happening, consider deploying to a service like Heroku instead of deploying Lightning locally.
Copyright (c) 2020 Anitej Biradar. Released under the MIT License. See LICENSE for details.
Questions? Reach out to lightning@anitejb.dev, and I'll try to get back to you lightning fast!
Lightning is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Rutgers University, or any of its subsidiaries or its affiliates.