Skip to main content

A wrapper for the beacon light api.

Project description

BLA-API-Wrapper.

Description

Reverse engineering of Beacon Light Academy's Homework App.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

BlaApi-2.1.tar.gz (7.5 kB view hashes)

Uploaded Source

Built Distribution

BlaApi-2.1-py2.py3-none-any.whl (6.8 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page