dart_untis_mobile 1.1.0 copy "dart_untis_mobile: ^1.1.0" to clipboard
dart_untis_mobile: ^1.1.0 copied to clipboard

A pure dart library implementing the Untis Mobile API (https://www.untis.at/produkte/webuntis/untis-mobile-app).

Pub Package package publisher

dart_untis_mobile #

dart_untis_mobile is a pure Dart library for the untis mobile API, which provides read-only access to the school timetable system used in Germany.

Features #

  • Login to the untis mobile API using provided credentials
  • Retrieve the timetable for a specific date and user/class
  • Fetch information about subjects, teachers, rooms, and students
  • Access homework and get detailed information about homework
  • Retrieve school year information
  • Get school holidays
  • Fetch absences, that may not be excused

Getting Started #

To use this library, add dart_untis_mobile as a dependency in your pubspec.yaml file.

Usage #

Import the library and initialize an instance of the UntisSession class with your credentials:

import 'package:dart_untis_mobile/dart_untis_mobile.dart';

void main() async {
  final session = await UntisSession.init(
    server: 'your_server',
    school: 'your_school',
    username: 'your_username',
    password: 'your_password',
  );

  // Use session methods to access the API and perform actions
}

Examples #

Retrieve Homework directly #

void retrieveHomework(UntisSession session) async {
  final List<UntisHomework> homework = await session.getHomework();

  // Use the homework data
  for (final UntisHomework hw in homework) {
    print('Until: ${hw.endDate}, Task: ${hw.text}');
  }
}

Retrieve Subjects, that are relevant #

void retrieveRelevantSubjects(UntisSession session) async {
  // Gets the timetable from the current date
  final List<UntisSubject> subjects = await session.getCurrentSubjects();

  // Inform about the current subjects
  for (final UntisSubject subject in subjects) {
    print('Subject: ${subject.longName}, short: ${subject.name}');
  }
}

Retrieve Timetable #

void retrieveTimetable(UntisSession session) async {
  // Gets the timetable from the current date
  final UntisTimetable timetable = await
  session.getTimetable(startDate: DateTime.now(), endDate: DateTime.now().add(const Duration(days: 7)));

  // Use the timetable data 
  for (final UntisPeriod period in timetable.periods) {
    print('Subject: ${period.subject?.longName}, Room: ${period.room?.name}, Teacher: ${period.teacher?.lastName}');
  }
}

Get lessons of this month and filter subject #

void retrieveLessonsByMonthAndSubject(UntisSession session) async {
// Gets the timetable of this month
  final UntisTimetable timetable = await
  session.getTimetable(startDate: DateTime.now(), endDate: DateTime.now().add(const Duration(days: 7 * 4)));

// Filter out the subject
  final List<UntisPeriod> mathPeriods = timetable.periods.where((UntisPeriod p) => p.subject!.name == 'Ma').toList();
  final UntisTeacher mathTeacher = mathPeriods.first.teacher!;
  print('You will have math ${mathPeriods.length} times, with ${mathTeacher.fullName}');
}

Group Timetable by time grid(days) #

void categorizeByDay(UntisSession session) async {
  final UntisTimeGrid timeGrid = await session.timeGrid;

  // Use Timetable and TimeGrid to group by day
  final List<List<UntisPeriod?>> days = tt.groupedPeriods(grid);

  // Use this data
  for (final UntisPeriod? period in days[0]) {
    if (period == null) {
      print("Nothing here");
      continue;
    }
    final int hour = period.startDateTime.hour;
    final int minute = period.startDateTime.minute;
    print('Time: $hour:$minute Subject: ${period.subject}');
  }
}

Contributions #

There are features, that are not implemented. So please file an issue if you need something or found a bug.

This library is open for contributions :)

License #

This library is licensed under the MIT License.

2
likes
160
points
52
downloads

Publisher

verified publishercode42maestro.blogspot.com

Weekly Downloads

A pure dart library implementing the Untis Mobile API (https://www.untis.at/produkte/webuntis/untis-mobile-app).

Repository (GitHub)
View/report issues

Topics

#untis #webuntis #api #web

Documentation

API reference

License

MIT (license)

Dependencies

base32, crypto, equatable, http

More

Packages that depend on dart_untis_mobile