Skip to content

A light weight python library to interact with Beacon Light Academy's Homework App.

License

Notifications You must be signed in to change notification settings

BrownNPC/BLA-Api-Wrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BLA-API-Wrapper.

Description

Table of Contents

Installation

The library is available on PyPI, install using pip.

pip install BlaApi

Or update it.

pip install BlaApi --upgrade

Quick Start

The code below returns a list of 'notification_ids' The date needs to be in the format; 'Abbreviated_Day, DD/MM/YYYY'

from BlaApi import Client
username = 'my username'
password = 'my password'

notification_ids = c.search_by_date("Thu, 13/04/2023")
print(notification_ids)
Output:
['3049357', '3049213', '3038795', '3038038', '3036497', '3036305']

We can use 'notification ids' to make api calls and retrieve useful information.

from BlaApi import Client
c = Client(username, password)
diary_data = c.get_diary_data(notification_ids)
print(diary_data)

The output consists of a list of dictionaries which contain details for the corresponding notification id.

Output:
[{
        "studentId": "8326",
        "id": "3049213",
        "appDiaryId": "64980",
        "title": "Class work - 13th April",
        "details": "**Book: TBS**\n\
**Unit 06: Setting up a company**\n
**Chapter 01: Gathering information**\n\n
Chapter completed; discussed all activities. 'Sharpen your skills' also covered.\n\n",
        "bRead": "1",
        "created": "2023-04-13 10:05:25",
        "diaryType": "cw",
        "dateDue": None,
        "attachment": None,
        "attachment2": None,
        "dateSubmitted": None,
        "subject": "ENGLISH LANGUAGE",
        "currentTimestamp": "2023-04-15 15:25:21",
        "assignmentId": "64980",
        "gr_no": "12266",
        "comments": [],
},
]

The html is converted to markdown.

Check out some examples or read the documentation.

Documentation

This is some boilerplate code you should be familiar with.

from BlaApi import Client
username = 'my username'
password = 'my password'

c = Client(username, password)

Keep in mind that In the api, the 'notificationId' and 'id' variables are used interchangeably.

The 'login()' method allows you to retrieve information such as: auth token and student information such as class, section student_name, gr_number, student_id.

The 'get_diary_list()' method will return a list of all the diaries available in the app's database, which allows you to retrieve information such as: date posted, subject name, assignment id, notification id (id), title, description, diary type (cw/hw), if the diary has been read (bRead) and the student id which the diary corresponds to.

The 'get_diary_data()' method allows you to get the content of the diary itself, by passing a list of notification ids. it has options such as: student id, app diary id (assignment id), attachment id, comments and the rest is the same as get_diary_list()

The there are methods to parse and sort through the diary list, and return notification ids for the entries. The methods inside it also allow you to also pass in a list of notification ids as a second argument using its 'passthru' variable.

The 'get_current_date()' method from 'Diary' returns today's date in a format that the api needs to function. (Abbreviated_Day, DD/MM/YYYY)

The 'search_by_student' method from 'Diary' returns the notification_ids for one of the students registered on your account. By default it sets student_number = 0, meaning it will return diaries for the first student by default.

The other methods from 'Diary' are: 'search_by_date(date)', and 'search_been_read(True/False)'. They are self explanatory.

To-Do

  • Add methods for interacting with more features

    • Comments

    • Description

    • Student info

    • Attachments

  • Make better doccumentation

My motivation to create this

Simply put, I found my school's app to be subpar, so I'm attempting to create a better one.

Feel free to open an issue if you have any questions, and star the repo if you're cool

About

A light weight python library to interact with Beacon Light Academy's Homework App.

Topics

Resources

License

Stars

Watchers

Forks

Languages