LanisAPI#

Attention

This project is still in a early stage so expect bugs.

Warning

Because the Schulportal Hessen changes quickly and is very fragmented, some functions at specific schools or after a while may no longer work.

Note

This project isn’t officially related to the Schulportal Hessen. It’s only a unofficial library, supported by the community.

What is this?#

LanisAPi is an unofficial Python library for the Schulportal Hessen also available on PyPi.

Features#

  • Fetch homework or other tasks.

  • Fetch substitution plan.

  • Fetch calendar events.

  • Fetch conversations.

  • Fetch all schools that have Lanis.

  • Fetch all web applets with their links.

Overview of future features, problems and other things here.

App for the Schulportal#

If you want to have an app for Lanis, check out SPH-vertretungsplan by @alessioC42. It’s still in an early phase!

It would be also really nice if you contribute to this project, like bug reporting, if you know Dart and Flutter it would be nice to see your help or you could learn Dart, it’s not hard.

Example#

from lanisapi import LanisClient, LanisAccount, LanisCookie, School

def main():
    client = LanisClient(LanisAccount("school id", "name.lastname", "password"))
        or: client = LanisClient(LanisAccount(School("school", "city"), "name.lastname", "password"))
        or: client = LanisClient(LanisCookie("school id", "session id"))
    client.authenticate()
    print(client.get_substitution_plan())
    client.close()

if __name__ == "__main__":
    main()

More infos at the First steps.

How can I help?#

  1. You can report problems here.

  2. You can suggest ideas here.

  3. Contributing: You can contribute to this project either by code or improving the wiki. If you’re new to contributing, look here and for this project there is also some help: Programming help / guidelines.

Also if you like this project you can give it a star on Github.

Credits#

  • SPHclient helped me to understand the Schulportal Hessen.

  • sph-planner helped me to understand the Level 2 encryption.