Die Informationen von dieser Seite können auch als JSON-Objekte abgerufen werden. Die Seite bietet jedoch keine REST-Schnittstelle.
Für jede Veranstaltung finden Sie eine JSON-Datei. Der Link ist jeweils im Bild zur Veranstaltung zu finden. Für die Veranstaltung “Algorithmen und Datenstrukturen II” beispielsweise finden Sie die Seite unter /lectures/algdatii.html
, das dazugehörige JSON finden Sie unter /api/lectures/algdatii/base.json
.
Veranstaltungsobjekte haben folgende Felder:
short
: Abkürzung der Veranstaltunglong
: Titel der Veranstaltunglast
: Semester in dem die Veranstaltung zuletzt statt fandsemesters
: Abkürzungen aller Semester mit Veranstaltungsidebar
: Array von Sidebar-Objektenmaincontent
: Array von Content-ObjektenDie Objekte aus denen der Sidebar-Content generiert wird, haben folgenden Aufbau:
title
: Überschrift der Sidebar-Boxtext
: Sidebar-Box-Inhalt, wenn Textlistitems
: Sidebar-Box-Inhalt als Array, wenn AufzählungJedes Sidebar-Listitem-Objekt besteht aus einem text
- und einem url
-Feld.
Es gibt 4 verschiedene Felder in einem Content-Objekt:
lecture
: Vorlesungstermine und -inhaltelab
: Praktikumstermine und -inhalteslides
: Vorlesungsfolien und Handoutsexercises
: ÜbungsblätterIst etwas davon nicht vorhanden, z.B. wenn es keine Folien gibt, hat das entsprechende Feld den Wert null
.
Das Lecture-Objekt enthält 3 Felder:
daytime
: Wochentag und Uhrzeitroom
: Hörsaallectures
: Array mit Objekten die die folgenden Felder enthalten: date
: Datum des Vorlesungsterminstopic
: Inhalt des VorlesungsterminsAchtung: Das lectures
-Array befindet sich ab sofort in der Datei lectures.json
.
Das Lab-Objekt enthält 2 Felder mit Arrays:
groups
: Teilgruppen mit je name
: Name der Teilgruppedaytime
: Wochentag und Uhrzeitroom
: Praktikumsraumlabs
: Praktikumstermine mit je dates
: Array mit je einem Termin pro Teilgruppetopic
: Inhalt des PraktikumsterminsAchtung: Das labs
-Array befindet sich ab sofort in der Datei labs.json
.
Das Slides-Array enthält Objekte je Folie mit folgenden Feldern:
name
: Titel des Foliensatzes, des Handouts und des dazugehörigen Changelogsfile
: Dateiname des Foliensatzes ohne DateiendungDas Excercises-Array enthält Objekte je Übungsblatt mit folgenden Feldern:
name
: Titel des Übungsblatt und des dazugehörigen Changelogsfile
: Dateiname des Übungsblatt ohne DateiendungDie Changelogs selbst sind auch wieder JSON-Objekte, die die Git-Commits für die Datei source
seit changesSince
im Array changes
enthalten. Dabei besteht ein change
aus date
, dem Commitdatum, und subject
, der Commitmessage. Dadurch erfahren Sie was sich in letzter Zeit an dem entsprechenden Dokument geändert hat. Nachdem Slides und Handouts aus einem Markdown-Dokument generiert werden, gibt es die Changelogs nur für Folien und für Übungsblätter.
Um die Folien und Aufgabenblätter direkt herunterladen zu können, fehlen noch einige Informationen. Diese finden Sie in der Datei /api/base.json
. Das darin Base-Objekt enthält folgende Felder:
filesPrefix
: Präfix-URLdirs
: Verzeichnisnamen für die verschiedenen Artefakte: slides
handouts
exercises
exams
changelog
slides
exercises
suffixes
: Dateiendungen für die selben ArtefakteSie wollen wissen, was im dritten Praktikumstermin der Veranstaltung “Algorithmen und Datenstrukturen I” statt findet und wann er ist.
Sie holen sich das Objekt /api/lectures/algdati.json als algdati
.
Dort finden Sie unter algdati.maincontent.lab.labs
das Array mit den Praktikumsterminen. Sie holen sich das dritte Objekt aus dem Array. Darin finden Sie unter topic
was gemacht wird. Unter dates
finden Sie ein Array mit den Datumsangaben.
Wenn Sie z.B. in der zweiten Teilgruppe sind, finden Sie als zweites Element das Datum ihres dritten Praktikums.
Sie wollen alle Handouts der Veranstaltung “Algorithmen und Datenstrukturen II” herunterladen.
Dazu benötigen Sie neben dem Objekt /api/lectures/algdatii.json auch noch das Base-Objekt.
Aus dem algdatii
-Objekt holen Sie sich aus dem Array algdatii.maincontent.slides
alle Dateinamen (Feld file
) als filename
.
Mit dem Base-Objekt base
bekommen Sie nun die Informationen um die Download-URLs zusammen zu bauen. Der grundsätzliche Aufbau einer solchen URL ist filesPrefix/lecturename/artefaktDir/file.suffix
.
Dabei gilt also:
filesPrefix
= https://ob.cs.hm.edu/public/
lecturename
= algdatii
artefaktDir
= handouts
file
= 01_Hashverfahren
suffix
= pdf
Einzig die Klausuren finden Sie etwas versteckt in einer Sidebar-Box. Andererseits sind die Dateinamen immer Klausur
gefolgt von SS
für Sommersemester oder WS
für Wintersemester sowie der zweistelligen Jahreszahl des Datums an dem das Semester begonnen hat. Die Klausur in “Software Engineering II (IB)” vom Wintersemester 2015/16 hat also den Dateinamen KlausurWS15
. Zusammen mit den Informationen aus dem Base-Objekt können Sie daraus die folgende URL berechnen.
Das heisst die einfachste Methode alle alten Klausuren automatisch zu finden ist für alle Semester seit dem Wintersemester 2012/13 die URLs zu berechnen und zu versuchen die Datei herunter zu laden.