Email service for automated grade report
A Hackjob to expose "read-only elements" of AACPS ParentCONNECTxp. Designed for notification services for active students.
Keep in mind that this API is not official and it may become deprecated by small changes.
If you intend to use this API for a notification service, keep in mind that:
-
ParentCONNECTxp pushes the grades about 30 minutes before 3:00AM(EST) and 6:00PM(EST). So the best times to make a request are 6:00AM(EST) and 6:00PM(EST).
-
AACPS may automatically block your IP address if you consistently make large number of requests. It may take a while to get unblocked, depending on the severity of your offense.
https://parentconnect.aacps.org/ [insert page here]
ex) https://parentconnect.aacps.org/StudentInfoProfile.asp
This API can read from four pages after auth:
-
StudentInfoProfile.asp - ID:
INFO_PRO
lists number of graded assignments from each class
-
StudentInfoGeneral.asp - ID:
INFO_GEN
displays your student information. This page is deviates from the other pages and need to be evoked by the
profile()
method. -
AssignmentsGeneral.asp - ID:
ASSIGN_GEN
lists your graded assignments
-
AssignmentsSchedule.asp - ID:
ASSIGN_SCH
lists your grades for each class
-
GradesGeneral.asp - ID:
GRD_GEN
lists your report cards grades when available
-
GradesSchedule.asp - ID:
GRD_SCH
lists your year schedule
The API directly accesses these pages with GET requests and parses them into Python objects. Each page has their own ID shown above and object structure.
The parconn.py
file demonstrates how each page should be accessed.
You only have to know two methods from the parse.py
module: profile(session)
and assignment_details(session, ID)
. The latter can access 5 pages with the same method through IDs.
Use the dir()
method to explore the attributes.
Every ID input returns an Info
object with course names as attributes. A course name looks like this: A13810
.
Each course contains the following attributes:
course
- course IDassign_count
- number of assignments graded this week
Each course contains the following attributes:
course
- course IDperiod
- class periodassignment
- assignment nametype
- type of assignmentscore
- assignment scoredue
- due dateremark
- notes from the graderteacher
- name of the teacher
Each course contains the following attributes:
course
- course IDtitle
- class namegrade
- class grade (A/B/C/...)score
- class score out of 100teacher
- name of the teacher
Each course contains the following attributes:
course
- course IDtitle
- class namepcc
- potential course creditscredits
- credits earnedgrade
- final grade (A/B/C/...)teacher
- name of the teacher
Each course contains the following attributes:
course
- course IDtitle
- class nameperiod
- class periodteacher
- name of the teacher
If you just want a list without any object label wrappers, you can use the get_info(session, ID)
method. It returns an list of lists, each pertaining to a class.