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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 2Python 3

File details

Details for the file BlaApi-2.1.tar.gz.

File metadata

  • Download URL: BlaApi-2.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for BlaApi-2.1.tar.gz
Algorithm Hash digest
SHA256 00909fe6208d3283c8bf469c82018ddba94a8abae37dcf7b98c8073634cf051d
MD5 68090c8e91633d2214fdfc0fd28c6a5e
BLAKE2b-256 20ed6966bae2dc0c896750ecd69ef3442d49d98da2eaf7cb859a0946175c5773

See more details on using hashes here.

File details

Details for the file BlaApi-2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: BlaApi-2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for BlaApi-2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e4062423668ac3f281204db7ae120a1fad2fa32fcad6b432a660c499a1e239fc
MD5 688868cd0083f99b733f2a5a4de92d9a
BLAKE2b-256 1d55867cd2170aae91c9775747ed229febd2c467342208804dbe3ab94c26b62f

See more details on using hashes here.

Supported by

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