/SPHclient

An API to acess data from SPH hesse (schulportal hessen aka lanis)

Primary LanguageTypeScriptMIT LicenseMIT

currently dead

This project is currently inactive. Currently, my focus is on lanis-mobile. Although the code in this repository may work, it is not of high quality. For a better interface, please check out LanisAPI by kurwjan. Additionally, some features in the app may have been reverse-engineered. Take a look at this file for a comprehensive collection of SPH parsing: https://github.com/alessioC42/lanis-mobile/blob/main/app/lib/client/client.dart. For encryption, refer to this file: https://github.com/alessioC42/lanis-mobile/blob/main/app/lib/client/cryptor.dart, created by kurwjan.

SPHclient

Ein nodejs modul um mit dem Hessischen Schulporal zu interagieren.

Auch interessant:

Android APP: https://github.com/alessioC42/lanis-mobile

Features

  • login / logout
  • Vertretungsplan
  • Kalender

Für weitere features kann ein Issue mit dem tag "feature request" oder eine pull request geöffnet werden.

Da jede Schule über eine andere "Ausstattung" mit Lanis verfügt (siehe hier) kann ich nicht jedes Feature implementieren. Ich kann ausschließlich die Features meiner Schule (5182 - Max-Planck-Schule Rüsselsheim) behandeln.

Beispiel

npm i sphclient
const SPHclient = require("./SPHclient");
const secrets = require("./secrets.json")

const client = new SPHclient(secrets.username, secrets.password, secrets.schoolid);

client.authenticate().then(() => {
    client.getVplanDates().then(dates => {

        const fetchPromises = [];

        dates.forEach(date => {
            console.log("fetching date: " + date);
            const promise = client.getVplan(date);
            fetchPromises.push(promise);
        });

        Promise.all(fetchPromises).then(plans => {
            const fullplan = [].concat(...plans);
            console.log(fullplan);
        })
    });
});

hilfreiche Links

API

SPHclient(username, password, schoolID, loggingLevel = 1)

Die SPHclient-Klasse ist die Schnittstelle zwischen dem Code und der Lanis-API.

  • username: Benutzername
  • password: Passwort
  • schoolID: Schulnummer

SPHclient.authenticate()

Für alle weiteren API-Aufrufe muss eine Authentifizierung erfolgen. Alle weiteren Anfragen können erst nach dem Aufruf von authenticate() durchgeführt werden.

SPHclient.logout()

Beendet die aktuelle Sitzung. Nach dem Ausloggen kann eine erneute Authentifizierung mit authenticate() durchgeführt werden.

SPHclient.getVplan(date)

Gibt den gesamten Vertretungsplan der Schule als Objekt zurück. date muss ein Date()-Objekt sein. Diese Methode gibt ein Promise zurück, das den Vertretungsplan enthält.

SPHclient.getCalendar(start, end)

Gibt den Online-Kalender der Schule als Objekt zurück. start und end sind beide Date()-Objekte, die den Zeitraum bestimmen. Diese Methode gibt ein Promise zurück, das den Kalender enthält.

SPHclient.getVplanDates()

Gibt die aktuell verfügbaren Termine angezeigten Vertretungsplans auf der Website als Date()-Objekt Array zurück. Diese Methode gibt ein Promise zurück, das ein Array enthält.