An open source Infinite Campus client for the command line
git clone https://github.com/KaffeinatedKat/Neptune-IC
cd Neptune-IC
mkdir build && cd build
cmake ..
make
./neptune
Windows (ninja)
git clone https://github.com/KaffeinatedKat/Neptune-IC
cd Neptune-IC
mkdir build && cd build
cmake -G "Ninja" -DBUILD_FOR_WIN=true ..
ninja
neptune.exe
Neptune-IC uses profiles to save login information for users, profiles are stored in profiles.json
Profiles can be created with the command profiles create [profile_name]
Examples are also provided in profilesExample.json
if you would like to manually add them
Logging in with a profile is as simple as login [profile_name]
This has been tested with 2 schools currently and it works identically for both, other schools should also work fine but there is no guarentees
Use the login method microsoft
when creating a profile. It will ask for 3 fields:
- IC URL (the url to your schools infinite campus site)
- SAMLResponse (a really long identification string used by microsoft, run
python3 src/microsoft.py
in the main directory and follow the instructions to login and accuire your SAMLReponse)
A profile with microsoft login:
"exampleUser": {
"login_method":"microsoft",
"campus_url":"https://your-infinitecampus-url",
"login_path":"/path/saml/is/posted/to",
"saml":"your-microsoft-SAMLResponse"
}
Use the login method username
when creating a profile. It will ask for 3 fields:
- IC URL (the url to your schools infinite campus site)
- Username (your account username)
- Password (your account password)
A profile with username login:
"exampleUser": {
"login_method":"username",
"campus_url":"https://your-infinitecampus-url",
"username": "your-username",
"password": "your-password"
}
Neptune-IC parses the JSON responces from the Infinite Campus servers, so what I call JSON Login is supported
If you place JSON files from Infinite Campus in the userJson/
directory of Neptune-IC, the program can parse those instead of logging you in and fetching them from the Infinite Campus servers. These JSON responces can be harvested with inspect element
The first JSON you need is a GET request to https://your-infinitecampus-url/campus/resources/portal/grades
put this in userJson/[profile_name]_grades.json
The second JSON is a GET request to https://your-infinitecampus-url/campus/api/portal/students
, put this in userJson/[profile_name]_students.json
For each class, there will be a GET request with your classes section_id which can all be found in grades.json
. Place each one in userJson/[profile_name]_[section_id].json
After you get all the json files, simply run profiles create [profile_name]
and use json
as the login method, it requires no fields
A profile with JSON Login
"exampleUser":{
"login_method":"json",
}